diff options
Diffstat (limited to 'asm/battle_4.s')
-rw-r--r-- | asm/battle_4.s | 32351 |
1 files changed, 32351 insertions, 0 deletions
diff --git a/asm/battle_4.s b/asm/battle_4.s new file mode 100644 index 000000000..5436d3e55 --- /dev/null +++ b/asm/battle_4.s @@ -0,0 +1,32351 @@ + .include "constants/gba_constants.inc" + .include "constants/species_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start atk00_attackcanceler +atk00_attackcanceler: @ 801BC50 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + ldr r0, _0801BC6C @ =gBattleOutcome + ldrb r0, [r0] + cmp r0, 0 + beq _0801BC74 + ldr r1, _0801BC70 @ =gFightStateTracker + movs r0, 0xC + strb r0, [r1] + b _0801BFF4 + .align 2, 0 +_0801BC6C: .4byte gBattleOutcome +_0801BC70: .4byte gFightStateTracker +_0801BC74: + ldr r2, _0801BCA4 @ =gBattleMons + ldr r0, _0801BCA8 @ =gBankAttacker + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrh r0, [r0, 0x28] + cmp r0, 0 + bne _0801BCB8 + ldr r2, _0801BCAC @ =gHitMarker + ldr r1, [r2] + movs r0, 0x80 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + bne _0801BCB8 + movs r0, 0x80 + lsls r0, 12 + orrs r1, r0 + str r1, [r2] + ldr r1, _0801BCB0 @ =gBattlescriptCurrInstr + ldr r0, _0801BCB4 @ =BattleScript_EndTurn + b _0801BFF2 + .align 2, 0 +_0801BCA4: .4byte gBattleMons +_0801BCA8: .4byte gBankAttacker +_0801BCAC: .4byte gHitMarker +_0801BCB0: .4byte gBattlescriptCurrInstr +_0801BCB4: .4byte BattleScript_EndTurn +_0801BCB8: + bl sub_8017718 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + beq _0801BCC6 + b _0801BFF4 +_0801BCC6: + ldr r0, _0801BD34 @ =gBankTarget + ldrb r1, [r0] + str r2, [sp] + movs r0, 0x2 + movs r2, 0 + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + cmp r0, 0 + beq _0801BCDE + b _0801BFF4 +_0801BCDE: + ldr r4, _0801BD38 @ =gBattleMons + ldr r0, _0801BD3C @ =gCurrMovePos + ldrb r1, [r0] + ldr r3, _0801BD40 @ =gBankAttacker + ldrb r2, [r3] + movs r0, 0x58 + muls r2, r0 + adds r1, r2 + adds r0, r4, 0 + adds r0, 0x24 + adds r1, r0 + ldrb r0, [r1] + ldr r5, _0801BD44 @ =gHitMarker + cmp r0, 0 + bne _0801BD5C + ldr r0, _0801BD48 @ =gCurrentMove + ldrh r0, [r0] + cmp r0, 0xA5 + beq _0801BD5C + ldr r0, [r5] + ldr r1, _0801BD4C @ =0x00800200 + ands r0, r1 + cmp r0, 0 + bne _0801BD5C + adds r0, r4, 0 + adds r0, 0x50 + adds r0, r2, r0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 5 + ands r0, r1 + cmp r0, 0 + bne _0801BD5C + ldr r1, _0801BD50 @ =gBattlescriptCurrInstr + ldr r0, _0801BD54 @ =BattleScript_NoPPForMove + str r0, [r1] + ldr r2, _0801BD58 @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + b _0801BFF4 + .align 2, 0 +_0801BD34: .4byte gBankTarget +_0801BD38: .4byte gBattleMons +_0801BD3C: .4byte gCurrMovePos +_0801BD40: .4byte gBankAttacker +_0801BD44: .4byte gHitMarker +_0801BD48: .4byte gCurrentMove +_0801BD4C: .4byte 0x00800200 +_0801BD50: .4byte gBattlescriptCurrInstr +_0801BD54: .4byte BattleScript_NoPPForMove +_0801BD58: .4byte gBattleMoveFlags +_0801BD5C: + ldr r0, [r5] + ldr r1, _0801BDA0 @ =0xff7fffff + ands r0, r1 + str r0, [r5] + movs r6, 0x80 + lsls r6, 18 + ands r0, r6 + cmp r0, 0 + bne _0801BDB4 + ldrb r1, [r3] + movs r0, 0x58 + muls r0, r1 + adds r1, r4, 0 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 5 + ands r0, r1 + cmp r0, 0 + bne _0801BDB4 + bl sub_801B928 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + beq _0801BDB4 + cmp r2, 0x2 + bne _0801BDA4 + ldr r0, [r5] + orrs r0, r6 + str r0, [r5] + b _0801BFF4 + .align 2, 0 +_0801BDA0: .4byte 0xff7fffff +_0801BDA4: + ldr r0, _0801BDB0 @ =gBattleMoveFlags + ldrb r1, [r0] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0] + b _0801BFF4 + .align 2, 0 +_0801BDB0: .4byte gBattleMoveFlags +_0801BDB4: + ldr r2, _0801BE18 @ =gHitMarker + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 18 + orrs r0, r1 + str r0, [r2] + ldr r2, _0801BE1C @ =gProtectStructs + ldr r1, _0801BE20 @ =gBankTarget + ldrb r3, [r1] + lsls r0, r3, 4 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 27 + mov r8, r1 + mov r9, r2 + cmp r0, 0 + bge _0801BE3C + ldr r2, _0801BE24 @ =gBattleMoves + ldr r0, _0801BE28 @ =gCurrentMove + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x8] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0801BE3C + ldr r0, _0801BE2C @ =gBankAttacker + ldrb r0, [r0] + ldr r2, _0801BE30 @ =0x00000115 + adds r1, r3, 0 + bl sub_80151D4 + mov r0, r8 + ldrb r1, [r0] + lsls r1, 4 + add r1, r9 + ldrb r2, [r1] + movs r0, 0x11 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + bl b_movescr_stack_push_cursor + ldr r1, _0801BE34 @ =gBattlescriptCurrInstr + ldr r0, _0801BE38 @ =BattleScript_MagicCoatBounce + b _0801BFF2 + .align 2, 0 +_0801BE18: .4byte gHitMarker +_0801BE1C: .4byte gProtectStructs +_0801BE20: .4byte gBankTarget +_0801BE24: .4byte gBattleMoves +_0801BE28: .4byte gCurrentMove +_0801BE2C: .4byte gBankAttacker +_0801BE30: .4byte 0x00000115 +_0801BE34: .4byte gBattlescriptCurrInstr +_0801BE38: .4byte BattleScript_MagicCoatBounce +_0801BE3C: + movs r2, 0 + ldr r0, _0801BEB8 @ =gNoOfAllBanks + ldrb r0, [r0] + cmp r2, r0 + bge _0801BE7E + ldr r6, _0801BEBC @ =gProtectStructs + ldr r1, _0801BEC0 @ =gBattleMoves + mov r12, r1 + adds r5, r0, 0 + ldr r7, _0801BEC4 @ =gTurnOrder +_0801BE50: + adds r4, r2, r7 + ldrb r3, [r4] + lsls r0, r3, 4 + adds r0, r6 + ldrb r0, [r0] + lsls r0, 26 + cmp r0, 0 + bge _0801BE78 + ldr r0, _0801BEC8 @ =gCurrentMove + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + add r0, r12 + ldrb r1, [r0, 0x8] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0801BE78 + b _0801BFA4 +_0801BE78: + adds r2, 0x1 + cmp r2, r5 + blt _0801BE50 +_0801BE7E: + ldr r0, _0801BECC @ =gSpecialStatuses + mov r1, r8 + ldrb r2, [r1] + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r3, [r1] + lsls r0, r3, 30 + cmp r0, 0 + bge _0801BEDC + movs r0, 0x3 + negs r0, r0 + ands r0, r3 + strb r0, [r1] + ldr r4, _0801BED0 @ =gLastUsedAbility + movs r0, 0x1F + strb r0, [r4] + bl b_movescr_stack_push_cursor + ldr r1, _0801BED4 @ =gBattlescriptCurrInstr + ldr r0, _0801BED8 @ =BattleScript_TookAttack + str r0, [r1] + mov r2, r8 + ldrb r0, [r2] + ldrb r1, [r4] + bl sub_81074C4 + b _0801BFF4 + .align 2, 0 +_0801BEB8: .4byte gNoOfAllBanks +_0801BEBC: .4byte gProtectStructs +_0801BEC0: .4byte gBattleMoves +_0801BEC4: .4byte gTurnOrder +_0801BEC8: .4byte gCurrentMove +_0801BECC: .4byte gSpecialStatuses +_0801BED0: .4byte gLastUsedAbility +_0801BED4: .4byte gBattlescriptCurrInstr +_0801BED8: .4byte BattleScript_TookAttack +_0801BEDC: + lsls r0, r2, 4 + add r0, r9 + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + bne _0801BEEA + b _0801BFEC +_0801BEEA: + ldr r1, _0801BF80 @ =gBattleMoves + ldr r2, _0801BF84 @ =gCurrentMove + ldrh r3, [r2] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x8] + movs r0, 0x2 + ands r0, r1 + adds r4, r2, 0 + cmp r0, 0 + beq _0801BFEC + cmp r3, 0xAE + bne _0801BF28 + ldr r2, _0801BF88 @ =gBattleMons + ldr r0, _0801BF8C @ =gBankAttacker + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r1, r0, r2 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0x7 + beq _0801BF28 + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0x7 + bne _0801BFEC +_0801BF28: + ldrh r0, [r4] + bl sub_8028350 + lsls r0, 24 + cmp r0, 0 + beq _0801BF4E + ldr r1, _0801BF88 @ =gBattleMons + ldr r0, _0801BF8C @ =gBankAttacker + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 5 + ands r0, r1 + cmp r0, 0 + beq _0801BFEC +_0801BF4E: + ldr r0, _0801BF8C @ =gBankAttacker + ldrb r0, [r0] + bl CancelMultiTurnMoves + ldr r2, _0801BF90 @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0801BF94 @ =gMoveHitWith + ldr r3, _0801BF98 @ =gBankTarget + ldrb r0, [r3] + lsls r0, 1 + adds r0, r1 + movs r2, 0 + strh r2, [r0] + ldr r1, _0801BF9C @ =gUnknown_02024C44 + ldrb r0, [r3] + lsls r0, 1 + adds r0, r1 + strh r2, [r0] + ldr r1, _0801BFA0 @ =gBattleCommunication + movs r0, 0x1 + strb r0, [r1, 0x6] + b _0801BFEC + .align 2, 0 +_0801BF80: .4byte gBattleMoves +_0801BF84: .4byte gCurrentMove +_0801BF88: .4byte gBattleMons +_0801BF8C: .4byte gBankAttacker +_0801BF90: .4byte gBattleMoveFlags +_0801BF94: .4byte gMoveHitWith +_0801BF98: .4byte gBankTarget +_0801BF9C: .4byte gUnknown_02024C44 +_0801BFA0: .4byte gBattleCommunication +_0801BFA4: + ldr r0, _0801BFD4 @ =gBankAttacker + ldrb r0, [r0] + ldr r2, _0801BFD8 @ =0x00000121 + adds r1, r3, 0 + bl sub_80151D4 + ldrb r1, [r4] + lsls r1, 4 + adds r1, r6 + ldrb r2, [r1] + movs r0, 0x21 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + ldr r0, _0801BFDC @ =0x02000000 + ldrb r1, [r4] + ldr r2, _0801BFE0 @ =0x00016003 + adds r0, r2 + strb r1, [r0] + bl b_movescr_stack_push_cursor + ldr r1, _0801BFE4 @ =gBattlescriptCurrInstr + ldr r0, _0801BFE8 @ =BattleScript_SnatchedMove + b _0801BFF2 + .align 2, 0 +_0801BFD4: .4byte gBankAttacker +_0801BFD8: .4byte 0x00000121 +_0801BFDC: .4byte 0x02000000 +_0801BFE0: .4byte 0x00016003 +_0801BFE4: .4byte gBattlescriptCurrInstr +_0801BFE8: .4byte BattleScript_SnatchedMove +_0801BFEC: + ldr r1, _0801C004 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 +_0801BFF2: + str r0, [r1] +_0801BFF4: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801C004: .4byte gBattlescriptCurrInstr + thumb_func_end atk00_attackcanceler + + thumb_func_start mcmd_jump_if_move_not_executed +mcmd_jump_if_move_not_executed: @ 801C008 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsrs r6, r1, 16 + ldr r1, _0801C054 @ =gBattlescriptCurrInstr + ldr r5, [r1] + adds r4, r5, r0 + ldr r0, _0801C058 @ =gBattleMoveFlags + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + beq _0801C068 + ldr r1, _0801C05C @ =gMoveHitWith + ldr r3, _0801C060 @ =gBankTarget + ldrb r0, [r3] + lsls r0, 1 + adds r0, r1 + movs r2, 0 + strh r2, [r0] + ldr r1, _0801C064 @ =gUnknown_02024C44 + ldrb r0, [r3] + lsls r0, 1 + adds r0, r1 + strh r2, [r0] + ldrb r4, [r5, 0x1] + ldrb r0, [r5, 0x2] + lsls r0, 8 + orrs r4, r0 + ldrb r0, [r5, 0x3] + lsls r0, 16 + orrs r4, r0 + ldrb r0, [r5, 0x4] + lsls r0, 24 + orrs r4, r0 + b _0801C082 + .align 2, 0 +_0801C054: .4byte gBattlescriptCurrInstr +_0801C058: .4byte gBattleMoveFlags +_0801C05C: .4byte gMoveHitWith +_0801C060: .4byte gBankTarget +_0801C064: .4byte gUnknown_02024C44 +_0801C068: + bl b_feature_update_destiny_bond + ldr r0, _0801C090 @ =gBankTarget + ldrb r1, [r0] + str r6, [sp] + movs r0, 0x3 + movs r2, 0 + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + cmp r0, 0 + bne _0801C086 +_0801C082: + ldr r0, _0801C094 @ =gBattlescriptCurrInstr + str r4, [r0] +_0801C086: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0801C090: .4byte gBankTarget +_0801C094: .4byte gBattlescriptCurrInstr + thumb_func_end mcmd_jump_if_move_not_executed + + thumb_func_start atk40_jump_if_move_affected_by_protect +atk40_jump_if_move_affected_by_protect: @ 801C098 + push {lr} + ldr r1, _0801C0E0 @ =gProtectStructs + ldr r0, _0801C0E4 @ =gBankTarget + ldrb r0, [r0] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + beq _0801C0F8 + ldr r2, _0801C0E8 @ =gBattleMoves + ldr r0, _0801C0EC @ =gCurrentMove + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x8] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0801C0F8 + ldr r2, _0801C0F0 @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x5 + movs r1, 0 + bl mcmd_jump_if_move_not_executed + ldr r1, _0801C0F4 @ =gBattleCommunication + movs r0, 0x1 + strb r0, [r1, 0x6] + b _0801C100 + .align 2, 0 +_0801C0E0: .4byte gProtectStructs +_0801C0E4: .4byte gBankTarget +_0801C0E8: .4byte gBattleMoves +_0801C0EC: .4byte gCurrentMove +_0801C0F0: .4byte gBattleMoveFlags +_0801C0F4: .4byte gBattleCommunication +_0801C0F8: + ldr r1, _0801C104 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0801C100: + pop {r0} + bx r0 + .align 2, 0 +_0801C104: .4byte gBattlescriptCurrInstr + thumb_func_end atk40_jump_if_move_affected_by_protect + + thumb_func_start sub_801C108 +sub_801C108: @ 801C108 + push {r4,lr} + lsls r0, 16 + lsrs r3, r0, 16 + movs r4, 0 + ldr r1, _0801C15C @ =gProtectStructs + ldr r0, _0801C160 @ =gBankTarget + ldrb r0, [r0] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + beq _0801C154 + ldr r2, _0801C164 @ =gBattleMoves + ldr r0, _0801C168 @ =gCurrentMove + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x8] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0801C154 + ldr r2, _0801C16C @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x7 + adds r1, r3, 0 + bl mcmd_jump_if_move_not_executed + ldr r1, _0801C170 @ =gBattleCommunication + movs r0, 0x1 + strb r0, [r1, 0x6] + movs r4, 0x1 +_0801C154: + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0801C15C: .4byte gProtectStructs +_0801C160: .4byte gBankTarget +_0801C164: .4byte gBattleMoves +_0801C168: .4byte gCurrentMove +_0801C16C: .4byte gBattleMoveFlags +_0801C170: .4byte gBattleCommunication + thumb_func_end sub_801C108 + + thumb_func_start sub_801C174 +sub_801C174: @ 801C174 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r2, _0801C1D4 @ =gStatuses3 + ldr r3, _0801C1D8 @ =gBankTarget + ldrb r4, [r3] + lsls r0, r4, 2 + adds r0, r2 + ldr r1, [r0] + movs r0, 0x18 + ands r1, r0 + adds r6, r2, 0 + cmp r1, 0 + beq _0801C1A6 + ldr r1, _0801C1DC @ =gDisableStructs + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + adds r0, r1 + ldr r1, _0801C1E0 @ =gBankAttacker + ldrb r0, [r0, 0x15] + ldrb r1, [r1] + cmp r0, r1 + beq _0801C290 +_0801C1A6: + ldr r0, _0801C1E4 @ =gHitMarker + ldr r1, [r0] + movs r2, 0x80 + lsls r2, 9 + ands r1, r2 + adds r2, r0, 0 + cmp r1, 0 + bne _0801C1EC + ldrb r0, [r3] + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0801C1EC +_0801C1C6: + ldr r0, _0801C1E8 @ =gBattleMoveFlags + ldrb r1, [r0] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0] + b _0801C290 + .align 2, 0 +_0801C1D4: .4byte gStatuses3 +_0801C1D8: .4byte gBankTarget +_0801C1DC: .4byte gDisableStructs +_0801C1E0: .4byte gBankAttacker +_0801C1E4: .4byte gHitMarker +_0801C1E8: .4byte gBattleMoveFlags +_0801C1EC: + ldr r0, [r2] + ldr r1, _0801C29C @ =0xfffeffff + ands r0, r1 + str r0, [r2] + movs r1, 0x80 + lsls r1, 10 + ands r0, r1 + cmp r0, 0 + bne _0801C20E + ldrb r0, [r3] + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0801C1C6 +_0801C20E: + ldr r0, [r2] + ldr r1, _0801C2A0 @ =0xfffdffff + ands r0, r1 + str r0, [r2] + movs r1, 0x80 + lsls r1, 11 + ands r0, r1 + cmp r0, 0 + bne _0801C22E + ldrb r0, [r3] + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + ands r0, r1 + cmp r0, 0 + bne _0801C1C6 +_0801C22E: + ldr r0, [r2] + ldr r1, _0801C2A4 @ =0xfffbffff + ands r0, r1 + str r0, [r2] + movs r0, 0 + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0xD + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + lsrs r0, 24 + lsls r4, r5, 1 + cmp r0, 0 + bne _0801C27E + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0x4D + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + cmp r0, 0 + bne _0801C27E + ldr r0, _0801C2A8 @ =gBattleWeather + ldrh r1, [r0] + movs r0, 0x7 + ands r0, r1 + cmp r0, 0 + beq _0801C27E + ldr r0, _0801C2AC @ =gBattleMoves + adds r1, r4, r5 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0x98 + beq _0801C290 +_0801C27E: + ldr r1, _0801C2AC @ =gBattleMoves + adds r0, r4, r5 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x11 + beq _0801C290 + cmp r0, 0x4E + bne _0801C2B0 +_0801C290: + movs r0, 0x7 + adds r1, r5, 0 + bl mcmd_jump_if_move_not_executed + movs r0, 0x1 + b _0801C2B2 + .align 2, 0 +_0801C29C: .4byte 0xfffeffff +_0801C2A0: .4byte 0xfffdffff +_0801C2A4: .4byte 0xfffbffff +_0801C2A8: .4byte gBattleWeather +_0801C2AC: .4byte gBattleMoves +_0801C2B0: + movs r0, 0 +_0801C2B2: + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_801C174 + + thumb_func_start atk01_accuracycheck +atk01_accuracycheck: @ 801C2BC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + ldr r0, _0801C314 @ =gBattlescriptCurrInstr + ldr r5, [r0] + ldrb r6, [r5, 0x5] + ldrb r1, [r5, 0x6] + lsls r1, 8 + orrs r6, r1 + adds r1, r6, 0x2 + lsls r1, 16 + lsrs r1, 16 + adds r7, r0, 0 + cmp r1, 0x1 + bhi _0801C378 + ldr r2, _0801C318 @ =gStatuses3 + ldr r3, _0801C31C @ =gBankTarget + ldrb r4, [r3] + lsls r0, r4, 2 + adds r0, r2 + ldr r1, [r0] + movs r0, 0x18 + ands r1, r0 + cmp r1, 0 + beq _0801C32C + ldr r0, _0801C320 @ =0x0000ffff + cmp r6, r0 + bne _0801C32C + ldr r1, _0801C324 @ =gDisableStructs + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + adds r0, r1 + ldr r1, _0801C328 @ =gBankAttacker + ldrb r0, [r0, 0x15] + ldrb r1, [r1] + cmp r0, r1 + bne _0801C32C + adds r0, r5, 0x7 + str r0, [r7] + b _0801C632 + .align 2, 0 +_0801C314: .4byte gBattlescriptCurrInstr +_0801C318: .4byte gStatuses3 +_0801C31C: .4byte gBankTarget +_0801C320: .4byte 0x0000ffff +_0801C324: .4byte gDisableStructs +_0801C328: .4byte gBankAttacker +_0801C32C: + ldrb r0, [r3] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + ldr r1, _0801C358 @ =0x000400c0 + ands r0, r1 + cmp r0, 0 + beq _0801C35C + ldr r2, [r7] + 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, [r7] + b _0801C632 + .align 2, 0 +_0801C358: .4byte 0x000400c0 +_0801C35C: + movs r0, 0 + bl sub_801C108 + lsls r0, 24 + cmp r0, 0 + beq _0801C36A + b _0801C632 +_0801C36A: + ldr r1, _0801C374 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x7 + str r0, [r1] + b _0801C632 + .align 2, 0 +_0801C374: .4byte gBattlescriptCurrInstr +_0801C378: + cmp r6, 0 + bne _0801C380 + ldr r0, _0801C398 @ =gCurrentMove + ldrh r6, [r0] +_0801C380: + ldr r0, _0801C39C @ =0x02000000 + ldr r1, _0801C3A0 @ =0x0001601c + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _0801C3A4 + movs r2, 0x3F + mov r10, r2 + mov r3, r10 + ands r3, r0 + mov r10, r3 + b _0801C3B2 + .align 2, 0 +_0801C398: .4byte gCurrentMove +_0801C39C: .4byte 0x02000000 +_0801C3A0: .4byte 0x0001601c +_0801C3A4: + ldr r1, _0801C3F8 @ =gBattleMoves + lsls r0, r6, 1 + adds r0, r6 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x2] + mov r10, r0 +_0801C3B2: + adds r0, r6, 0 + bl sub_801C108 + lsls r0, 24 + cmp r0, 0 + beq _0801C3C0 + b _0801C632 +_0801C3C0: + adds r0, r6, 0 + bl sub_801C174 + lsls r0, 24 + cmp r0, 0 + beq _0801C3CE + b _0801C632 +_0801C3CE: + ldr r3, _0801C3FC @ =gBattleMons + ldr r0, _0801C400 @ =gBankTarget + ldrb r0, [r0] + movs r2, 0x58 + adds r4, r0, 0 + muls r4, r2 + adds r0, r3, 0 + adds r0, 0x50 + adds r0, r4, r0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 22 + ands r0, r1 + cmp r0, 0 + beq _0801C408 + ldr r0, _0801C404 @ =gBankAttacker + ldrb r0, [r0] + muls r0, r2 + adds r0, r3 + ldrb r5, [r0, 0x1E] + b _0801C41E + .align 2, 0 +_0801C3F8: .4byte gBattleMoves +_0801C3FC: .4byte gBattleMons +_0801C400: .4byte gBankTarget +_0801C404: .4byte gBankAttacker +_0801C408: + ldr r0, _0801C56C @ =gBankAttacker + ldrb r0, [r0] + muls r0, r2 + adds r0, r3 + ldrb r0, [r0, 0x1E] + adds r0, 0x6 + adds r1, r4, r3 + ldrb r1, [r1, 0x1F] + subs r0, r1 + lsls r0, 24 + lsrs r5, r0, 24 +_0801C41E: + lsls r0, r5, 24 + cmp r0, 0 + bge _0801C426 + movs r5, 0 +_0801C426: + lsls r0, r5, 24 + asrs r0, 24 + cmp r0, 0xC + ble _0801C430 + movs r5, 0xC +_0801C430: + ldr r1, _0801C570 @ =gBattleMoves + lsls r4, r6, 1 + adds r0, r4, r6 + lsls r0, 2 + adds r7, r0, r1 + ldrb r0, [r7, 0x3] + mov r8, r0 + movs r0, 0 + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0xD + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + lsrs r0, 24 + str r4, [sp, 0x4] + cmp r0, 0 + bne _0801C482 + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0x4D + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + cmp r0, 0 + bne _0801C482 + ldr r0, _0801C574 @ =gBattleWeather + ldrh r1, [r0] + movs r0, 0x60 + ands r0, r1 + cmp r0, 0 + beq _0801C482 + ldrb r0, [r7] + cmp r0, 0x98 + bne _0801C482 + movs r1, 0x32 + mov r8, r1 +_0801C482: + ldr r1, _0801C578 @ =gAccuracyStageRatios + lsls r0, r5, 24 + asrs r0, 22 + adds r0, r1 + ldrb r1, [r0] + mov r4, r8 + muls r4, r1 + ldrb r1, [r0, 0x1] + adds r0, r4, 0 + bl __divsi3 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r7, _0801C57C @ =gBattleMons + ldr r0, _0801C56C @ =gBankAttacker + ldrb r0, [r0] + movs r5, 0x58 + muls r0, r5 + adds r0, r7 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0xE + bne _0801C4C0 + lsls r0, r4, 6 + adds r0, r4 + lsls r0, 1 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r4, r0, 16 +_0801C4C0: + 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 _0801C518 + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0x4D + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + cmp r0, 0 + bne _0801C518 + ldr r0, _0801C580 @ =gBankTarget + ldrb r0, [r0] + muls r0, r5 + adds r0, r7 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x8 + bne _0801C518 + ldr r0, _0801C574 @ =gBattleWeather + ldrh r1, [r0] + movs r0, 0x18 + ands r0, r1 + cmp r0, 0 + beq _0801C518 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 4 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r4, r0, 16 +_0801C518: + ldr r2, _0801C57C @ =gBattleMons + ldr r0, _0801C56C @ =gBankAttacker + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x20 + ldrb r0, [r0] + mov r9, r2 + cmp r0, 0x37 + bne _0801C544 + mov r2, r10 + cmp r2, 0x8 + bhi _0801C544 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 4 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r4, r0, 16 +_0801C544: + ldr r3, _0801C580 @ =gBankTarget + mov r8, r3 + ldrb r2, [r3] + movs r7, 0x58 + adds r0, r2, 0 + muls r0, r7 + mov r3, r9 + adds r1, r0, r3 + ldrh r0, [r1, 0x2E] + cmp r0, 0xAF + bne _0801C588 + ldr r1, _0801C584 @ =gEnigmaBerries + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r5, [r0, 0x7] + ldrb r2, [r0, 0x1A] + b _0801C5A4 + .align 2, 0 +_0801C56C: .4byte gBankAttacker +_0801C570: .4byte gBattleMoves +_0801C574: .4byte gBattleWeather +_0801C578: .4byte gAccuracyStageRatios +_0801C57C: .4byte gBattleMons +_0801C580: .4byte gBankTarget +_0801C584: .4byte gEnigmaBerries +_0801C588: + ldrh r0, [r1, 0x2E] + bl ItemId_GetHoldEffect + lsls r0, 24 + lsrs r5, r0, 24 + mov r1, r8 + ldrb r0, [r1] + muls r0, r7 + add r0, r9 + ldrh r0, [r0, 0x2E] + bl ItemId_GetHoldEffectParam + lsls r0, 24 + lsrs r2, r0, 24 +_0801C5A4: + ldr r0, _0801C608 @ =gStringBank + ldr r1, _0801C60C @ =gBankTarget + ldrb r1, [r1] + strb r1, [r0] + cmp r5, 0x16 + bne _0801C5C0 + movs r0, 0x64 + subs r0, r2 + muls r0, r4 + movs r1, 0x64 + bl __divsi3 + lsls r0, 16 + lsrs r4, r0, 16 +_0801C5C0: + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + adds r0, 0x1 + cmp r0, r4 + ble _0801C62A + ldr r2, _0801C610 @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r0, _0801C614 @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0801C620 + ldr r1, _0801C618 @ =gBattleMoves + ldr r2, [sp, 0x4] + adds r0, r2, r6 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x6] + cmp r0, 0x8 + beq _0801C602 + cmp r0, 0x20 + bne _0801C620 +_0801C602: + ldr r1, _0801C61C @ =gBattleCommunication + movs r0, 0x2 + b _0801C624 + .align 2, 0 +_0801C608: .4byte gStringBank +_0801C60C: .4byte gBankTarget +_0801C610: .4byte gBattleMoveFlags +_0801C614: .4byte gBattleTypeFlags +_0801C618: .4byte gBattleMoves +_0801C61C: .4byte gBattleCommunication +_0801C620: + ldr r1, _0801C644 @ =gBattleCommunication + movs r0, 0 +_0801C624: + strb r0, [r1, 0x6] + bl b_wonderguard_and_levitate +_0801C62A: + movs r0, 0x7 + adds r1, r6, 0 + bl mcmd_jump_if_move_not_executed +_0801C632: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801C644: .4byte gBattleCommunication + thumb_func_end atk01_accuracycheck + + thumb_func_start atk02_attackstring +atk02_attackstring: @ 801C648 + push {r4,r5,lr} + ldr r0, _0801C688 @ =gBattleExecBuffer + ldr r5, [r0] + cmp r5, 0 + bne _0801C680 + ldr r4, _0801C68C @ =gHitMarker + ldr r0, [r4] + movs r1, 0xC0 + lsls r1, 3 + ands r0, r1 + cmp r0, 0 + bne _0801C674 + ldr r0, _0801C690 @ =gBankAttacker + ldrb r1, [r0] + movs r0, 0x4 + bl PrepareStringBattle + ldr r0, [r4] + movs r1, 0x80 + lsls r1, 3 + orrs r0, r1 + str r0, [r4] +_0801C674: + ldr r0, _0801C694 @ =gBattlescriptCurrInstr + ldr r1, [r0] + adds r1, 0x1 + str r1, [r0] + ldr r0, _0801C698 @ =gBattleCommunication + strb r5, [r0, 0x7] +_0801C680: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0801C688: .4byte gBattleExecBuffer +_0801C68C: .4byte gHitMarker +_0801C690: .4byte gBankAttacker +_0801C694: .4byte gBattlescriptCurrInstr +_0801C698: .4byte gBattleCommunication + thumb_func_end atk02_attackstring + + thumb_func_start atk03_ppreduce +atk03_ppreduce: @ 801C69C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + movs r6, 0x1 + ldr r0, _0801C6EC @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + beq _0801C6B4 + b _0801C84E +_0801C6B4: + ldr r1, _0801C6F0 @ =gSpecialStatuses + ldr r2, _0801C6F4 @ =gBankAttacker + ldrb r3, [r2] + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 26 + lsrs r4, r0, 31 + mov r9, r2 + cmp r4, 0 + bne _0801C756 + ldr r2, _0801C6F8 @ =gBattleMoves + ldr r0, _0801C6FC @ =gCurrentMove + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x6] + cmp r0, 0x20 + beq _0801C706 + cmp r0, 0x20 + bgt _0801C700 + cmp r0, 0x8 + beq _0801C71C + b _0801C736 + .align 2, 0 +_0801C6EC: .4byte gBattleExecBuffer +_0801C6F0: .4byte gSpecialStatuses +_0801C6F4: .4byte gBankAttacker +_0801C6F8: .4byte gBattleMoves +_0801C6FC: .4byte gCurrentMove +_0801C700: + cmp r0, 0x40 + beq _0801C71C + b _0801C736 +_0801C706: + str r4, [sp] + movs r0, 0x12 + adds r1, r3, 0 + movs r2, 0x2E + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0x1 + b _0801C756 +_0801C71C: + mov r0, r9 + ldrb r1, [r0] + movs r0, 0 + str r0, [sp] + movs r0, 0x10 + movs r2, 0x2E + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + lsrs r0, 24 + adds r6, r0 + b _0801C756 +_0801C736: + ldr r1, _0801C7B8 @ =gBankTarget + mov r2, r9 + ldrb r0, [r2] + ldrb r7, [r1] + cmp r0, r7 + beq _0801C756 + ldr r2, _0801C7BC @ =gBattleMons + ldrb r1, [r1] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x2E + bne _0801C756 + adds r6, 0x1 +_0801C756: + ldr r0, _0801C7C0 @ =gHitMarker + ldr r4, [r0] + movs r0, 0xA0 + lsls r0, 4 + ands r4, r0 + cmp r4, 0 + bne _0801C83C + ldr r2, _0801C7BC @ =gBattleMons + ldr r3, _0801C7C4 @ =gCurrMovePos + ldr r1, _0801C7C8 @ =gBankAttacker + ldrb r5, [r1] + movs r0, 0x58 + mov r8, r0 + mov r0, r8 + muls r0, r5 + ldrb r7, [r3] + adds r0, r7 + movs r7, 0x24 + adds r7, r2 + mov r12, r7 + add r0, r12 + ldrb r0, [r0] + mov r9, r1 + mov r10, r2 + adds r7, r3, 0 + cmp r0, 0 + beq _0801C83C + ldr r0, _0801C7CC @ =gProtectStructs + lsls r1, r5, 4 + adds r1, r0 + ldrb r0, [r1, 0x2] + movs r2, 0x8 + orrs r0, r2 + strb r0, [r1, 0x2] + mov r1, r9 + ldrb r0, [r1] + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + ldrb r1, [r7] + adds r0, r1 + mov r1, r12 + adds r2, r0, r1 + ldrb r0, [r2] + cmp r0, r6 + ble _0801C7D0 + subs r0, r6 + strb r0, [r2] + b _0801C7D2 + .align 2, 0 +_0801C7B8: .4byte gBankTarget +_0801C7BC: .4byte gBattleMons +_0801C7C0: .4byte gHitMarker +_0801C7C4: .4byte gCurrMovePos +_0801C7C8: .4byte gBankAttacker +_0801C7CC: .4byte gProtectStructs +_0801C7D0: + strb r4, [r2] +_0801C7D2: + mov r2, r9 + ldrb r3, [r2] + movs r4, 0x58 + adds r0, r3, 0 + muls r0, r4 + mov r1, r10 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 14 + ands r0, r1 + cmp r0, 0 + bne _0801C83C + ldr r1, _0801C860 @ =gDisableStructs + lsls r0, r3, 3 + subs r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x18] + lsrs r1, 4 + ldr r2, _0801C864 @ =gBitTable + ldrb r0, [r7] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _0801C83C + ldr r0, _0801C868 @ =gActiveBank + strb r3, [r0] + ldrb r1, [r7] + adds r1, 0x9 + lsls r1, 24 + lsrs r1, 24 + mov r2, r9 + ldrb r0, [r2] + muls r0, r4 + mov r2, r10 + adds r2, 0x24 + adds r0, r2 + ldrb r7, [r7] + adds r0, r7 + str r0, [sp] + movs r0, 0 + movs r2, 0 + movs r3, 0x1 + bl EmitSetAttributes + mov r7, r9 + ldrb r0, [r7] + bl MarkBufferBankForExecution +_0801C83C: + ldr r2, _0801C86C @ =gHitMarker + ldr r0, [r2] + ldr r1, _0801C870 @ =0xfffff7ff + ands r0, r1 + str r0, [r2] + ldr r1, _0801C874 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_0801C84E: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801C860: .4byte gDisableStructs +_0801C864: .4byte gBitTable +_0801C868: .4byte gActiveBank +_0801C86C: .4byte gHitMarker +_0801C870: .4byte 0xfffff7ff +_0801C874: .4byte gBattlescriptCurrInstr + thumb_func_end atk03_ppreduce + + thumb_func_start atk04_critcalc +atk04_critcalc: @ 801C878 + push {r4-r7,lr} + ldr r1, _0801C89C @ =gBattleMons + ldr r0, _0801C8A0 @ =gBankAttacker + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r0, r1 + ldrh r0, [r0, 0x2E] + cmp r0, 0xAF + bne _0801C8A8 + ldr r1, _0801C8A4 @ =gEnigmaBerries + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r6, [r0, 0x7] + b _0801C8B0 + .align 2, 0 +_0801C89C: .4byte gBattleMons +_0801C8A0: .4byte gBankAttacker +_0801C8A4: .4byte gEnigmaBerries +_0801C8A8: + bl ItemId_GetHoldEffect + lsls r0, 24 + lsrs r6, r0, 24 +_0801C8B0: + ldr r1, _0801C93C @ =gStringBank + ldr r3, _0801C940 @ =gBankAttacker + ldrb r0, [r3] + strb r0, [r1] + ldr r4, _0801C944 @ =gBattleMons + ldrb r1, [r3] + movs r0, 0x58 + adds r7, r1, 0 + muls r7, r0 + adds r0, r4, 0 + adds r0, 0x50 + adds r0, r7, r0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 13 + ands r0, r1 + negs r0, r0 + asrs r5, r0, 31 + movs r0, 0x2 + ands r5, r0 + ldr r2, _0801C948 @ =gBattleMoves + ldr r0, _0801C94C @ =gCurrentMove + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + mov r12, r3 + cmp r1, 0x2B + bne _0801C8F0 + adds r5, 0x1 +_0801C8F0: + adds r0, r5, 0 + cmp r1, 0x4B + bne _0801C8F8 + adds r0, 0x1 +_0801C8F8: + cmp r1, 0xC8 + bne _0801C8FE + adds r0, 0x1 +_0801C8FE: + adds r2, r0, 0 + cmp r1, 0xD1 + bne _0801C906 + adds r2, 0x1 +_0801C906: + movs r1, 0 + cmp r6, 0x3F + bne _0801C916 + adds r0, r7, r4 + ldrh r0, [r0] + cmp r0, 0x71 + bne _0801C916 + movs r1, 0x1 +_0801C916: + lsls r5, r1, 1 + movs r3, 0 + cmp r6, 0x42 + bne _0801C930 + mov r0, r12 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r4 + ldrh r0, [r0] + cmp r0, 0x53 + bne _0801C930 + movs r3, 0x1 +_0801C930: + lsls r1, r3, 1 + cmp r6, 0x29 + bne _0801C950 + adds r0, r5, 0x1 + adds r0, r2, r0 + b _0801C952 + .align 2, 0 +_0801C93C: .4byte gStringBank +_0801C940: .4byte gBankAttacker +_0801C944: .4byte gBattleMons +_0801C948: .4byte gBattleMoves +_0801C94C: .4byte gCurrentMove +_0801C950: + adds r0, r2, r5 +_0801C952: + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 + adds r5, r0, 0 + cmp r5, 0x4 + bls _0801C960 + movs r5, 0x4 +_0801C960: + ldr r0, _0801C9BC @ =gBankTarget + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r4 + adds r0, 0x20 + ldrb r4, [r0] + cmp r4, 0x4 + beq _0801C9D0 + cmp r4, 0x4B + beq _0801C9D0 + ldr r1, _0801C9C0 @ =gStatuses3 + mov r2, r12 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 8 + ands r0, r1 + cmp r0, 0 + bne _0801C9D0 + ldr r0, _0801C9C4 @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x84 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + bne _0801C9D0 + bl Random + ldr r2, _0801C9C8 @ =gCriticalHitChance + lsls r1, r5, 1 + adds r1, r2 + lsls r0, 16 + lsrs r0, 16 + ldrh r1, [r1] + bl __umodsi3 + lsls r0, 16 + cmp r0, 0 + bne _0801C9D0 + ldr r1, _0801C9CC @ =gCritMultiplier + movs r0, 0x2 + b _0801C9D4 + .align 2, 0 +_0801C9BC: .4byte gBankTarget +_0801C9C0: .4byte gStatuses3 +_0801C9C4: .4byte gBattleTypeFlags +_0801C9C8: .4byte gCriticalHitChance +_0801C9CC: .4byte gCritMultiplier +_0801C9D0: + ldr r1, _0801C9E4 @ =gCritMultiplier + movs r0, 0x1 +_0801C9D4: + strb r0, [r1] + ldr r1, _0801C9E8 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801C9E4: .4byte gCritMultiplier +_0801C9E8: .4byte gBattlescriptCurrInstr + thumb_func_end atk04_critcalc + + thumb_func_start atk05_damagecalc1 +atk05_damagecalc1: @ 801C9EC + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x10 + ldr r4, _0801CABC @ =gSideAffecting + ldr r6, _0801CAC0 @ =gBankTarget + ldrb r0, [r6] + bl GetBankIdentity + movs r1, 0x1 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + ldrh r3, [r1] + ldr r0, _0801CAC4 @ =gBankAttacker + mov r8, r0 + ldrb r0, [r0] + movs r4, 0x58 + muls r0, r4 + ldr r2, _0801CAC8 @ =gBattleMons + adds r0, r2 + ldrb r1, [r6] + muls r1, r4 + adds r1, r2 + ldr r2, _0801CACC @ =gCurrentMove + mov r9, r2 + ldrh r2, [r2] + ldr r4, _0801CAD0 @ =gDynamicBasePower + ldrh r4, [r4] + str r4, [sp] + ldr r5, _0801CAD4 @ =0x02000000 + ldr r7, _0801CAD8 @ =0x0001601c + adds r4, r5, r7 + ldrb r4, [r4] + str r4, [sp, 0x4] + mov r7, r8 + ldrb r4, [r7] + str r4, [sp, 0x8] + ldrb r4, [r6] + str r4, [sp, 0xC] + bl CalculateBaseDamage + ldr r4, _0801CADC @ =gBattleMoveDamage + ldr r1, _0801CAE0 @ =gCritMultiplier + ldrb r1, [r1] + muls r1, r0 + ldr r0, _0801CAE4 @ =0x0001601f + adds r5, r0 + ldrb r0, [r5] + adds r3, r1, 0 + muls r3, r0 + str r3, [r4] + ldr r1, _0801CAE8 @ =gStatuses3 + ldrb r0, [r7] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 2 + ands r0, r1 + cmp r0, 0 + beq _0801CA82 + ldr r2, _0801CAEC @ =gBattleMoves + mov r7, r9 + ldrh r1, [r7] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x2] + cmp r0, 0xD + bne _0801CA82 + lsls r0, r3, 1 + str r0, [r4] +_0801CA82: + ldr r1, _0801CAF0 @ =gProtectStructs + ldr r0, _0801CAC4 @ =gBankAttacker + ldrb r0, [r0] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 28 + cmp r0, 0 + bge _0801CAA4 + ldr r4, _0801CADC @ =gBattleMoveDamage + ldr r1, [r4] + lsls r0, r1, 4 + subs r0, r1 + movs r1, 0xA + bl __divsi3 + str r0, [r4] +_0801CAA4: + ldr r1, _0801CAF4 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + add sp, 0x10 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801CABC: .4byte gSideAffecting +_0801CAC0: .4byte gBankTarget +_0801CAC4: .4byte gBankAttacker +_0801CAC8: .4byte gBattleMons +_0801CACC: .4byte gCurrentMove +_0801CAD0: .4byte gDynamicBasePower +_0801CAD4: .4byte 0x02000000 +_0801CAD8: .4byte 0x0001601c +_0801CADC: .4byte gBattleMoveDamage +_0801CAE0: .4byte gCritMultiplier +_0801CAE4: .4byte 0x0001601f +_0801CAE8: .4byte gStatuses3 +_0801CAEC: .4byte gBattleMoves +_0801CAF0: .4byte gProtectStructs +_0801CAF4: .4byte gBattlescriptCurrInstr + thumb_func_end atk05_damagecalc1 + + thumb_func_start sub_801CAF8 +sub_801CAF8: @ 801CAF8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x10 + adds r5, r1, 0 + lsls r0, 24 + lsrs r7, r0, 24 + lsls r5, 24 + lsrs r5, 24 + ldr r4, _0801CBBC @ =gSideAffecting + adds r0, r5, 0 + bl GetBankIdentity + movs r1, 0x1 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + ldrh r3, [r1] + movs r1, 0x58 + adds r0, r7, 0 + muls r0, r1 + ldr r2, _0801CBC0 @ =gBattleMons + adds r0, r2 + muls r1, r5 + adds r1, r2 + ldr r2, _0801CBC4 @ =gCurrentMove + mov r9, r2 + ldrh r2, [r2] + ldr r4, _0801CBC8 @ =gDynamicBasePower + mov r8, r4 + ldrh r4, [r4] + str r4, [sp] + ldr r6, _0801CBCC @ =0x02000000 + ldr r4, _0801CBD0 @ =0x0001601c + ldrb r4, [r4, r6] + str r4, [sp, 0x4] + str r7, [sp, 0x8] + str r5, [sp, 0xC] + bl CalculateBaseDamage + ldr r4, _0801CBD4 @ =gBattleMoveDamage + movs r1, 0 + mov r2, r8 + strh r1, [r2] + ldr r1, _0801CBD8 @ =gCritMultiplier + ldrb r1, [r1] + muls r1, r0 + ldr r0, _0801CBDC @ =0x0001601f + adds r6, r0 + ldrb r0, [r6] + adds r3, r1, 0 + muls r3, r0 + str r3, [r4] + ldr r1, _0801CBE0 @ =gStatuses3 + lsls r0, r7, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 2 + ands r0, r1 + cmp r0, 0 + beq _0801CB8E + ldr r2, _0801CBE4 @ =gBattleMoves + mov r6, r9 + ldrh r1, [r6] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x2] + cmp r0, 0xD + bne _0801CB8E + lsls r0, r3, 1 + str r0, [r4] +_0801CB8E: + ldr r0, _0801CBE8 @ =gProtectStructs + lsls r1, r7, 4 + adds r1, r0 + ldrb r0, [r1] + lsls r0, 28 + cmp r0, 0 + bge _0801CBAC + ldr r4, _0801CBD4 @ =gBattleMoveDamage + ldr r1, [r4] + lsls r0, r1, 4 + subs r0, r1 + movs r1, 0xA + bl __divsi3 + str r0, [r4] +_0801CBAC: + add sp, 0x10 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801CBBC: .4byte gSideAffecting +_0801CBC0: .4byte gBattleMons +_0801CBC4: .4byte gCurrentMove +_0801CBC8: .4byte gDynamicBasePower +_0801CBCC: .4byte 0x02000000 +_0801CBD0: .4byte 0x0001601c +_0801CBD4: .4byte gBattleMoveDamage +_0801CBD8: .4byte gCritMultiplier +_0801CBDC: .4byte 0x0001601f +_0801CBE0: .4byte gStatuses3 +_0801CBE4: .4byte gBattleMoves +_0801CBE8: .4byte gProtectStructs + thumb_func_end sub_801CAF8 + + thumb_func_start battle_attack_damage_modulate_by_effectivity +battle_attack_damage_modulate_by_effectivity: @ 801CBEC + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r5, _0801CC1C @ =gBattleMoveDamage + ldr r0, [r5] + muls r0, r4 + movs r1, 0xA + bl __divsi3 + str r0, [r5] + cmp r0, 0 + bne _0801CC0C + cmp r4, 0 + beq _0801CC0C + movs r0, 0x1 + str r0, [r5] +_0801CC0C: + cmp r4, 0x5 + beq _0801CC3C + cmp r4, 0x5 + bgt _0801CC20 + cmp r4, 0 + beq _0801CC26 + b _0801CCBE + .align 2, 0 +_0801CC1C: .4byte gBattleMoveDamage +_0801CC20: + cmp r4, 0x14 + beq _0801CC7C + b _0801CCBE +_0801CC26: + ldr r2, _0801CC38 @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x8 + orrs r0, r1 + movs r1, 0xFB + ands r0, r1 + movs r1, 0xFD + ands r0, r1 + b _0801CCBC + .align 2, 0 +_0801CC38: .4byte gBattleMoveFlags +_0801CC3C: + ldr r2, _0801CC6C @ =gBattleMoves + ldr r0, _0801CC70 @ =gCurrentMove + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1] + cmp r0, 0 + beq _0801CCBE + ldr r2, _0801CC74 @ =gBattleMoveFlags + ldrb r1, [r2] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _0801CCBE + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0801CC78 + movs r0, 0xFD + ands r0, r1 + b _0801CCBC + .align 2, 0 +_0801CC6C: .4byte gBattleMoves +_0801CC70: .4byte gCurrentMove +_0801CC74: .4byte gBattleMoveFlags +_0801CC78: + movs r0, 0x4 + b _0801CCBA +_0801CC7C: + ldr r2, _0801CCAC @ =gBattleMoves + ldr r0, _0801CCB0 @ =gCurrentMove + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1] + cmp r0, 0 + beq _0801CCBE + ldr r2, _0801CCB4 @ =gBattleMoveFlags + ldrb r1, [r2] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _0801CCBE + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0801CCB8 + movs r0, 0xFB + ands r0, r1 + b _0801CCBC + .align 2, 0 +_0801CCAC: .4byte gBattleMoves +_0801CCB0: .4byte gCurrentMove +_0801CCB4: .4byte gBattleMoveFlags +_0801CCB8: + movs r0, 0x2 +_0801CCBA: + orrs r0, r1 +_0801CCBC: + strb r0, [r2] +_0801CCBE: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end battle_attack_damage_modulate_by_effectivity + + thumb_func_start atk06_typecalc +atk06_typecalc: @ 801CCC4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + movs r3, 0 + ldr r1, _0801CCF0 @ =gCurrentMove + ldrh r0, [r1] + cmp r0, 0xA5 + bne _0801CCD8 + b _0801CEF4 +_0801CCD8: + ldr r0, _0801CCF4 @ =0x02000000 + ldr r2, _0801CCF8 @ =0x0001601c + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0801CCFC + movs r1, 0x3F + mov r8, r1 + mov r2, r8 + ands r2, r0 + mov r8, r2 + b _0801CD0C + .align 2, 0 +_0801CCF0: .4byte gCurrentMove +_0801CCF4: .4byte 0x02000000 +_0801CCF8: .4byte 0x0001601c +_0801CCFC: + ldr r2, _0801CD94 @ =gBattleMoves + ldrh r1, [r1] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x2] + mov r8, r0 +_0801CD0C: + ldr r2, _0801CD98 @ =gBattleMons + ldr r0, _0801CD9C @ =gBankAttacker + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r1, r0, r2 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + adds r5, r2, 0 + cmp r0, r8 + beq _0801CD2E + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, r8 + bne _0801CD44 +_0801CD2E: + ldr r4, _0801CDA0 @ =gBattleMoveDamage + ldr r1, [r4] + lsls r0, r1, 4 + subs r0, r1 + str r0, [r4] + movs r1, 0xA + str r3, [sp, 0x4] + bl __divsi3 + str r0, [r4] + ldr r3, [sp, 0x4] +_0801CD44: + ldr r2, _0801CDA4 @ =gBankTarget + ldrb r1, [r2] + movs r0, 0x58 + muls r0, r1 + adds r0, r5 + adds r0, 0x20 + ldrb r0, [r0] + adds r4, r2, 0 + cmp r0, 0x1A + bne _0801CDBC + mov r1, r8 + cmp r1, 0x4 + bne _0801CDBC + ldr r3, _0801CDA8 @ =gLastUsedAbility + strb r0, [r3] + ldr r2, _0801CDAC @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x9 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0801CDB0 @ =gMoveHitWith + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + movs r2, 0 + strh r2, [r0] + ldr r1, _0801CDB4 @ =gUnknown_02024C44 + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + strh r2, [r0] + ldr r0, _0801CDB8 @ =gBattleCommunication + mov r2, r8 + strb r2, [r0, 0x6] + ldrb r0, [r4] + ldrb r1, [r3] + bl sub_81074C4 + b _0801CE58 + .align 2, 0 +_0801CD94: .4byte gBattleMoves +_0801CD98: .4byte gBattleMons +_0801CD9C: .4byte gBankAttacker +_0801CDA0: .4byte gBattleMoveDamage +_0801CDA4: .4byte gBankTarget +_0801CDA8: .4byte gLastUsedAbility +_0801CDAC: .4byte gBattleMoveFlags +_0801CDB0: .4byte gMoveHitWith +_0801CDB4: .4byte gUnknown_02024C44 +_0801CDB8: .4byte gBattleCommunication +_0801CDBC: + ldr r1, _0801CDC8 @ =gTypeEffectiveness + adds r0, r3, r1 + ldrb r0, [r0] + adds r2, r1, 0 + b _0801CE38 + .align 2, 0 +_0801CDC8: .4byte gTypeEffectiveness +_0801CDCC: + adds r3, 0x3 + b _0801CE34 +_0801CDD0: + ldr r5, _0801CF08 @ =gTypeEffectiveness + adds r0, r3, r5 + ldrb r0, [r0] + cmp r0, r8 + bne _0801CE2C + adds r1, r3, 0x1 + adds r1, r5 + ldr r2, _0801CF0C @ =gBattleMons + ldr r7, _0801CF10 @ =gBankTarget + ldrb r0, [r7] + movs r6, 0x58 + muls r0, r6 + adds r0, r2 + adds r0, 0x21 + ldrb r4, [r1] + ldrb r0, [r0] + cmp r4, r0 + bne _0801CE06 + adds r0, r3, 0x2 + adds r0, r5 + ldrb r0, [r0] + str r2, [sp] + str r3, [sp, 0x4] + bl battle_attack_damage_modulate_by_effectivity + ldr r3, [sp, 0x4] + ldr r2, [sp] +_0801CE06: + ldrb r0, [r7] + muls r0, r6 + adds r0, r2 + adds r1, r0, 0 + adds r1, 0x22 + ldrb r1, [r1] + cmp r4, r1 + bne _0801CE2C + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, r4 + beq _0801CE2C + adds r0, r3, 0x2 + adds r0, r5 + ldrb r0, [r0] + str r3, [sp, 0x4] + bl battle_attack_damage_modulate_by_effectivity + ldr r3, [sp, 0x4] +_0801CE2C: + adds r3, 0x3 + ldr r5, _0801CF0C @ =gBattleMons + ldr r4, _0801CF10 @ =gBankTarget + ldr r2, _0801CF08 @ =gTypeEffectiveness +_0801CE34: + adds r0, r3, r2 + ldrb r0, [r0] +_0801CE38: + cmp r0, 0xFF + beq _0801CE58 + cmp r0, 0xFE + bne _0801CDD0 + ldrb r1, [r4] + movs r0, 0x58 + muls r0, r1 + adds r1, r5, 0 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 22 + ands r0, r1 + cmp r0, 0 + beq _0801CDCC +_0801CE58: + ldr r2, _0801CF0C @ =gBattleMons + ldr r5, _0801CF10 @ =gBankTarget + ldrb r1, [r5] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x20 + ldrb r6, [r0] + cmp r6, 0x19 + bne _0801CED6 + ldr r0, _0801CF14 @ =gBankAttacker + ldrb r0, [r0] + ldr r7, _0801CF18 @ =gCurrentMove + ldrh r1, [r7] + bl move_weather_interaction + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0801CED6 + ldr r1, _0801CF1C @ =gBattleMoveFlags + mov r8, r1 + ldrb r4, [r1] + ands r0, r4 + cmp r0, 0 + beq _0801CE94 + movs r0, 0x6 + ands r0, r4 + cmp r0, 0x6 + bne _0801CED6 +_0801CE94: + ldr r2, _0801CF20 @ =gBattleMoves + ldrh r1, [r7] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1] + cmp r0, 0 + beq _0801CED6 + ldr r3, _0801CF24 @ =gLastUsedAbility + strb r6, [r3] + movs r0, 0x1 + orrs r0, r4 + mov r2, r8 + strb r0, [r2] + ldr r1, _0801CF28 @ =gMoveHitWith + ldrb r0, [r5] + lsls r0, 1 + adds r0, r1 + movs r2, 0 + strh r2, [r0] + ldr r1, _0801CF2C @ =gUnknown_02024C44 + ldrb r0, [r5] + lsls r0, 1 + adds r0, r1 + strh r2, [r0] + ldr r1, _0801CF30 @ =gBattleCommunication + movs r0, 0x3 + strb r0, [r1, 0x6] + ldrb r0, [r5] + ldrb r1, [r3] + bl sub_81074C4 +_0801CED6: + ldr r0, _0801CF1C @ =gBattleMoveFlags + ldrb r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0801CEF4 + ldr r2, _0801CF34 @ =gProtectStructs + ldr r0, _0801CF14 @ =gBankAttacker + ldrb r1, [r0] + lsls r1, 4 + adds r1, r2 + ldrb r0, [r1, 0x1] + movs r2, 0x2 + orrs r0, r2 + strb r0, [r1, 0x1] +_0801CEF4: + ldr r1, _0801CF38 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801CF08: .4byte gTypeEffectiveness +_0801CF0C: .4byte gBattleMons +_0801CF10: .4byte gBankTarget +_0801CF14: .4byte gBankAttacker +_0801CF18: .4byte gCurrentMove +_0801CF1C: .4byte gBattleMoveFlags +_0801CF20: .4byte gBattleMoves +_0801CF24: .4byte gLastUsedAbility +_0801CF28: .4byte gMoveHitWith +_0801CF2C: .4byte gUnknown_02024C44 +_0801CF30: .4byte gBattleCommunication +_0801CF34: .4byte gProtectStructs +_0801CF38: .4byte gBattlescriptCurrInstr + thumb_func_end atk06_typecalc + + thumb_func_start b_wonderguard_and_levitate +b_wonderguard_and_levitate: @ 801CF3C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + movs r6, 0 + movs r5, 0 + ldr r0, _0801CF80 @ =gCurrentMove + ldrh r1, [r0] + mov r9, r0 + cmp r1, 0xA5 + bne _0801CF54 + b _0801D1A4 +_0801CF54: + ldr r2, _0801CF84 @ =gBattleMoves + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r1, r0, r2 + ldrb r0, [r1, 0x1] + cmp r0, 0 + bne _0801CF66 + b _0801D1A4 +_0801CF66: + ldr r0, _0801CF88 @ =0x02000000 + ldr r2, _0801CF8C @ =0x0001601c + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0801CF90 + movs r1, 0x3F + mov r12, r1 + mov r2, r12 + ands r2, r0 + mov r12, r2 + b _0801CF94 + .align 2, 0 +_0801CF80: .4byte gCurrentMove +_0801CF84: .4byte gBattleMoves +_0801CF88: .4byte 0x02000000 +_0801CF8C: .4byte 0x0001601c +_0801CF90: + ldrb r1, [r1, 0x2] + mov r12, r1 +_0801CF94: + ldr r2, _0801CFC8 @ =gBattleMons + ldr r3, _0801CFCC @ =gBankTarget + ldrb r1, [r3] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x20 + ldrb r1, [r0] + adds r7, r2, 0 + mov r8, r3 + cmp r1, 0x1A + bne _0801CFD8 + mov r0, r12 + cmp r0, 0x4 + bne _0801CFD8 + ldr r0, _0801CFD0 @ =gLastUsedAbility + strb r1, [r0] + ldr r0, _0801CFD4 @ =gBattleCommunication + mov r1, r12 + strb r1, [r0, 0x6] + ldrb r0, [r3] + movs r1, 0x1A + bl sub_81074C4 + b _0801D1A4 + .align 2, 0 +_0801CFC8: .4byte gBattleMons +_0801CFCC: .4byte gBankTarget +_0801CFD0: .4byte gLastUsedAbility +_0801CFD4: .4byte gBattleCommunication +_0801CFD8: + ldr r1, _0801CFE4 @ =gTypeEffectiveness + adds r0, r5, r1 + ldrb r0, [r0] + adds r4, r1, 0 + b _0801D12A + .align 2, 0 +_0801CFE4: .4byte gTypeEffectiveness +_0801CFE8: + adds r0, r5, r4 + ldrb r0, [r0] + cmp r0, r12 + beq _0801CFF2 + b _0801D124 +_0801CFF2: + adds r2, r5, 0x1 + adds r3, r2, r4 + mov r0, r8 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r7 + adds r0, 0x21 + ldrb r1, [r3] + adds r3, r2, 0 + ldrb r0, [r0] + cmp r1, r0 + bne _0801D032 + adds r0, r5, 0x2 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + bne _0801D032 + ldr r2, _0801D1B0 @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x8 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0801D1B4 @ =gProtectStructs + ldr r0, _0801D1B8 @ =gBankAttacker + ldrb r2, [r0] + lsls r2, 4 + adds r2, r1 + ldrb r0, [r2, 0x1] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2, 0x1] +_0801D032: + adds r2, r3, r4 + mov r0, r8 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r7 + adds r1, r0, 0 + adds r1, 0x22 + ldrb r2, [r2] + ldrb r1, [r1] + cmp r2, r1 + bne _0801D078 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, r2 + beq _0801D078 + adds r0, r5, 0x2 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + bne _0801D078 + ldr r2, _0801D1B0 @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x8 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0801D1B4 @ =gProtectStructs + ldr r0, _0801D1B8 @ =gBankAttacker + ldrb r2, [r0] + lsls r2, 4 + adds r2, r1 + ldrb r0, [r2, 0x1] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2, 0x1] +_0801D078: + adds r2, r3, r4 + mov r0, r8 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r7 + adds r0, 0x21 + ldrb r1, [r2] + ldrb r0, [r0] + cmp r1, r0 + bne _0801D09C + adds r0, r5, 0x2 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0x14 + bne _0801D09C + movs r0, 0x1 + orrs r6, r0 +_0801D09C: + adds r2, r3, r4 + mov r0, r8 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r7 + adds r1, r0, 0 + adds r1, 0x22 + ldrb r2, [r2] + ldrb r1, [r1] + cmp r2, r1 + bne _0801D0CA + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, r2 + beq _0801D0CA + adds r0, r5, 0x2 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0x14 + bne _0801D0CA + movs r0, 0x1 + orrs r6, r0 +_0801D0CA: + adds r2, r3, r4 + mov r0, r8 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r7 + adds r0, 0x21 + ldrb r1, [r2] + ldrb r0, [r0] + cmp r1, r0 + bne _0801D0F2 + adds r0, r5, 0x2 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0x5 + bne _0801D0F2 + movs r0, 0x2 + orrs r6, r0 + lsls r0, r6, 24 + lsrs r6, r0, 24 +_0801D0F2: + adds r2, r3, r4 + mov r0, r8 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r7 + adds r1, r0, 0 + adds r1, 0x22 + ldrb r2, [r2] + ldrb r1, [r1] + cmp r2, r1 + bne _0801D124 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, r2 + beq _0801D124 + adds r0, r5, 0x2 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0x5 + bne _0801D124 + movs r0, 0x2 + orrs r6, r0 + lsls r0, r6, 24 + lsrs r6, r0, 24 +_0801D124: + adds r5, 0x3 + adds r0, r5, r4 + ldrb r0, [r0] +_0801D12A: + cmp r0, 0xFF + beq _0801D14E + cmp r0, 0xFE + beq _0801D134 + b _0801CFE8 +_0801D134: + mov r2, r8 + ldrb r1, [r2] + movs r0, 0x58 + muls r0, r1 + adds r1, r7, 0 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 22 + ands r0, r1 + cmp r0, 0 + beq _0801D124 +_0801D14E: + mov r0, r8 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r7 + adds r0, 0x20 + ldrb r4, [r0] + cmp r4, 0x19 + bne _0801D1A4 + ldr r0, _0801D1B8 @ =gBankAttacker + ldrb r0, [r0] + mov r2, r9 + ldrh r1, [r2] + bl move_weather_interaction + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0801D1A4 + movs r0, 0x3 + ands r6, r0 + cmp r6, 0x1 + beq _0801D1A4 + ldr r2, _0801D1BC @ =gBattleMoves + mov r0, r9 + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1] + cmp r0, 0 + beq _0801D1A4 + ldr r0, _0801D1C0 @ =gLastUsedAbility + strb r4, [r0] + ldr r1, _0801D1C4 @ =gBattleCommunication + movs r0, 0x3 + strb r0, [r1, 0x6] + mov r1, r8 + ldrb r0, [r1] + movs r1, 0x19 + bl sub_81074C4 +_0801D1A4: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801D1B0: .4byte gBattleMoveFlags +_0801D1B4: .4byte gProtectStructs +_0801D1B8: .4byte gBankAttacker +_0801D1BC: .4byte gBattleMoves +_0801D1C0: .4byte gLastUsedAbility +_0801D1C4: .4byte gBattleCommunication + thumb_func_end b_wonderguard_and_levitate + + thumb_func_start b_attack_effectivity_adapt +b_attack_effectivity_adapt: @ 801D1C8 + push {r4-r7,lr} + adds r6, r2, 0 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 16 + lsrs r5, r1, 16 + ldr r7, _0801D1FC @ =gBattleMoveDamage + ldr r0, [r7] + muls r0, r4 + movs r1, 0xA + bl __divsi3 + str r0, [r7] + cmp r0, 0 + bne _0801D1EE + cmp r4, 0 + beq _0801D1EE + movs r0, 0x1 + str r0, [r7] +_0801D1EE: + cmp r4, 0x5 + beq _0801D216 + cmp r4, 0x5 + bgt _0801D200 + cmp r4, 0 + beq _0801D206 + b _0801D27A + .align 2, 0 +_0801D1FC: .4byte gBattleMoveDamage +_0801D200: + cmp r4, 0x14 + beq _0801D248 + b _0801D27A +_0801D206: + ldrb r0, [r6] + movs r1, 0x8 + orrs r0, r1 + movs r1, 0xFB + ands r0, r1 + movs r1, 0xFD + ands r0, r1 + b _0801D278 +_0801D216: + ldr r0, _0801D240 @ =gBattleMoves + lsls r1, r5, 1 + adds r1, r5 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + cmp r0, 0 + beq _0801D27A + ldrb r1, [r6] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _0801D27A + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0801D244 + movs r0, 0xFD + ands r0, r1 + b _0801D278 + .align 2, 0 +_0801D240: .4byte gBattleMoves +_0801D244: + movs r0, 0x4 + b _0801D276 +_0801D248: + ldr r0, _0801D270 @ =gBattleMoves + lsls r1, r5, 1 + adds r1, r5 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + cmp r0, 0 + beq _0801D27A + ldrb r1, [r6] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _0801D27A + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0801D274 + movs r0, 0xFB + ands r0, r1 + b _0801D278 + .align 2, 0 +_0801D270: .4byte gBattleMoves +_0801D274: + movs r0, 0x2 +_0801D276: + orrs r0, r1 +_0801D278: + strb r0, [r6] +_0801D27A: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end b_attack_effectivity_adapt + + thumb_func_start move_effectiveness_something +move_effectiveness_something: @ 801D280 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 + lsls r1, 24 + lsrs r1, 24 + str r1, [sp, 0x4] + lsls r2, 24 + lsrs r2, 24 + mov r9, r2 + movs r7, 0 + mov r0, sp + strb r7, [r0] + mov r0, r10 + cmp r0, 0xA5 + bne _0801D2AE + movs r0, 0 + b _0801D43A +_0801D2AE: + ldr r1, _0801D31C @ =gBattleMoves + mov r3, r10 + lsls r2, r3, 1 + adds r0, r2, r3 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x2] + str r0, [sp, 0x8] + ldr r1, _0801D320 @ =gBattleMons + movs r0, 0x58 + ldr r3, [sp, 0x4] + muls r0, r3 + adds r3, r0, r1 + adds r0, r3, 0 + adds r0, 0x21 + ldrb r0, [r0] + str r2, [sp, 0xC] + adds r5, r1, 0 + ldr r1, [sp, 0x8] + cmp r0, r1 + beq _0801D2E2 + adds r0, r3, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, r1 + bne _0801D2F4 +_0801D2E2: + ldr r4, _0801D324 @ =gBattleMoveDamage + ldr r1, [r4] + lsls r0, r1, 4 + subs r0, r1 + str r0, [r4] + movs r1, 0xA + bl __divsi3 + str r0, [r4] +_0801D2F4: + movs r0, 0x58 + mov r2, r9 + muls r2, r0 + adds r0, r2, 0 + adds r0, r5 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x1A + bne _0801D328 + ldr r3, [sp, 0x8] + cmp r3, 0x4 + bne _0801D328 + movs r1, 0x9 + mov r0, sp + ldrb r0, [r0] + orrs r0, r1 + mov r1, sp + strb r0, [r1] + b _0801D3DC + .align 2, 0 +_0801D31C: .4byte gBattleMoves +_0801D320: .4byte gBattleMons +_0801D324: .4byte gBattleMoveDamage +_0801D328: + ldr r1, _0801D344 @ =gTypeEffectiveness + adds r0, r7, r1 + ldrb r0, [r0] + adds r2, r1, 0 + cmp r0, 0xFF + beq _0801D3DC + cmp r0, 0xFE + bne _0801D34C + movs r0, 0x58 + mov r1, r9 + muls r1, r0 + adds r0, r1, 0 + b _0801D3CA + .align 2, 0 +_0801D344: .4byte gTypeEffectiveness +_0801D348: + adds r7, 0x3 + b _0801D3B6 +_0801D34C: + ldr r6, _0801D44C @ =gTypeEffectiveness + adds r0, r7, r6 + ldrb r0, [r0] + ldr r2, [sp, 0x8] + cmp r0, r2 + bne _0801D3B0 + adds r1, r7, 0x1 + adds r1, r6 + ldr r3, _0801D450 @ =gBattleMons + mov r8, r3 + movs r3, 0x58 + mov r0, r9 + muls r0, r3 + mov r2, r8 + adds r5, r0, r2 + adds r0, r5, 0 + adds r0, 0x21 + ldrb r4, [r1] + ldrb r0, [r0] + cmp r4, r0 + bne _0801D388 + adds r0, r7, 0x2 + adds r0, r6 + ldrb r0, [r0] + mov r1, r10 + mov r2, sp + str r3, [sp, 0x10] + bl b_attack_effectivity_adapt + ldr r3, [sp, 0x10] +_0801D388: + adds r0, r5, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r4, r0 + bne _0801D3B0 + ldr r0, _0801D454 @ =gBankTarget + ldrb r0, [r0] + muls r0, r3 + add r0, r8 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, r4 + beq _0801D3B0 + adds r0, r7, 0x2 + adds r0, r6 + ldrb r0, [r0] + mov r1, r10 + mov r2, sp + bl b_attack_effectivity_adapt +_0801D3B0: + adds r7, 0x3 + ldr r5, _0801D450 @ =gBattleMons + ldr r2, _0801D44C @ =gTypeEffectiveness +_0801D3B6: + adds r0, r7, r2 + ldrb r0, [r0] + cmp r0, 0xFF + beq _0801D3DC + cmp r0, 0xFE + bne _0801D34C + movs r0, 0x58 + mov r3, r9 + muls r3, r0 + adds r0, r3, 0 +_0801D3CA: + adds r1, r5, 0 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 22 + ands r0, r1 + cmp r0, 0 + beq _0801D348 +_0801D3DC: + movs r0, 0x58 + mov r1, r9 + muls r1, r0 + adds r0, r1, 0 + adds r0, r5 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x19 + bne _0801D436 + mov r0, sp + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0801D436 + ldr r0, [sp, 0x4] + mov r1, r10 + bl move_weather_interaction + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x2 + bne _0801D436 + mov r0, sp + ldrb r3, [r0] + adds r0, r1, 0 + ands r0, r3 + cmp r0, 0 + beq _0801D41E + movs r0, 0x6 + ands r0, r3 + cmp r0, 0x6 + bne _0801D436 +_0801D41E: + ldr r0, _0801D458 @ =gBattleMoves + ldr r1, [sp, 0xC] + add r1, r10 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + cmp r0, 0 + beq _0801D436 + mov r0, sp + movs r1, 0x1 + orrs r1, r3 + strb r1, [r0] +_0801D436: + mov r0, sp + ldrb r0, [r0] +_0801D43A: + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0801D44C: .4byte gTypeEffectiveness +_0801D450: .4byte gBattleMons +_0801D454: .4byte gBankTarget +_0801D458: .4byte gBattleMoves + thumb_func_end move_effectiveness_something + + thumb_func_start ai_rate_move +ai_rate_move: @ 801D45C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + lsls r0, 16 + lsrs r6, r0, 16 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 24 + lsrs r2, 24 + str r2, [sp, 0x4] + movs r7, 0 + mov r0, sp + strb r7, [r0] + ldr r2, _0801D498 @ =gBaseStats + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x6] + str r1, [sp, 0x8] + ldrb r0, [r0, 0x7] + mov r8, r0 + cmp r6, 0xA5 + bne _0801D49C + movs r0, 0 + b _0801D554 + .align 2, 0 +_0801D498: .4byte gBaseStats +_0801D49C: + ldr r2, _0801D4C0 @ =gBattleMoves + lsls r1, r6, 1 + adds r0, r1, r6 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x2] + mov r9, r0 + str r1, [sp, 0xC] + ldr r3, [sp, 0x4] + cmp r3, 0x1A + bne _0801D4C4 + cmp r0, 0x4 + bne _0801D4C4 + movs r1, 0x9 + mov r0, sp + strb r1, [r0] + b _0801D51E + .align 2, 0 +_0801D4C0: .4byte gBattleMoves +_0801D4C4: + ldr r0, _0801D564 @ =gTypeEffectiveness + mov r10, r0 + adds r1, r7, r0 + ldrb r0, [r1] + cmp r0, 0xFF + beq _0801D51E + adds r4, r1, 0 +_0801D4D2: + ldrb r0, [r4] + cmp r0, 0xFE + beq _0801D510 + cmp r0, r9 + bne _0801D510 + ldrb r5, [r4, 0x1] + ldr r1, [sp, 0x8] + cmp r5, r1 + bne _0801D4EE + ldrb r0, [r4, 0x2] + adds r1, r6, 0 + mov r2, sp + bl b_attack_effectivity_adapt +_0801D4EE: + cmp r5, r8 + bne _0801D510 + ldr r0, _0801D568 @ =gBankTarget + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + ldr r3, _0801D56C @ =gBattleMons + adds r0, r3 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, r8 + beq _0801D510 + ldrb r0, [r4, 0x2] + adds r1, r6, 0 + mov r2, sp + bl b_attack_effectivity_adapt +_0801D510: + adds r4, 0x3 + adds r7, 0x3 + mov r1, r10 + adds r0, r7, r1 + ldrb r0, [r0] + cmp r0, 0xFF + bne _0801D4D2 +_0801D51E: + ldr r3, [sp, 0x4] + cmp r3, 0x19 + bne _0801D550 + mov r0, sp + ldrb r2, [r0] + movs r0, 0x2 + ands r0, r2 + cmp r0, 0 + beq _0801D538 + movs r0, 0x6 + ands r0, r2 + cmp r0, 0x6 + bne _0801D550 +_0801D538: + ldr r0, _0801D570 @ =gBattleMoves + ldr r3, [sp, 0xC] + adds r1, r3, r6 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0x1] + cmp r0, 0 + beq _0801D550 + mov r0, sp + movs r1, 0x8 + orrs r1, r2 + strb r1, [r0] +_0801D550: + mov r0, sp + ldrb r0, [r0] +_0801D554: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0801D564: .4byte gTypeEffectiveness +_0801D568: .4byte gBankTarget +_0801D56C: .4byte gBattleMons +_0801D570: .4byte gBattleMoves + thumb_func_end ai_rate_move + + thumb_func_start unref_sub_801D574 +unref_sub_801D574: @ 801D574 + push {r4,lr} + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xF + ands r0, r1 + movs r1, 0x64 + subs r1, r0 + lsls r1, 16 + lsrs r1, 16 + ldr r4, _0801D5AC @ =gBattleMoveDamage + ldr r0, [r4] + cmp r0, 0 + beq _0801D5A6 + muls r0, r1 + str r0, [r4] + movs r1, 0x64 + bl __divsi3 + str r0, [r4] + cmp r0, 0 + bne _0801D5A6 + movs r0, 0x1 + str r0, [r4] +_0801D5A6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801D5AC: .4byte gBattleMoveDamage + thumb_func_end unref_sub_801D574 + + thumb_func_start atk07_dmg_adjustment +atk07_dmg_adjustment: @ 801D5B0 + push {r4-r7,lr} + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xF + ands r0, r1 + movs r1, 0x64 + subs r1, r0 + lsls r1, 16 + lsrs r1, 16 + ldr r4, _0801D608 @ =gBattleMoveDamage + ldr r0, [r4] + cmp r0, 0 + beq _0801D5E2 + muls r0, r1 + str r0, [r4] + movs r1, 0x64 + bl __divsi3 + str r0, [r4] + cmp r0, 0 + bne _0801D5E2 + movs r0, 0x1 + str r0, [r4] +_0801D5E2: + ldr r7, _0801D60C @ =gBattleMons + ldr r6, _0801D610 @ =gBankTarget + ldrb r2, [r6] + movs r5, 0x58 + adds r0, r2, 0 + muls r0, r5 + adds r1, r0, r7 + ldrh r0, [r1, 0x2E] + cmp r0, 0xAF + bne _0801D618 + ldr r1, _0801D614 @ =gEnigmaBerries + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r4, [r0, 0x7] + ldrb r6, [r0, 0x1A] + b _0801D632 + .align 2, 0 +_0801D608: .4byte gBattleMoveDamage +_0801D60C: .4byte gBattleMons +_0801D610: .4byte gBankTarget +_0801D614: .4byte gEnigmaBerries +_0801D618: + ldrh r0, [r1, 0x2E] + bl ItemId_GetHoldEffect + lsls r0, 24 + lsrs r4, r0, 24 + ldrb r0, [r6] + muls r0, r5 + adds r0, r7 + ldrh r0, [r0, 0x2E] + bl ItemId_GetHoldEffectParam + lsls r0, 24 + lsrs r6, r0, 24 +_0801D632: + ldr r1, _0801D6F4 @ =gStringBank + ldr r5, _0801D6F8 @ =gBankTarget + ldrb r0, [r5] + strb r0, [r1] + cmp r4, 0x27 + bne _0801D670 + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r6 + bcs _0801D670 + ldrb r0, [r5] + movs r1, 0x27 + bl sub_81074F8 + ldr r2, _0801D6FC @ =gSpecialStatuses + ldrb r1, [r5] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strb r1, [r0] +_0801D670: + ldr r2, _0801D700 @ =gBattleMons + ldr r3, _0801D6F8 @ =gBankTarget + ldrb r4, [r3] + movs r0, 0x58 + muls r0, r4 + adds r1, r2, 0 + adds r1, 0x50 + adds r0, r1 + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 17 + ands r1, r0 + adds r5, r2, 0 + cmp r1, 0 + bne _0801D740 + ldr r2, _0801D704 @ =gBattleMoves + ldr r0, _0801D708 @ =gCurrentMove + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0x65 + beq _0801D6C2 + ldr r0, _0801D70C @ =gProtectStructs + lsls r1, r4, 4 + adds r1, r0 + ldrb r0, [r1] + lsls r0, 30 + cmp r0, 0 + blt _0801D6C2 + ldr r0, _0801D6FC @ =gSpecialStatuses + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1] + lsrs r0, 7 + cmp r0, 0 + beq _0801D740 +_0801D6C2: + ldrb r0, [r3] + movs r4, 0x58 + muls r0, r4 + adds r0, r5 + ldrh r1, [r0, 0x28] + ldr r2, _0801D710 @ =gBattleMoveDamage + ldr r0, [r2] + cmp r1, r0 + bgt _0801D740 + subs r0, r1, 0x1 + str r0, [r2] + ldr r1, _0801D70C @ =gProtectStructs + ldrb r3, [r3] + lsls r0, r3, 4 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 30 + cmp r0, 0 + bge _0801D718 + ldr r0, _0801D714 @ =gBattleMoveFlags + ldrb r1, [r0] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r0] + b _0801D740 + .align 2, 0 +_0801D6F4: .4byte gStringBank +_0801D6F8: .4byte gBankTarget +_0801D6FC: .4byte gSpecialStatuses +_0801D700: .4byte gBattleMons +_0801D704: .4byte gBattleMoves +_0801D708: .4byte gCurrentMove +_0801D70C: .4byte gProtectStructs +_0801D710: .4byte gBattleMoveDamage +_0801D714: .4byte gBattleMoveFlags +_0801D718: + ldr r0, _0801D750 @ =gSpecialStatuses + lsls r1, r3, 2 + adds r1, r3 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1] + lsrs r0, 7 + cmp r0, 0 + beq _0801D740 + ldr r2, _0801D754 @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0801D758 @ =gLastUsedItem + adds r0, r3, 0 + muls r0, r4 + adds r0, r5 + ldrh r0, [r0, 0x2E] + strh r0, [r1] +_0801D740: + ldr r1, _0801D75C @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801D750: .4byte gSpecialStatuses +_0801D754: .4byte gBattleMoveFlags +_0801D758: .4byte gLastUsedItem +_0801D75C: .4byte gBattlescriptCurrInstr + thumb_func_end atk07_dmg_adjustment + + thumb_func_start atk08_dmg_adjustment2 +atk08_dmg_adjustment2: @ 801D760 + push {r4-r7,lr} + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xF + ands r0, r1 + movs r1, 0x64 + subs r1, r0 + lsls r1, 16 + lsrs r1, 16 + ldr r4, _0801D7B8 @ =gBattleMoveDamage + ldr r0, [r4] + cmp r0, 0 + beq _0801D792 + muls r0, r1 + str r0, [r4] + movs r1, 0x64 + bl __divsi3 + str r0, [r4] + cmp r0, 0 + bne _0801D792 + movs r0, 0x1 + str r0, [r4] +_0801D792: + ldr r7, _0801D7BC @ =gBattleMons + ldr r6, _0801D7C0 @ =gBankTarget + ldrb r2, [r6] + movs r5, 0x58 + adds r0, r2, 0 + muls r0, r5 + adds r1, r0, r7 + ldrh r0, [r1, 0x2E] + cmp r0, 0xAF + bne _0801D7C8 + ldr r1, _0801D7C4 @ =gEnigmaBerries + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r4, [r0, 0x7] + ldrb r6, [r0, 0x1A] + b _0801D7E2 + .align 2, 0 +_0801D7B8: .4byte gBattleMoveDamage +_0801D7BC: .4byte gBattleMons +_0801D7C0: .4byte gBankTarget +_0801D7C4: .4byte gEnigmaBerries +_0801D7C8: + ldrh r0, [r1, 0x2E] + bl ItemId_GetHoldEffect + lsls r0, 24 + lsrs r4, r0, 24 + ldrb r0, [r6] + muls r0, r5 + adds r0, r7 + ldrh r0, [r0, 0x2E] + bl ItemId_GetHoldEffectParam + lsls r0, 24 + lsrs r6, r0, 24 +_0801D7E2: + ldr r1, _0801D888 @ =gStringBank + ldr r5, _0801D88C @ =gBankTarget + ldrb r0, [r5] + strb r0, [r1] + cmp r4, 0x27 + bne _0801D820 + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r6 + bcs _0801D820 + ldrb r0, [r5] + movs r1, 0x27 + bl sub_81074F8 + ldr r2, _0801D890 @ =gSpecialStatuses + ldrb r1, [r5] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strb r1, [r0] +_0801D820: + ldr r4, _0801D894 @ =gBattleMons + ldr r6, _0801D88C @ =gBankTarget + ldrb r2, [r6] + movs r7, 0x58 + adds r3, r2, 0 + muls r3, r7 + adds r0, r4, 0 + adds r0, 0x50 + adds r0, r3, r0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 17 + ands r0, r1 + cmp r0, 0 + bne _0801D8CC + ldr r5, _0801D898 @ =gProtectStructs + lsls r0, r2, 4 + adds r0, r5 + ldrb r0, [r0] + lsls r0, 30 + cmp r0, 0 + blt _0801D85E + ldr r0, _0801D890 @ =gSpecialStatuses + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1] + lsrs r0, 7 + cmp r0, 0 + beq _0801D8CC +_0801D85E: + adds r0, r3, r4 + ldrh r1, [r0, 0x28] + ldr r2, _0801D89C @ =gBattleMoveDamage + ldr r0, [r2] + cmp r1, r0 + bgt _0801D8CC + subs r0, r1, 0x1 + str r0, [r2] + ldrb r3, [r6] + lsls r0, r3, 4 + adds r0, r5 + ldrb r0, [r0] + lsls r0, 30 + cmp r0, 0 + bge _0801D8A4 + ldr r0, _0801D8A0 @ =gBattleMoveFlags + ldrb r1, [r0] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r0] + b _0801D8CC + .align 2, 0 +_0801D888: .4byte gStringBank +_0801D88C: .4byte gBankTarget +_0801D890: .4byte gSpecialStatuses +_0801D894: .4byte gBattleMons +_0801D898: .4byte gProtectStructs +_0801D89C: .4byte gBattleMoveDamage +_0801D8A0: .4byte gBattleMoveFlags +_0801D8A4: + ldr r0, _0801D8DC @ =gSpecialStatuses + lsls r1, r3, 2 + adds r1, r3 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1] + lsrs r0, 7 + cmp r0, 0 + beq _0801D8CC + ldr r2, _0801D8E0 @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0801D8E4 @ =gLastUsedItem + adds r0, r3, 0 + muls r0, r7 + adds r0, r4 + ldrh r0, [r0, 0x2E] + strh r0, [r1] +_0801D8CC: + ldr r1, _0801D8E8 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801D8DC: .4byte gSpecialStatuses +_0801D8E0: .4byte gBattleMoveFlags +_0801D8E4: .4byte gLastUsedItem +_0801D8E8: .4byte gBattlescriptCurrInstr + thumb_func_end atk08_dmg_adjustment2 + + thumb_func_start atk09_attackanimation +atk09_attackanimation: @ 801D8EC + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0xC + ldr r0, _0801D940 @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + beq _0801D900 + b _0801DA4A +_0801D900: + ldr r0, _0801D944 @ =gHitMarker + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + ldr r3, _0801D948 @ =gCurrentMove + cmp r0, 0 + beq _0801D960 + ldrh r0, [r3] + cmp r0, 0x90 + beq _0801D960 + cmp r0, 0xA4 + beq _0801D960 + ldr r4, _0801D94C @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r0, _0801D950 @ =BattleScript_Pausex20 + str r0, [r4] + ldr r1, _0801D954 @ =0x02000000 + ldr r0, _0801D958 @ =0x00016002 + adds r2, r1, r0 + ldrb r0, [r2] + adds r0, 0x1 + strb r0, [r2] + ldr r2, _0801D95C @ =0x000160a1 + adds r1, r2 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0801DA4A + .align 2, 0 +_0801D940: .4byte gBattleExecBuffer +_0801D944: .4byte gHitMarker +_0801D948: .4byte gCurrentMove +_0801D94C: .4byte gBattlescriptCurrInstr +_0801D950: .4byte BattleScript_Pausex20 +_0801D954: .4byte 0x02000000 +_0801D958: .4byte 0x00016002 +_0801D95C: .4byte 0x000160a1 +_0801D960: + ldr r2, _0801DA0C @ =gBattleMoves + ldrh r1, [r3] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x6] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + bne _0801D986 + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + bne _0801D986 + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0801D992 +_0801D986: + ldr r0, _0801DA10 @ =0x02000000 + ldr r1, _0801DA14 @ =0x000160a1 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0801DA00 +_0801D992: + ldr r0, _0801DA18 @ =gBattleMoveFlags + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _0801DA3C + ldr r1, _0801DA1C @ =gActiveBank + ldr r2, _0801DA20 @ =gBankAttacker + mov r9, r2 + ldrb r0, [r2] + strb r0, [r1] + ldrh r1, [r3] + ldr r6, _0801DA10 @ =0x02000000 + ldr r0, _0801DA24 @ =0x00016002 + adds r0, r6 + mov r8, r0 + ldrb r2, [r0] + ldr r0, _0801DA28 @ =gBattleMovePower + ldrh r3, [r0] + ldr r0, _0801DA2C @ =gBattleMoveDamage + ldr r0, [r0] + str r0, [sp] + ldr r5, _0801DA30 @ =gBattleMons + mov r0, r9 + ldrb r4, [r0] + movs r0, 0x58 + muls r0, r4 + adds r0, r5 + adds r0, 0x2B + ldrb r0, [r0] + str r0, [sp, 0x4] + mov r0, r9 + ldrb r4, [r0] + lsls r0, r4, 3 + subs r0, r4 + lsls r0, 2 + ldr r4, _0801DA34 @ =gDisableStructs + adds r0, r4 + str r0, [sp, 0x8] + movs r0, 0 + bl EmitMoveAnimation + mov r1, r8 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r2, _0801DA14 @ =0x000160a1 + adds r6, r2 + ldrb r0, [r6] + adds r0, 0x1 + strb r0, [r6] + mov r1, r9 + ldrb r0, [r1] + bl MarkBufferBankForExecution +_0801DA00: + ldr r1, _0801DA38 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + b _0801DA4A + .align 2, 0 +_0801DA0C: .4byte gBattleMoves +_0801DA10: .4byte 0x02000000 +_0801DA14: .4byte 0x000160a1 +_0801DA18: .4byte gBattleMoveFlags +_0801DA1C: .4byte gActiveBank +_0801DA20: .4byte gBankAttacker +_0801DA24: .4byte 0x00016002 +_0801DA28: .4byte gBattleMovePower +_0801DA2C: .4byte gBattleMoveDamage +_0801DA30: .4byte gBattleMons +_0801DA34: .4byte gDisableStructs +_0801DA38: .4byte gBattlescriptCurrInstr +_0801DA3C: + ldr r4, _0801DA58 @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r0, _0801DA5C @ =BattleScript_Pausex20 + str r0, [r4] +_0801DA4A: + add sp, 0xC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0801DA58: .4byte gBattlescriptCurrInstr +_0801DA5C: .4byte BattleScript_Pausex20 + thumb_func_end atk09_attackanimation + + thumb_func_start atk0A_waitanimation +atk0A_waitanimation: @ 801DA60 + push {lr} + ldr r0, _0801DA78 @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _0801DA72 + ldr r1, _0801DA7C @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_0801DA72: + pop {r0} + bx r0 + .align 2, 0 +_0801DA78: .4byte gBattleExecBuffer +_0801DA7C: .4byte gBattlescriptCurrInstr + thumb_func_end atk0A_waitanimation + + thumb_func_start atk0B_healthbarupdate +atk0B_healthbarupdate: @ 801DA80 + push {r4,r5,lr} + ldr r0, _0801DAE4 @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _0801DB36 + ldr r0, _0801DAE8 @ =gBattleMoveFlags + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _0801DB2E + ldr r0, _0801DAEC @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r2, _0801DAF0 @ =gActiveBank + strb r0, [r2] + ldr r1, _0801DAF4 @ =gBattleMons + ldrb r2, [r2] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 17 + ands r0, r1 + cmp r0, 0 + beq _0801DB00 + ldr r0, _0801DAF8 @ =gDisableStructs + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0xA] + cmp r0, 0 + beq _0801DB00 + ldr r0, _0801DAFC @ =gHitMarker + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 1 + ands r0, r1 + cmp r0, 0 + bne _0801DB00 + movs r0, 0x80 + adds r1, r2, 0 + bl PrepareStringBattle + b _0801DB2E + .align 2, 0 +_0801DAE4: .4byte gBattleExecBuffer +_0801DAE8: .4byte gBattleMoveFlags +_0801DAEC: .4byte gBattlescriptCurrInstr +_0801DAF0: .4byte gActiveBank +_0801DAF4: .4byte gBattleMons +_0801DAF8: .4byte gDisableStructs +_0801DAFC: .4byte gHitMarker +_0801DB00: + ldr r5, _0801DB3C @ =gBattleMoveDamage + ldrh r1, [r5] + movs r0, 0 + bl EmitHealthBarUpdate + ldr r4, _0801DB40 @ =gActiveBank + ldrb r0, [r4] + bl MarkBufferBankForExecution + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _0801DB2E + ldr r0, [r5] + cmp r0, 0 + ble _0801DB2E + ldr r0, _0801DB44 @ =gBattleResults + ldrb r1, [r0, 0x5] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0, 0x5] +_0801DB2E: + ldr r1, _0801DB48 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] +_0801DB36: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0801DB3C: .4byte gBattleMoveDamage +_0801DB40: .4byte gActiveBank +_0801DB44: .4byte gBattleResults +_0801DB48: .4byte gBattlescriptCurrInstr + thumb_func_end atk0B_healthbarupdate + + thumb_func_start atk0C_datahpupdate +atk0C_datahpupdate: @ 801DB4C + push {r4-r7,lr} + sub sp, 0x4 + ldr r0, _0801DB74 @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + beq _0801DB5A + b _0801DF2E +_0801DB5A: + ldr r0, _0801DB78 @ =0x02000000 + ldr r1, _0801DB7C @ =0x0001601c + adds r0, r1 + ldrb r1, [r0] + cmp r1, 0 + beq _0801DB80 + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _0801DB80 + movs r6, 0x3F + ands r6, r1 + b _0801DB90 + .align 2, 0 +_0801DB74: .4byte gBattleExecBuffer +_0801DB78: .4byte 0x02000000 +_0801DB7C: .4byte 0x0001601c +_0801DB80: + ldr r2, _0801DC1C @ =gBattleMoves + ldr r0, _0801DC20 @ =gCurrentMove + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r6, [r0, 0x2] +_0801DB90: + ldr r0, _0801DC24 @ =gBattleMoveFlags + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + beq _0801DB9E + b _0801DF00 +_0801DB9E: + ldr r0, _0801DC28 @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r7, _0801DC2C @ =gActiveBank + strb r0, [r7] + ldr r1, _0801DC30 @ =gBattleMons + ldrb r2, [r7] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 17 + ands r0, r1 + cmp r0, 0 + beq _0801DCB4 + ldr r0, _0801DC34 @ =gDisableStructs + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + adds r4, r1, r0 + ldrb r1, [r4, 0xA] + mov r12, r0 + cmp r1, 0 + beq _0801DCB4 + ldr r0, _0801DC38 @ =gHitMarker + ldr r3, [r0] + movs r0, 0x80 + lsls r0, 1 + ands r3, r0 + cmp r3, 0 + bne _0801DCB4 + adds r5, r1, 0 + ldr r6, _0801DC3C @ =gBattleMoveDamage + ldr r4, [r6] + cmp r5, r4 + blt _0801DC48 + ldr r0, _0801DC40 @ =gSpecialStatuses + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 2 + adds r0, 0x4 + adds r1, r0 + ldr r0, [r1] + cmp r0, 0 + bne _0801DC02 + str r4, [r1] +_0801DC02: + ldrb r0, [r7] + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + add r1, r12 + ldr r2, [r6] + ldrb r0, [r1, 0xA] + subs r0, r2 + strb r0, [r1, 0xA] + ldr r1, _0801DC44 @ =gHP_dealt + ldr r0, [r6] + str r0, [r1] + b _0801DC78 + .align 2, 0 +_0801DC1C: .4byte gBattleMoves +_0801DC20: .4byte gCurrentMove +_0801DC24: .4byte gBattleMoveFlags +_0801DC28: .4byte gBattlescriptCurrInstr +_0801DC2C: .4byte gActiveBank +_0801DC30: .4byte gBattleMons +_0801DC34: .4byte gDisableStructs +_0801DC38: .4byte gHitMarker +_0801DC3C: .4byte gBattleMoveDamage +_0801DC40: .4byte gSpecialStatuses +_0801DC44: .4byte gHP_dealt +_0801DC48: + ldr r0, _0801DCA0 @ =gSpecialStatuses + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 2 + adds r0, 0x4 + adds r1, r0 + ldr r0, [r1] + cmp r0, 0 + bne _0801DC5C + str r5, [r1] +_0801DC5C: + ldr r2, _0801DCA4 @ =gHP_dealt + ldrb r1, [r7] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r12 + ldrb r0, [r0, 0xA] + str r0, [r2] + ldrb r1, [r7] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r12 + strb r3, [r0, 0xA] +_0801DC78: + ldr r0, _0801DCA8 @ =gActiveBank + ldrb r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r12 + ldrb r0, [r0, 0xA] + cmp r0, 0 + beq _0801DC8C + b _0801DF26 +_0801DC8C: + ldr r4, _0801DCAC @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x2 + str r0, [r4] + bl b_movescr_stack_push_cursor + ldr r0, _0801DCB0 @ =BattleScript_SubstituteFade + str r0, [r4] + b _0801DF2E + .align 2, 0 +_0801DCA0: .4byte gSpecialStatuses +_0801DCA4: .4byte gHP_dealt +_0801DCA8: .4byte gActiveBank +_0801DCAC: .4byte gBattlescriptCurrInstr +_0801DCB0: .4byte BattleScript_SubstituteFade +_0801DCB4: + ldr r0, _0801DCF4 @ =gHitMarker + ldr r2, [r0] + ldr r1, _0801DCF8 @ =0xfffffeff + ands r2, r1 + str r2, [r0] + ldr r1, _0801DCFC @ =gBattleMoveDamage + ldr r5, [r1] + mov r12, r0 + adds r7, r1, 0 + cmp r5, 0 + bge _0801DD08 + ldr r4, _0801DD00 @ =gBattleMons + ldr r2, _0801DD04 @ =gActiveBank + ldrb r0, [r2] + movs r3, 0x58 + adds r1, r0, 0 + muls r1, r3 + adds r1, r4 + ldrh r0, [r1, 0x28] + subs r0, r5 + strh r0, [r1, 0x28] + ldrb r0, [r2] + muls r0, r3 + adds r1, r0, r4 + ldrh r3, [r1, 0x2C] + ldrh r0, [r1, 0x28] + adds r5, r2, 0 + cmp r0, r3 + bhi _0801DCF0 + b _0801DEC6 +_0801DCF0: + strh r3, [r1, 0x28] + b _0801DEC6 + .align 2, 0 +_0801DCF4: .4byte gHitMarker +_0801DCF8: .4byte 0xfffffeff +_0801DCFC: .4byte gBattleMoveDamage +_0801DD00: .4byte gBattleMons +_0801DD04: .4byte gActiveBank +_0801DD08: + movs r0, 0x20 + ands r0, r2 + cmp r0, 0 + beq _0801DD24 + movs r0, 0x21 + negs r0, r0 + ands r2, r0 + mov r0, r12 + str r2, [r0] + ldr r5, _0801DD20 @ =gActiveBank + b _0801DD6C + .align 2, 0 +_0801DD20: .4byte gActiveBank +_0801DD24: + ldr r0, _0801DD4C @ =gTakenDmg + ldr r2, _0801DD50 @ =gActiveBank + ldrb r1, [r2] + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + adds r0, r5 + str r0, [r1] + ldr r0, _0801DD54 @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r0, [r0, 0x1] + adds r5, r2, 0 + cmp r0, 0 + bne _0801DD60 + ldr r1, _0801DD58 @ =gTakenDmgBanks + ldrb r0, [r5] + adds r0, r1 + ldr r1, _0801DD5C @ =gBankAttacker + b _0801DD68 + .align 2, 0 +_0801DD4C: .4byte gTakenDmg +_0801DD50: .4byte gActiveBank +_0801DD54: .4byte gBattlescriptCurrInstr +_0801DD58: .4byte gTakenDmgBanks +_0801DD5C: .4byte gBankAttacker +_0801DD60: + ldr r1, _0801DD8C @ =gTakenDmgBanks + ldrb r0, [r5] + adds r0, r1 + ldr r1, _0801DD90 @ =gBankTarget +_0801DD68: + ldrb r1, [r1] + strb r1, [r0] +_0801DD6C: + ldr r4, _0801DD94 @ =gBattleMons + ldrb r0, [r5] + movs r3, 0x58 + muls r0, r3 + adds r2, r0, r4 + ldrh r0, [r2, 0x28] + ldr r1, [r7] + cmp r0, r1 + ble _0801DD9C + subs r0, r1 + strh r0, [r2, 0x28] + ldr r0, _0801DD98 @ =gHP_dealt + str r1, [r0] + adds r7, r0, 0 + b _0801DDAC + .align 2, 0 +_0801DD8C: .4byte gTakenDmgBanks +_0801DD90: .4byte gBankTarget +_0801DD94: .4byte gBattleMons +_0801DD98: .4byte gHP_dealt +_0801DD9C: + ldr r2, _0801DE20 @ =gHP_dealt + str r0, [r2] + ldrb r0, [r5] + muls r0, r3 + adds r0, r4 + movs r1, 0 + strh r1, [r0, 0x28] + adds r7, r2, 0 +_0801DDAC: + ldr r2, _0801DE24 @ =gSpecialStatuses + ldrb r1, [r5] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r1, r2, 0x4 + adds r3, r0, r1 + ldr r0, [r3] + adds r4, r2, 0 + cmp r0, 0 + bne _0801DDD4 + mov r1, r12 + ldr r0, [r1] + movs r1, 0x80 + lsls r1, 13 + ands r0, r1 + cmp r0, 0 + bne _0801DDD4 + ldr r0, [r7] + str r0, [r3] +_0801DDD4: + cmp r6, 0x8 + bhi _0801DE5C + mov r1, r12 + ldr r0, [r1] + movs r1, 0x80 + lsls r1, 13 + ands r0, r1 + cmp r0, 0 + bne _0801DE58 + ldr r0, _0801DE28 @ =gCurrentMove + ldrh r0, [r0] + cmp r0, 0xDC + beq _0801DE58 + ldr r3, _0801DE2C @ =gProtectStructs + ldrb r0, [r5] + lsls r0, 4 + adds r1, r3, 0x4 + adds r0, r1 + ldr r2, [r7] + str r2, [r0] + ldrb r1, [r5] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r1, r4, 0 + adds r1, 0x8 + adds r0, r1 + str r2, [r0] + ldr r0, _0801DE30 @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0 + bne _0801DE38 + ldrb r0, [r5] + lsls r0, 4 + adds r0, r3 + ldr r2, _0801DE34 @ =gBankAttacker + b _0801DE40 + .align 2, 0 +_0801DE20: .4byte gHP_dealt +_0801DE24: .4byte gSpecialStatuses +_0801DE28: .4byte gCurrentMove +_0801DE2C: .4byte gProtectStructs +_0801DE30: .4byte gBattlescriptCurrInstr +_0801DE34: .4byte gBankAttacker +_0801DE38: + ldrb r0, [r5] + lsls r0, 4 + adds r0, r3 + ldr r2, _0801DE54 @ =gBankTarget +_0801DE40: + ldrb r1, [r2] + strb r1, [r0, 0xC] + ldrb r1, [r5] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r2] + strb r1, [r0, 0x10] + b _0801DEC6 + .align 2, 0 +_0801DE54: .4byte gBankTarget +_0801DE58: + cmp r6, 0x8 + bls _0801DEC6 +_0801DE5C: + mov r1, r12 + ldr r0, [r1] + movs r1, 0x80 + lsls r1, 13 + ands r0, r1 + cmp r0, 0 + bne _0801DEC6 + ldr r3, _0801DEA0 @ =gProtectStructs + ldrb r0, [r5] + lsls r0, 4 + adds r1, r3, 0 + adds r1, 0x8 + adds r0, r1 + ldr r2, [r7] + str r2, [r0] + ldrb r1, [r5] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r1, r4, 0 + adds r1, 0xC + adds r0, r1 + str r2, [r0] + ldr r0, _0801DEA4 @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0 + bne _0801DEAC + ldrb r0, [r5] + lsls r0, 4 + adds r0, r3 + ldr r2, _0801DEA8 @ =gBankAttacker + b _0801DEB4 + .align 2, 0 +_0801DEA0: .4byte gProtectStructs +_0801DEA4: .4byte gBattlescriptCurrInstr +_0801DEA8: .4byte gBankAttacker +_0801DEAC: + ldrb r0, [r5] + lsls r0, 4 + adds r0, r3 + ldr r2, _0801DEF4 @ =gBankTarget +_0801DEB4: + ldrb r1, [r2] + strb r1, [r0, 0xD] + ldrb r1, [r5] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r2] + strb r1, [r0, 0x11] +_0801DEC6: + mov r1, r12 + ldr r0, [r1] + ldr r1, _0801DEF8 @ =0xffefffff + ands r0, r1 + mov r1, r12 + str r0, [r1] + ldrb r1, [r5] + movs r0, 0x58 + muls r0, r1 + ldr r1, _0801DEFC @ =gUnknown_02024AA8 + adds r0, r1 + str r0, [sp] + movs r0, 0 + movs r1, 0x2A + movs r2, 0 + movs r3, 0x2 + bl EmitSetAttributes + ldrb r0, [r5] + bl MarkBufferBankForExecution + b _0801DF26 + .align 2, 0 +_0801DEF4: .4byte gBankTarget +_0801DEF8: .4byte 0xffefffff +_0801DEFC: .4byte gUnknown_02024AA8 +_0801DF00: + ldr r0, _0801DF38 @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r1, _0801DF3C @ =gActiveBank + strb r0, [r1] + ldr r2, _0801DF40 @ =gSpecialStatuses + ldrb r1, [r1] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r2, 0x4 + adds r1, r0, r2 + ldr r0, [r1] + cmp r0, 0 + bne _0801DF26 + ldr r0, _0801DF44 @ =0x0000ffff + str r0, [r1] +_0801DF26: + ldr r1, _0801DF38 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] +_0801DF2E: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801DF38: .4byte gBattlescriptCurrInstr +_0801DF3C: .4byte gActiveBank +_0801DF40: .4byte gSpecialStatuses +_0801DF44: .4byte 0x0000ffff + thumb_func_end atk0C_datahpupdate + + thumb_func_start atk0D_critmessage +atk0D_critmessage: @ 801DF48 + push {lr} + ldr r0, _0801DF84 @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _0801DF7E + ldr r0, _0801DF88 @ =gCritMultiplier + ldrb r0, [r0] + cmp r0, 0x2 + bne _0801DF76 + ldr r0, _0801DF8C @ =gBattleMoveFlags + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _0801DF76 + ldr r0, _0801DF90 @ =gBankAttacker + ldrb r1, [r0] + movs r0, 0xD9 + bl PrepareStringBattle + ldr r1, _0801DF94 @ =gBattleCommunication + movs r0, 0x1 + strb r0, [r1, 0x7] +_0801DF76: + ldr r1, _0801DF98 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_0801DF7E: + pop {r0} + bx r0 + .align 2, 0 +_0801DF84: .4byte gBattleExecBuffer +_0801DF88: .4byte gCritMultiplier +_0801DF8C: .4byte gBattleMoveFlags +_0801DF90: .4byte gBankAttacker +_0801DF94: .4byte gBattleCommunication +_0801DF98: .4byte gBattlescriptCurrInstr + thumb_func_end atk0D_critmessage + + thumb_func_start atk0E_effectiveness_sound +atk0E_effectiveness_sound: @ 801DF9C + push {r4,lr} + ldr r0, _0801DFD4 @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _0801E05C + ldr r4, _0801DFD8 @ =gActiveBank + ldr r0, _0801DFDC @ =gBankTarget + ldrb r0, [r0] + strb r0, [r4] + ldr r1, _0801DFE0 @ =gBattleMoveFlags + ldrb r2, [r1] + movs r0, 0x1 + ands r0, r2 + cmp r0, 0 + bne _0801E054 + movs r0, 0xFE + ands r0, r2 + cmp r0, 0x10 + beq _0801E00E + cmp r0, 0x10 + bgt _0801DFEA + cmp r0, 0x4 + beq _0801DFFE + cmp r0, 0x4 + bgt _0801DFE4 + cmp r0, 0x2 + beq _0801DFF8 + b _0801E00E + .align 2, 0 +_0801DFD4: .4byte gBattleExecBuffer +_0801DFD8: .4byte gActiveBank +_0801DFDC: .4byte gBankTarget +_0801DFE0: .4byte gBattleMoveFlags +_0801DFE4: + cmp r0, 0x8 + beq _0801E054 + b _0801E00E +_0801DFEA: + cmp r0, 0x40 + beq _0801E00E + cmp r0, 0x40 + bgt _0801E00E + cmp r0, 0x20 + beq _0801E054 + b _0801E00E +_0801DFF8: + movs r0, 0 + movs r1, 0xE + b _0801E002 +_0801DFFE: + movs r0, 0 + movs r1, 0xC +_0801E002: + bl EmitEffectivenessSound + ldrb r0, [r4] + bl MarkBufferBankForExecution + b _0801E054 +_0801E00E: + ldrb r1, [r1] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0801E01E + movs r0, 0 + movs r1, 0xE + b _0801E02A +_0801E01E: + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0801E03C + movs r0, 0 + movs r1, 0xC +_0801E02A: + bl EmitEffectivenessSound + ldr r0, _0801E038 @ =gActiveBank + ldrb r0, [r0] + bl MarkBufferBankForExecution + b _0801E054 + .align 2, 0 +_0801E038: .4byte gActiveBank +_0801E03C: + movs r0, 0x28 + ands r0, r1 + cmp r0, 0 + bne _0801E054 + movs r0, 0 + movs r1, 0xD + bl EmitEffectivenessSound + ldr r0, _0801E064 @ =gActiveBank + ldrb r0, [r0] + bl MarkBufferBankForExecution +_0801E054: + ldr r1, _0801E068 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_0801E05C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801E064: .4byte gActiveBank +_0801E068: .4byte gBattlescriptCurrInstr + thumb_func_end atk0E_effectiveness_sound + + thumb_func_start atk0F_resultmessage +atk0F_resultmessage: @ 801E06C + push {r4-r7,lr} + movs r3, 0 + ldr r0, _0801E0A8 @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + beq _0801E07A + b _0801E20C +_0801E07A: + ldr r1, _0801E0AC @ =gBattleMoveFlags + ldrb r2, [r1] + movs r4, 0x1 + adds r0, r4, 0 + ands r0, r2 + adds r6, r1, 0 + ldr r7, _0801E0B0 @ =gBattleCommunication + cmp r0, 0 + beq _0801E0B8 + movs r0, 0x8 + ands r0, r2 + cmp r0, 0 + beq _0801E09A + ldrb r0, [r7, 0x6] + cmp r0, 0x2 + bls _0801E0B8 +_0801E09A: + ldr r1, _0801E0B4 @ =gMissStrings + ldrb r0, [r7, 0x6] + lsls r0, 1 + adds r0, r1 + ldrh r3, [r0] + strb r4, [r7, 0x7] + b _0801E1F6 + .align 2, 0 +_0801E0A8: .4byte gBattleExecBuffer +_0801E0AC: .4byte gBattleMoveFlags +_0801E0B0: .4byte gBattleCommunication +_0801E0B4: .4byte gMissStrings +_0801E0B8: + movs r0, 0x1 + strb r0, [r7, 0x7] + ldrb r5, [r6] + movs r0, 0xFE + ands r0, r5 + cmp r0, 0x10 + beq _0801E0FC + cmp r0, 0x10 + bgt _0801E0DE + cmp r0, 0x4 + beq _0801E0F8 + cmp r0, 0x4 + bgt _0801E0D8 + cmp r0, 0x2 + beq _0801E0F4 + b _0801E144 +_0801E0D8: + cmp r0, 0x8 + beq _0801E150 + b _0801E144 +_0801E0DE: + cmp r0, 0x40 + beq _0801E100 + cmp r0, 0x40 + bgt _0801E0EE + cmp r0, 0x20 + bne _0801E0EC + b _0801E1F0 +_0801E0EC: + b _0801E144 +_0801E0EE: + cmp r0, 0x80 + beq _0801E104 + b _0801E144 +_0801E0F4: + movs r3, 0xDE + b _0801E1FA +_0801E0F8: + movs r3, 0xDD + b _0801E1FA +_0801E0FC: + movs r3, 0xDA + b _0801E1FA +_0801E100: + movs r3, 0x99 + b _0801E1FA +_0801E104: + ldr r4, _0801E12C @ =gLastUsedItem + ldr r2, _0801E130 @ =gBattleMons + ldr r3, _0801E134 @ =gBankTarget + ldrb r1, [r3] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrh r0, [r0, 0x2E] + strh r0, [r4] + ldr r1, _0801E138 @ =gStringBank + ldrb r0, [r3] + strb r0, [r1] + movs r0, 0x3F + ands r0, r5 + strb r0, [r6] + bl b_movescr_stack_push_cursor + ldr r1, _0801E13C @ =gBattlescriptCurrInstr + ldr r0, _0801E140 @ =BattleScript_HangedOnMsg + b _0801E20A + .align 2, 0 +_0801E12C: .4byte gLastUsedItem +_0801E130: .4byte gBattleMons +_0801E134: .4byte gBankTarget +_0801E138: .4byte gStringBank +_0801E13C: .4byte gBattlescriptCurrInstr +_0801E140: .4byte BattleScript_HangedOnMsg +_0801E144: + adds r2, r6, 0 + ldrb r5, [r2] + movs r0, 0x8 + ands r0, r5 + cmp r0, 0 + beq _0801E154 +_0801E150: + movs r3, 0x1B + b _0801E1FA +_0801E154: + movs r0, 0x10 + ands r0, r5 + cmp r0, 0 + beq _0801E17C + movs r0, 0xEF + ands r0, r5 + movs r1, 0xFD + ands r0, r1 + movs r1, 0xFB + ands r0, r1 + strb r0, [r2] + bl b_movescr_stack_push_cursor + ldr r1, _0801E174 @ =gBattlescriptCurrInstr + ldr r0, _0801E178 @ =BattleScript_OneHitKOMsg + b _0801E20A + .align 2, 0 +_0801E174: .4byte gBattlescriptCurrInstr +_0801E178: .4byte BattleScript_OneHitKOMsg +_0801E17C: + movs r0, 0x40 + ands r0, r5 + cmp r0, 0 + beq _0801E19C + movs r0, 0x3F + ands r0, r5 + strb r0, [r2] + bl b_movescr_stack_push_cursor + ldr r1, _0801E194 @ =gBattlescriptCurrInstr + ldr r0, _0801E198 @ =BattleScript_EnduredMsg + b _0801E20A + .align 2, 0 +_0801E194: .4byte gBattlescriptCurrInstr +_0801E198: .4byte BattleScript_EnduredMsg +_0801E19C: + movs r0, 0x80 + ands r0, r5 + cmp r0, 0 + beq _0801E1E4 + ldr r4, _0801E1CC @ =gLastUsedItem + ldr r2, _0801E1D0 @ =gBattleMons + ldr r3, _0801E1D4 @ =gBankTarget + ldrb r1, [r3] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrh r0, [r0, 0x2E] + strh r0, [r4] + ldr r1, _0801E1D8 @ =gStringBank + ldrb r0, [r3] + strb r0, [r1] + movs r0, 0x3F + ands r0, r5 + strb r0, [r6] + bl b_movescr_stack_push_cursor + ldr r1, _0801E1DC @ =gBattlescriptCurrInstr + ldr r0, _0801E1E0 @ =BattleScript_HangedOnMsg + b _0801E20A + .align 2, 0 +_0801E1CC: .4byte gLastUsedItem +_0801E1D0: .4byte gBattleMons +_0801E1D4: .4byte gBankTarget +_0801E1D8: .4byte gStringBank +_0801E1DC: .4byte gBattlescriptCurrInstr +_0801E1E0: .4byte BattleScript_HangedOnMsg +_0801E1E4: + movs r0, 0x20 + ands r0, r5 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0801E1F4 +_0801E1F0: + movs r3, 0xE5 + b _0801E1FA +_0801E1F4: + strb r0, [r7, 0x7] +_0801E1F6: + cmp r3, 0 + beq _0801E204 +_0801E1FA: + adds r0, r3, 0 + ldr r1, _0801E214 @ =gBankAttacker + ldrb r1, [r1] + bl PrepareStringBattle +_0801E204: + ldr r1, _0801E218 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 +_0801E20A: + str r0, [r1] +_0801E20C: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801E214: .4byte gBankAttacker +_0801E218: .4byte gBattlescriptCurrInstr + thumb_func_end atk0F_resultmessage + + thumb_func_start atk10_printstring +atk10_printstring: @ 801E21C + push {r4,lr} + ldr r0, _0801E24C @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _0801E246 + ldr r4, _0801E250 @ =gBattlescriptCurrInstr + ldr r1, [r4] + ldrb r0, [r1, 0x1] + ldrb r1, [r1, 0x2] + lsls r1, 8 + orrs r0, r1 + ldr r1, _0801E254 @ =gBankAttacker + ldrb r1, [r1] + bl PrepareStringBattle + ldr r0, [r4] + adds r0, 0x3 + str r0, [r4] + ldr r1, _0801E258 @ =gBattleCommunication + movs r0, 0x1 + strb r0, [r1, 0x7] +_0801E246: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801E24C: .4byte gBattleExecBuffer +_0801E250: .4byte gBattlescriptCurrInstr +_0801E254: .4byte gBankAttacker +_0801E258: .4byte gBattleCommunication + thumb_func_end atk10_printstring + + thumb_func_start atk11_printstring_playeronly +atk11_printstring_playeronly: @ 801E25C + push {r4,r5,lr} + ldr r5, _0801E290 @ =gActiveBank + ldr r0, _0801E294 @ =gBankAttacker + ldrb r0, [r0] + strb r0, [r5] + ldr r4, _0801E298 @ =gBattlescriptCurrInstr + ldr r0, [r4] + ldrb r1, [r0, 0x1] + ldrb r0, [r0, 0x2] + lsls r0, 8 + orrs r1, r0 + movs r0, 0 + bl EmitPrintStringPlayerOnly + ldrb r0, [r5] + bl MarkBufferBankForExecution + ldr r0, [r4] + adds r0, 0x3 + str r0, [r4] + ldr r1, _0801E29C @ =gBattleCommunication + movs r0, 0x1 + strb r0, [r1, 0x7] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0801E290: .4byte gActiveBank +_0801E294: .4byte gBankAttacker +_0801E298: .4byte gBattlescriptCurrInstr +_0801E29C: .4byte gBattleCommunication + thumb_func_end atk11_printstring_playeronly + + thumb_func_start atk12_waitmessage +atk12_waitmessage: @ 801E2A0 + push {r4-r6,lr} + ldr r0, _0801E2BC @ =gBattleExecBuffer + ldr r4, [r0] + cmp r4, 0 + bne _0801E2EE + ldr r6, _0801E2C0 @ =gBattleCommunication + ldrb r0, [r6, 0x7] + cmp r0, 0 + bne _0801E2C8 + ldr r1, _0801E2C4 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x3 + str r0, [r1] + b _0801E2EE + .align 2, 0 +_0801E2BC: .4byte gBattleExecBuffer +_0801E2C0: .4byte gBattleCommunication +_0801E2C4: .4byte gBattlescriptCurrInstr +_0801E2C8: + ldr r5, _0801E2F4 @ =gBattlescriptCurrInstr + ldr r2, [r5] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldr r3, _0801E2F8 @ =gPauseCounterBattle + ldrh r0, [r3] + adds r0, 0x1 + strh r0, [r3] + lsls r0, 16 + lsrs r0, 16 + cmp r0, r1 + bcc _0801E2EE + movs r1, 0 + strh r4, [r3] + adds r0, r2, 0x3 + str r0, [r5] + strb r1, [r6, 0x7] +_0801E2EE: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0801E2F4: .4byte gBattlescriptCurrInstr +_0801E2F8: .4byte gPauseCounterBattle + thumb_func_end atk12_waitmessage + + thumb_func_start atk13_printfromtable +atk13_printfromtable: @ 801E2FC + push {r4,r5,lr} + ldr r0, _0801E340 @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _0801E33A + ldr r4, _0801E344 @ =gBattlescriptCurrInstr + ldr r2, [r4] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + ldr r5, _0801E348 @ =gBattleCommunication + ldrb r0, [r5, 0x5] + lsls r0, 1 + adds r1, r0 + ldrh r0, [r1] + ldr r1, _0801E34C @ =gBankAttacker + ldrb r1, [r1] + bl PrepareStringBattle + ldr r0, [r4] + adds r0, 0x5 + str r0, [r4] + movs r0, 0x1 + strb r0, [r5, 0x7] +_0801E33A: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0801E340: .4byte gBattleExecBuffer +_0801E344: .4byte gBattlescriptCurrInstr +_0801E348: .4byte gBattleCommunication +_0801E34C: .4byte gBankAttacker + thumb_func_end atk13_printfromtable + + thumb_func_start atk14_printfromtable_playeronly +atk14_printfromtable_playeronly: @ 801E350 + push {r4-r6,lr} + ldr r0, _0801E3A0 @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _0801E39A + ldr r5, _0801E3A4 @ =gBattlescriptCurrInstr + ldr r2, [r5] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + ldr r6, _0801E3A8 @ =gBattleCommunication + ldrb r0, [r6, 0x5] + lsls r0, 1 + adds r1, r0 + ldr r4, _0801E3AC @ =gActiveBank + ldr r0, _0801E3B0 @ =gBankAttacker + ldrb r0, [r0] + strb r0, [r4] + ldrh r1, [r1] + movs r0, 0 + bl EmitPrintStringPlayerOnly + ldrb r0, [r4] + bl MarkBufferBankForExecution + ldr r0, [r5] + adds r0, 0x5 + str r0, [r5] + movs r0, 0x1 + strb r0, [r6, 0x7] +_0801E39A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0801E3A0: .4byte gBattleExecBuffer +_0801E3A4: .4byte gBattlescriptCurrInstr +_0801E3A8: .4byte gBattleCommunication +_0801E3AC: .4byte gActiveBank +_0801E3B0: .4byte gBankAttacker + thumb_func_end atk14_printfromtable_playeronly + + thumb_func_start sub_801E3B4 +sub_801E3B4: @ 801E3B4 + push {r4,lr} + lsls r0, 24 + lsrs r2, r0, 24 + movs r1, 0 + ldr r0, _0801E3E4 @ =gNoOfAllBanks + ldrb r3, [r0] + cmp r1, r3 + bge _0801E3DA + ldr r4, _0801E3E8 @ =gTurnOrder + ldrb r0, [r4] + cmp r0, r2 + beq _0801E3DA +_0801E3CC: + adds r1, 0x1 + cmp r1, r3 + bge _0801E3DA + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, r2 + bne _0801E3CC +_0801E3DA: + lsls r0, r1, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0801E3E4: .4byte gNoOfAllBanks +_0801E3E8: .4byte gTurnOrder + thumb_func_end sub_801E3B4 + + thumb_func_start sub_801E3EC +sub_801E3EC: @ 801E3EC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + movs r0, 0 + mov r10, r0 + movs r6, 0 + movs r1, 0x1 + str r1, [sp, 0x4] + ldr r1, _0801E430 @ =gBattleCommunication + ldrb r3, [r1, 0x3] + movs r0, 0x40 + ands r0, r3 + adds r7, r1, 0 + cmp r0, 0 + beq _0801E444 + ldr r2, _0801E434 @ =gEffectBank + ldr r0, _0801E438 @ =gBankAttacker + ldrb r0, [r0] + strb r0, [r2] + movs r0, 0xBF + ands r0, r3 + strb r0, [r7, 0x3] + movs r6, 0x40 + ldr r0, _0801E43C @ =0x02000000 + ldr r1, _0801E440 @ =gBankTarget + b _0801E450 + .align 2, 0 +_0801E430: .4byte gBattleCommunication +_0801E434: .4byte gEffectBank +_0801E438: .4byte gBankAttacker +_0801E43C: .4byte 0x02000000 +_0801E440: .4byte gBankTarget +_0801E444: + ldr r2, _0801E538 @ =gEffectBank + ldr r0, _0801E53C @ =gBankTarget + ldrb r0, [r0] + strb r0, [r2] + ldr r0, _0801E540 @ =0x02000000 + ldr r1, _0801E544 @ =gBankAttacker +_0801E450: + ldrb r1, [r1] + ldr r3, _0801E548 @ =0x00016003 + adds r0, r3 + strb r1, [r0] + mov r8, r2 + ldr r2, _0801E54C @ =gBattleMons + mov r0, r8 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x13 + bne _0801E48A + ldr r0, _0801E550 @ =gHitMarker + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 6 + ands r0, r1 + cmp r0, 0 + bne _0801E48A + cmp r4, 0 + bne _0801E48A + ldrb r0, [r7, 0x3] + cmp r0, 0x9 + bhi _0801E48A + bl _0801F5DC +_0801E48A: + mov r1, r8 + ldrb r0, [r1] + bl GetBankIdentity + ldr r2, _0801E554 @ =gSideAffecting + movs r1, 0x1 + ands r1, r0 + lsls r1, 1 + adds r1, r2 + ldrh r1, [r1] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0801E4C4 + ldr r0, _0801E550 @ =gHitMarker + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 6 + ands r0, r1 + cmp r0, 0 + bne _0801E4C4 + cmp r4, 0 + bne _0801E4C4 + ldr r0, _0801E558 @ =gBattleCommunication + ldrb r0, [r0, 0x3] + cmp r0, 0x7 + bhi _0801E4C4 + bl _0801F5DC +_0801E4C4: + ldr r3, _0801E54C @ =gBattleMons + ldr r2, _0801E538 @ =gEffectBank + ldrb r1, [r2] + movs r0, 0x58 + muls r0, r1 + adds r0, r3 + ldrh r0, [r0, 0x28] + mov r8, r2 + mov r9, r3 + cmp r0, 0 + bne _0801E4EA + ldr r0, _0801E558 @ =gBattleCommunication + ldrb r0, [r0, 0x3] + cmp r0, 0xB + beq _0801E4EA + cmp r0, 0x1F + beq _0801E4EA + bl _0801F5DC +_0801E4EA: + mov r2, r8 + ldrb r1, [r2] + movs r0, 0x58 + muls r0, r1 + mov r1, r9 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 17 + ands r0, r1 + cmp r0, 0 + beq _0801E50C + cmp r6, 0x40 + beq _0801E50C + bl _0801F5DC +_0801E50C: + ldr r0, _0801E558 @ =gBattleCommunication + ldrb r1, [r0, 0x3] + adds r7, r0, 0 + cmp r1, 0x6 + bls _0801E518 + b _0801EB4A +_0801E518: + ldr r1, _0801E55C @ =gStatusFlagsForMoveEffects + ldrb r0, [r7, 0x3] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0x10 + bne _0801E528 + b _0801E714 +_0801E528: + cmp r0, 0x10 + bhi _0801E560 + cmp r0, 0x7 + beq _0801E57A + cmp r0, 0x8 + bne _0801E536 + b _0801E630 +_0801E536: + b _0801EA14 + .align 2, 0 +_0801E538: .4byte gEffectBank +_0801E53C: .4byte gBankTarget +_0801E540: .4byte 0x02000000 +_0801E544: .4byte gBankAttacker +_0801E548: .4byte 0x00016003 +_0801E54C: .4byte gBattleMons +_0801E550: .4byte gHitMarker +_0801E554: .4byte gSideAffecting +_0801E558: .4byte gBattleCommunication +_0801E55C: .4byte gStatusFlagsForMoveEffects +_0801E560: + cmp r0, 0x40 + bne _0801E566 + b _0801E888 +_0801E566: + cmp r0, 0x40 + bhi _0801E572 + cmp r0, 0x20 + bne _0801E570 + b _0801E7EA +_0801E570: + b _0801EA14 +_0801E572: + cmp r0, 0x80 + bne _0801E578 + b _0801E8E4 +_0801E578: + b _0801EA14 +_0801E57A: + mov r3, r8 + ldrb r1, [r3] + movs r0, 0x58 + muls r0, r1 + add r0, r9 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x2B + beq _0801E5DC + ldr r0, _0801E5D4 @ =gActiveBank + movs r1, 0 + strb r1, [r0] + ldr r1, _0801E5D8 @ =gNoOfAllBanks + ldrb r3, [r1] + adds r7, r0, 0 + mov r12, r1 + cmp r3, 0 + beq _0801E5E8 + mov r4, r9 + ldr r0, [r4, 0x50] + movs r1, 0x70 + ands r0, r1 + cmp r0, 0 + bne _0801E5E8 + adds r1, r7, 0 + mov r6, r9 + adds r6, 0x50 + movs r5, 0x58 + movs r4, 0x70 +_0801E5B4: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, r3 + bcs _0801E5E8 + ldrb r0, [r7] + muls r0, r5 + adds r0, r6 + ldr r0, [r0] + ands r0, r4 + cmp r0, 0 + beq _0801E5B4 + b _0801E5E8 + .align 2, 0 +_0801E5D4: .4byte gActiveBank +_0801E5D8: .4byte gNoOfAllBanks +_0801E5DC: + ldr r0, _0801E628 @ =gActiveBank + ldr r2, _0801E62C @ =gNoOfAllBanks + ldrb r1, [r2] + strb r1, [r0] + adds r7, r0, 0 + mov r12, r2 +_0801E5E8: + mov r0, r8 + ldrb r2, [r0] + movs r0, 0x58 + adds r1, r2, 0 + muls r1, r0 + mov r0, r9 + adds r0, 0x4C + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + beq _0801E600 + b _0801EA14 +_0801E600: + ldrb r0, [r7] + mov r3, r12 + ldrb r3, [r3] + cmp r0, r3 + beq _0801E60C + b _0801EA14 +_0801E60C: + mov r4, r9 + adds r0, r1, r4 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x48 + bne _0801E61A + b _0801EA14 +_0801E61A: + cmp r0, 0xF + bne _0801E620 + b _0801EA14 +_0801E620: + adds r0, r2, 0 + bl CancelMultiTurnMoves + b _0801EA04 + .align 2, 0 +_0801E628: .4byte gActiveBank +_0801E62C: .4byte gNoOfAllBanks +_0801E630: + mov r2, r8 + ldrb r1, [r2] + movs r0, 0x58 + muls r0, r1 + add r0, r9 + adds r0, 0x20 + ldrb r1, [r0] + cmp r1, 0x11 + bne _0801E688 + cmp r4, 0x1 + beq _0801E64A + cmp r5, 0x80 + bne _0801E688 +_0801E64A: + ldr r0, _0801E678 @ =gLastUsedAbility + strb r1, [r0] + mov r3, r8 + ldrb r0, [r3] + movs r1, 0x11 + bl sub_81074C4 + ldr r4, _0801E67C @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r0, _0801E680 @ =BattleScript_PSNPrevention +_0801E664: + str r0, [r4] + ldr r2, _0801E684 @ =gHitMarker + ldr r1, [r2] + movs r0, 0x80 + lsls r0, 6 + ands r0, r1 + cmp r0, 0 + beq _0801E676 + b _0801E928 +_0801E676: + b _0801E94C + .align 2, 0 +_0801E678: .4byte gLastUsedAbility +_0801E67C: .4byte gBattlescriptCurrInstr +_0801E680: .4byte BattleScript_PSNPrevention +_0801E684: .4byte gHitMarker +_0801E688: + mov r1, r8 + ldrb r0, [r1] + movs r1, 0x58 + muls r0, r1 + add r0, r9 + adds r1, r0, 0 + adds r1, 0x21 + ldrb r1, [r1] + cmp r1, 0x3 + beq _0801E6AC + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0x3 + beq _0801E6AC + cmp r1, 0x8 + beq _0801E6AC + cmp r0, 0x8 + bne _0801E6C6 +_0801E6AC: + ldr r0, _0801E710 @ =gHitMarker + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 6 + ands r0, r1 + cmp r0, 0 + beq _0801E6C6 + cmp r4, 0x1 + bne _0801E6C0 + b _0801E98C +_0801E6C0: + cmp r5, 0x80 + bne _0801E6C6 + b _0801E98C +_0801E6C6: + mov r2, r8 + ldrb r1, [r2] + movs r0, 0x58 + muls r1, r0 + mov r4, r9 + adds r3, r1, r4 + adds r0, r3, 0 + adds r0, 0x21 + ldrb r4, [r0] + cmp r4, 0x3 + bne _0801E6DE + b _0801EA14 +_0801E6DE: + adds r0, 0x1 + ldrb r0, [r0] + cmp r0, 0x3 + bne _0801E6E8 + b _0801EA14 +_0801E6E8: + cmp r4, 0x8 + bne _0801E6EE + b _0801EA14 +_0801E6EE: + cmp r0, 0x8 + bne _0801E6F4 + b _0801EA14 +_0801E6F4: + mov r0, r9 + adds r0, 0x4C + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + beq _0801E702 + b _0801EA14 +_0801E702: + adds r0, r3, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x11 + bne _0801E70E + b _0801EA14 +_0801E70E: + b _0801EA04 + .align 2, 0 +_0801E710: .4byte gHitMarker +_0801E714: + mov r2, r8 + ldrb r1, [r2] + movs r0, 0x58 + muls r0, r1 + add r0, r9 + adds r0, 0x20 + ldrb r1, [r0] + cmp r1, 0x29 + bne _0801E758 + cmp r4, 0x1 + beq _0801E72E + cmp r5, 0x80 + bne _0801E758 +_0801E72E: + ldr r0, _0801E74C @ =gLastUsedAbility + strb r1, [r0] + mov r3, r8 + ldrb r0, [r3] + movs r1, 0x29 + bl sub_81074C4 + ldr r4, _0801E750 @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r0, _0801E754 @ =BattleScript_BRNPrevention + b _0801E664 + .align 2, 0 +_0801E74C: .4byte gLastUsedAbility +_0801E750: .4byte gBattlescriptCurrInstr +_0801E754: .4byte BattleScript_BRNPrevention +_0801E758: + mov r0, r8 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + mov r2, r9 + adds r1, r0, r2 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0xA + beq _0801E778 + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0xA + bne _0801E7A8 +_0801E778: + ldr r0, _0801E79C @ =gHitMarker + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 6 + ands r0, r1 + cmp r0, 0 + beq _0801E7A8 + cmp r4, 0x1 + beq _0801E78E + cmp r5, 0x80 + bne _0801E7A8 +_0801E78E: + ldr r4, _0801E7A0 @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r0, _0801E7A4 @ =BattleScript_BRNPrevention + b _0801E998 + .align 2, 0 +_0801E79C: .4byte gHitMarker +_0801E7A0: .4byte gBattlescriptCurrInstr +_0801E7A4: .4byte BattleScript_BRNPrevention +_0801E7A8: + mov r3, r8 + ldrb r0, [r3] + movs r1, 0x58 + adds r2, r0, 0 + muls r2, r1 + mov r4, r9 + adds r1, r2, r4 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0xA + bne _0801E7C2 + b _0801EA14 +_0801E7C2: + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0xA + bne _0801E7CE + b _0801EA14 +_0801E7CE: + adds r0, r1, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x29 + bne _0801E7DA + b _0801EA14 +_0801E7DA: + mov r0, r9 + adds r0, 0x4C + adds r0, r2, r0 + ldr r0, [r0] + cmp r0, 0 + beq _0801E7E8 + b _0801EA14 +_0801E7E8: + b _0801EA04 +_0801E7EA: + 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 _0801E826 + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0x4D + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + cmp r0, 0 + bne _0801E826 + ldr r0, _0801E87C @ =gBattleWeather + ldrh r1, [r0] + movs r0, 0x60 + ands r0, r1 + cmp r0, 0 + beq _0801E826 + movs r1, 0 + str r1, [sp, 0x4] +_0801E826: + ldr r4, _0801E880 @ =gBattleMons + ldr r0, _0801E884 @ =gEffectBank + ldrb r3, [r0] + movs r0, 0x58 + adds r2, r3, 0 + muls r2, r0 + adds r1, r2, r4 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0xF + bne _0801E840 + b _0801EA14 +_0801E840: + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0xF + bne _0801E84C + b _0801EA14 +_0801E84C: + adds r0, r4, 0 + adds r0, 0x4C + adds r0, r2, r0 + ldr r0, [r0] + cmp r0, 0 + beq _0801E85A + b _0801EA14 +_0801E85A: + ldr r2, [sp, 0x4] + cmp r2, 0 + bne _0801E862 + b _0801EA14 +_0801E862: + adds r0, r1, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x28 + bne _0801E86E + b _0801EA14 +_0801E86E: + adds r0, r3, 0 + bl CancelMultiTurnMoves + movs r3, 0x1 + mov r10, r3 + b _0801EA14 + .align 2, 0 +_0801E87C: .4byte gBattleWeather +_0801E880: .4byte gBattleMons +_0801E884: .4byte gEffectBank +_0801E888: + mov r0, r8 + ldrb r1, [r0] + movs r0, 0x58 + muls r1, r0 + mov r2, r9 + adds r0, r1, r2 + adds r0, 0x20 + ldrb r2, [r0] + cmp r2, 0x7 + bne _0801E8D0 + cmp r4, 0x1 + beq _0801E8A6 + cmp r5, 0x80 + beq _0801E8A6 + b _0801EA14 +_0801E8A6: + ldr r0, _0801E8C4 @ =gLastUsedAbility + strb r2, [r0] + mov r3, r8 + ldrb r0, [r3] + movs r1, 0x7 + bl sub_81074C4 + ldr r4, _0801E8C8 @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r0, _0801E8CC @ =BattleScript_PRLZPrevention + b _0801E664 + .align 2, 0 +_0801E8C4: .4byte gLastUsedAbility +_0801E8C8: .4byte gBattlescriptCurrInstr +_0801E8CC: .4byte BattleScript_PRLZPrevention +_0801E8D0: + mov r0, r9 + adds r0, 0x4C + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + beq _0801E8DE + b _0801EA14 +_0801E8DE: + movs r4, 0x1 + mov r10, r4 + b _0801EA14 +_0801E8E4: + mov r0, r8 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + add r0, r9 + adds r0, 0x20 + ldrb r1, [r0] + cmp r1, 0x11 + bne _0801E952 + cmp r4, 0x1 + beq _0801E8FE + cmp r5, 0x80 + bne _0801E952 +_0801E8FE: + ldr r0, _0801E938 @ =gLastUsedAbility + strb r1, [r0] + mov r1, r8 + ldrb r0, [r1] + movs r1, 0x11 + bl sub_81074C4 + ldr r4, _0801E93C @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r0, _0801E940 @ =BattleScript_PSNPrevention + str r0, [r4] + ldr r2, _0801E944 @ =gHitMarker + ldr r1, [r2] + movs r0, 0x80 + lsls r0, 6 + ands r0, r1 + cmp r0, 0 + beq _0801E94C +_0801E928: + movs r0, 0x1 + strb r0, [r7, 0x5] + ldr r0, _0801E948 @ =0xffffdfff + ands r1, r0 + str r1, [r2] + bl _0801F5FA + .align 2, 0 +_0801E938: .4byte gLastUsedAbility +_0801E93C: .4byte gBattlescriptCurrInstr +_0801E940: .4byte BattleScript_PSNPrevention +_0801E944: .4byte gHitMarker +_0801E948: .4byte 0xffffdfff +_0801E94C: + strb r0, [r7, 0x5] + bl _0801F5FA +_0801E952: + mov r2, r8 + ldrb r0, [r2] + movs r1, 0x58 + muls r0, r1 + add r0, r9 + adds r1, r0, 0 + adds r1, 0x21 + ldrb r1, [r1] + cmp r1, 0x3 + beq _0801E976 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0x3 + beq _0801E976 + cmp r1, 0x8 + beq _0801E976 + cmp r0, 0x8 + bne _0801E9B4 +_0801E976: + ldr r0, _0801E9A4 @ =gHitMarker + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 6 + ands r0, r1 + cmp r0, 0 + beq _0801E9B4 + cmp r4, 0x1 + beq _0801E98C + cmp r5, 0x80 + bne _0801E9B4 +_0801E98C: + ldr r4, _0801E9A8 @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r0, _0801E9AC @ =BattleScript_PSNPrevention +_0801E998: + str r0, [r4] + ldr r1, _0801E9B0 @ =gBattleCommunication + movs r0, 0x2 + strb r0, [r1, 0x5] + bl _0801F5FA + .align 2, 0 +_0801E9A4: .4byte gHitMarker +_0801E9A8: .4byte gBattlescriptCurrInstr +_0801E9AC: .4byte BattleScript_PSNPrevention +_0801E9B0: .4byte gBattleCommunication +_0801E9B4: + mov r3, r8 + ldrb r0, [r3] + movs r6, 0x58 + muls r0, r6 + mov r2, r9 + adds r2, 0x4C + adds r5, r0, r2 + ldr r4, [r5] + cmp r4, 0 + bne _0801EA14 + mov r3, r9 + adds r1, r0, r3 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r3, [r0] + cmp r3, 0x3 + beq _0801EA0A + adds r0, 0x1 + ldrb r0, [r0] + cmp r0, 0x3 + beq _0801EA0A + cmp r3, 0x8 + beq _0801EA0A + cmp r0, 0x8 + beq _0801EA0A + adds r0, r1, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x11 + beq _0801EA14 + mov r4, r8 + ldrb r0, [r4] + adds r1, r0, 0 + muls r1, r6 + adds r1, r2 + ldr r0, [r1] + movs r2, 0x9 + negs r2, r2 + ands r0, r2 + str r0, [r1] +_0801EA04: + movs r0, 0x1 + mov r10, r0 + b _0801EA14 +_0801EA0A: + ldr r0, _0801EA58 @ =gBattleMoveFlags + ldrb r1, [r0] + movs r2, 0x8 + orrs r1, r2 + strb r1, [r0] +_0801EA14: + mov r1, r10 + cmp r1, 0x1 + beq _0801EA1C + b _0801EB3C +_0801EA1C: + ldr r0, _0801EA5C @ =gBattlescriptCurrInstr + ldr r0, [r0] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r1, _0801EA60 @ =gStatusFlagsForMoveEffects + ldr r0, _0801EA64 @ =gBattleCommunication + ldrb r0, [r0, 0x3] + lsls r0, 2 + adds r0, r1 + ldr r3, [r0] + cmp r3, 0x7 + bne _0801EA70 + bl Random + ldr r2, _0801EA68 @ =gBattleMons + ldr r1, _0801EA6C @ =gEffectBank + ldrb r3, [r1] + movs r1, 0x58 + muls r3, r1 + adds r2, 0x4C + adds r3, r2 + movs r1, 0x3 + ands r1, r0 + adds r1, 0x2 + ldr r0, [r3] + orrs r0, r1 + str r0, [r3] + b _0801EA84 + .align 2, 0 +_0801EA58: .4byte gBattleMoveFlags +_0801EA5C: .4byte gBattlescriptCurrInstr +_0801EA60: .4byte gStatusFlagsForMoveEffects +_0801EA64: .4byte gBattleCommunication +_0801EA68: .4byte gBattleMons +_0801EA6C: .4byte gEffectBank +_0801EA70: + ldr r2, _0801EAD4 @ =gBattleMons + ldr r0, _0801EAD8 @ =gEffectBank + ldrb r1, [r0] + movs r0, 0x58 + muls r1, r0 + adds r2, 0x4C + adds r1, r2 + ldr r0, [r1] + orrs r0, r3 + str r0, [r1] +_0801EA84: + ldr r2, _0801EADC @ =gBattlescriptCurrInstr + ldr r1, _0801EAE0 @ =gMoveEffectBS_Ptrs + ldr r5, _0801EAE4 @ =gBattleCommunication + ldrb r0, [r5, 0x3] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + str r0, [r2] + ldr r4, _0801EAE8 @ =gActiveBank + ldr r1, _0801EAD8 @ =gEffectBank + ldrb r0, [r1] + strb r0, [r4] + ldrb r1, [r1] + movs r0, 0x58 + muls r0, r1 + ldr r1, _0801EAEC @ =gUnknown_02024ACC + adds r0, r1 + str r0, [sp] + movs r0, 0 + movs r1, 0x28 + movs r2, 0 + movs r3, 0x4 + bl EmitSetAttributes + ldrb r0, [r4] + bl MarkBufferBankForExecution + ldr r2, _0801EAF0 @ =gHitMarker + ldr r1, [r2] + movs r0, 0x80 + lsls r0, 6 + ands r0, r1 + cmp r0, 0 + beq _0801EAF8 + movs r0, 0x1 + strb r0, [r5, 0x5] + ldr r0, _0801EAF4 @ =0xffffdfff + ands r1, r0 + str r1, [r2] + b _0801EAFA + .align 2, 0 +_0801EAD4: .4byte gBattleMons +_0801EAD8: .4byte gEffectBank +_0801EADC: .4byte gBattlescriptCurrInstr +_0801EAE0: .4byte gMoveEffectBS_Ptrs +_0801EAE4: .4byte gBattleCommunication +_0801EAE8: .4byte gActiveBank +_0801EAEC: .4byte gUnknown_02024ACC +_0801EAF0: .4byte gHitMarker +_0801EAF4: .4byte 0xffffdfff +_0801EAF8: + strb r0, [r5, 0x5] +_0801EAFA: + ldr r0, _0801EB2C @ =gBattleCommunication + ldrb r2, [r0, 0x3] + adds r7, r0, 0 + cmp r2, 0x2 + beq _0801EB14 + cmp r2, 0x6 + beq _0801EB14 + cmp r2, 0x5 + beq _0801EB14 + cmp r2, 0x3 + beq _0801EB14 + bl _0801F5FA +_0801EB14: + ldr r0, _0801EB30 @ =0x02000000 + ldrb r1, [r7, 0x3] + ldr r2, _0801EB34 @ =0x000160ca + adds r0, r2 + strb r1, [r0] + ldr r2, _0801EB38 @ =gHitMarker + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 7 + bl _0801F4F2 + .align 2, 0 +_0801EB2C: .4byte gBattleCommunication +_0801EB30: .4byte 0x02000000 +_0801EB34: .4byte 0x000160ca +_0801EB38: .4byte gHitMarker +_0801EB3C: + mov r3, r10 + cmp r3, 0 + beq _0801EB46 + bl _0801F5FA +_0801EB46: + bl _0801F5DC +_0801EB4A: + mov r0, r8 + ldrb r1, [r0] + movs r0, 0x58 + muls r1, r0 + mov r0, r9 + adds r0, 0x50 + adds r1, r0 + ldr r2, _0801EB84 @ =gStatusFlagsForMoveEffects + ldrb r3, [r7, 0x3] + lsls r0, r3, 2 + adds r0, r2 + ldr r1, [r1] + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _0801EB6E + bl _0801F5DC +_0801EB6E: + subs r0, r3, 0x7 + cmp r0, 0x34 + bls _0801EB78 + bl _0801F5FA +_0801EB78: + lsls r0, 2 + ldr r1, _0801EB88 @ =_0801EB8C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801EB84: .4byte gStatusFlagsForMoveEffects +_0801EB88: .4byte _0801EB8C + .align 2, 0 +_0801EB8C: + .4byte _0801EC60 + .4byte _0801ECD4 + .4byte _0801EE4C + .4byte _0801ED60 + .4byte _0801EDDC + .4byte _0801EE84 + .4byte _0801EECC + .4byte _0801EFA8 + .4byte _0801EFEC + .4byte _0801EFEC + .4byte _0801EFEC + .4byte _0801EFEC + .4byte _0801EFEC + .4byte _0801EFEC + .4byte _0801EFEC + .4byte _0801F040 + .4byte _0801F040 + .4byte _0801F040 + .4byte _0801F040 + .4byte _0801F040 + .4byte _0801F040 + .4byte _0801F040 + .4byte _0801F13C + .4byte _0801F184 + .4byte _0801F1A4 + .4byte _0801F364 + .4byte _0801F3A0 + .4byte _0801F3BC + .4byte _0801F3D4 + .4byte _0801F3EC + .4byte _0801F44C + .4byte _0801F464 + .4byte _0801F094 + .4byte _0801F094 + .4byte _0801F094 + .4byte _0801F094 + .4byte _0801F094 + .4byte _0801F094 + .4byte _0801F094 + .4byte _0801F0E8 + .4byte _0801F0E8 + .4byte _0801F0E8 + .4byte _0801F0E8 + .4byte _0801F0E8 + .4byte _0801F0E8 + .4byte _0801F0E8 + .4byte _0801F4A8 + .4byte _0801F500 + .4byte _0801F5FA + .4byte _0801F5FA + .4byte _0801F5FA + .4byte _0801F5FA + .4byte _0801F5EC +_0801EC60: + mov r1, r8 + ldrb r0, [r1] + movs r5, 0x58 + adds r1, r0, 0 + muls r1, r5 + mov r2, r9 + adds r0, r1, r2 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x14 + bne _0801EC7A + bl _0801F5DC +_0801EC7A: + mov r4, r9 + adds r4, 0x50 + adds r0, r1, r4 + ldr r0, [r0] + movs r1, 0x7 + ands r0, r1 + cmp r0, 0 + beq _0801EC8E + bl _0801F5DC +_0801EC8E: + bl Random + mov r3, r8 + ldrb r1, [r3] + adds r2, r1, 0 + muls r2, r5 + adds r2, r4 + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r0 + lsrs r1, 16 + adds r1, 0x2 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + ldr r4, _0801ECC8 @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r1, _0801ECCC @ =gMoveEffectBS_Ptrs + ldr r0, _0801ECD0 @ =gBattleCommunication + ldrb r0, [r0, 0x3] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _0801F5F8 + .align 2, 0 +_0801ECC8: .4byte gBattlescriptCurrInstr +_0801ECCC: .4byte gMoveEffectBS_Ptrs +_0801ECD0: .4byte gBattleCommunication +_0801ECD4: + mov r0, r8 + ldrb r2, [r0] + movs r6, 0x58 + adds r0, r2, 0 + muls r0, r6 + add r0, r9 + adds r0, 0x20 + ldrb r1, [r0] + cmp r1, 0x27 + bne _0801ED18 + cmp r4, 0x1 + beq _0801ECF4 + cmp r5, 0x80 + beq _0801ECF4 + bl _0801F5DC +_0801ECF4: + ldr r0, _0801ED0C @ =gLastUsedAbility + strb r1, [r0] + mov r1, r8 + ldrb r0, [r1] + movs r1, 0x27 + bl sub_81074C4 + ldr r1, _0801ED10 @ =gBattlescriptCurrInstr + ldr r0, _0801ED14 @ =BattleScript_FlinchPrevention + str r0, [r1] + bl _0801F5FA + .align 2, 0 +_0801ED0C: .4byte gLastUsedAbility +_0801ED10: .4byte gBattlescriptCurrInstr +_0801ED14: .4byte BattleScript_FlinchPrevention +_0801ED18: + adds r0, r2, 0 + bl sub_801E3B4 + ldr r1, _0801ED54 @ =gCurrentMoveTurn + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bhi _0801ED2E + bl _0801F5DC +_0801ED2E: + mov r2, r8 + ldrb r0, [r2] + adds r2, r0, 0 + muls r2, r6 + mov r0, r9 + adds r0, 0x50 + adds r2, r0 + ldr r1, _0801ED58 @ =gStatusFlagsForMoveEffects + ldr r0, _0801ED5C @ =gBattleCommunication + ldrb r0, [r0, 0x3] + lsls r0, 2 + adds r0, r1 + ldr r1, [r2] + ldr r0, [r0] + orrs r1, r0 + str r1, [r2] + bl _0801F5DC + .align 2, 0 +_0801ED54: .4byte gCurrentMoveTurn +_0801ED58: .4byte gStatusFlagsForMoveEffects +_0801ED5C: .4byte gBattleCommunication +_0801ED60: + mov r3, r8 + ldrb r0, [r3] + movs r5, 0x58 + muls r0, r5 + mov r4, r9 + adds r4, 0x50 + adds r2, r0, r4 + ldr r1, [r2] + movs r0, 0x70 + ands r0, r1 + cmp r0, 0 + beq _0801ED7C + bl _0801F5DC +_0801ED7C: + movs r0, 0x80 + lsls r0, 5 + orrs r1, r0 + str r1, [r2] + ldr r1, _0801EDC8 @ =gLockedMove + ldrb r0, [r3] + lsls r0, 1 + adds r0, r1 + ldr r1, _0801EDCC @ =gCurrentMove + ldrh r1, [r1] + strh r1, [r0] + bl Random + mov r2, r8 + ldrb r1, [r2] + adds r2, r1, 0 + muls r2, r5 + adds r2, r4 + movs r1, 0x3 + ands r1, r0 + adds r1, 0x2 + lsls r1, 4 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + ldr r4, _0801EDD0 @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r1, _0801EDD4 @ =gMoveEffectBS_Ptrs + ldr r0, _0801EDD8 @ =gBattleCommunication + ldrb r0, [r0, 0x3] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _0801F5F8 + .align 2, 0 +_0801EDC8: .4byte gLockedMove +_0801EDCC: .4byte gCurrentMove +_0801EDD0: .4byte gBattlescriptCurrInstr +_0801EDD4: .4byte gMoveEffectBS_Ptrs +_0801EDD8: .4byte gBattleCommunication +_0801EDDC: + ldr r5, _0801EE30 @ =gBankAttacker + ldrb r0, [r5] + bl GetBankIdentity + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + bne _0801EE14 + ldr r4, _0801EE34 @ =gPaydayMoney + ldrh r3, [r4] + ldr r2, _0801EE38 @ =gBattleMons + ldrb r1, [r5] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x2A + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + adds r0, r3, r0 + strh r0, [r4] + lsls r0, 16 + lsrs r0, 16 + cmp r3, r0 + bls _0801EE14 + ldr r3, _0801EE3C @ =0x0000ffff + adds r0, r3, 0 + strh r0, [r4] +_0801EE14: + ldr r4, _0801EE40 @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r1, _0801EE44 @ =gMoveEffectBS_Ptrs + ldr r0, _0801EE48 @ =gBattleCommunication + ldrb r0, [r0, 0x3] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + bl _0801F5F8 + .align 2, 0 +_0801EE30: .4byte gBankAttacker +_0801EE34: .4byte gPaydayMoney +_0801EE38: .4byte gBattleMons +_0801EE3C: .4byte 0x0000ffff +_0801EE40: .4byte gBattlescriptCurrInstr +_0801EE44: .4byte gMoveEffectBS_Ptrs +_0801EE48: .4byte gBattleCommunication +_0801EE4C: + mov r4, r8 + ldrb r1, [r4] + movs r0, 0x58 + muls r0, r1 + mov r1, r9 + adds r1, 0x4C + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + beq _0801EE62 + b _0801F5DC +_0801EE62: + bl Random + ldr r4, _0801EE80 @ =gBattleCommunication + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x3 + bl __umodsi3 + adds r0, 0x3 + strb r0, [r4, 0x3] + movs r0, 0 + movs r1, 0 + bl sub_801E3EC + b _0801F5FA + .align 2, 0 +_0801EE80: .4byte gBattleCommunication +_0801EE84: + mov r0, r8 + ldrb r1, [r0] + movs r0, 0x58 + adds r2, r1, 0 + muls r2, r0 + mov r0, r9 + adds r0, 0x50 + adds r2, r0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 5 + orrs r0, r1 + str r0, [r2] + ldr r1, _0801EEC0 @ =gLockedMove + mov r2, r8 + ldrb r0, [r2] + lsls r0, 1 + adds r0, r1 + ldr r1, _0801EEC4 @ =gCurrentMove + ldrh r1, [r1] + strh r1, [r0] + ldr r0, _0801EEC8 @ =gProtectStructs + ldrb r1, [r2] + lsls r1, 4 + adds r1, r0 + ldrb r0, [r1, 0x1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1, 0x1] + b _0801F5DC + .align 2, 0 +_0801EEC0: .4byte gLockedMove +_0801EEC4: .4byte gCurrentMove +_0801EEC8: .4byte gProtectStructs +_0801EECC: + mov r3, r8 + ldrb r0, [r3] + movs r6, 0x58 + muls r0, r6 + mov r4, r9 + adds r4, 0x50 + adds r0, r4 + ldr r5, [r0] + movs r0, 0xE0 + lsls r0, 8 + ands r5, r0 + cmp r5, 0 + beq _0801EEE8 + b _0801F5DC +_0801EEE8: + bl Random + mov r2, r8 + ldrb r1, [r2] + adds r2, r1, 0 + muls r2, r6 + adds r2, r4 + movs r1, 0x3 + ands r1, r0 + adds r1, 0x3 + lsls r1, 13 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + ldr r2, _0801EF80 @ =0x02000000 + mov r3, r8 + ldrb r0, [r3] + lsls r0, 1 + ldr r4, _0801EF84 @ =0x00016004 + adds r0, r4 + adds r0, r2 + ldr r6, _0801EF88 @ =gCurrentMove + ldrh r1, [r6] + strb r1, [r0] + ldrb r0, [r3] + lsls r0, 1 + ldr r1, _0801EF8C @ =0x00016005 + adds r0, r1 + adds r0, r2 + ldrh r1, [r6] + lsrs r1, 8 + strb r1, [r0] + ldrb r0, [r3] + ldr r3, _0801EF90 @ =0x00016020 + adds r0, r3 + adds r0, r2 + ldr r1, _0801EF94 @ =gBankAttacker + ldrb r1, [r1] + strb r1, [r0] + ldr r4, _0801EF98 @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r1, _0801EF9C @ =gMoveEffectBS_Ptrs + ldr r2, _0801EFA0 @ =gBattleCommunication + ldrb r0, [r2, 0x3] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + str r0, [r4] + strb r5, [r2, 0x5] + ldr r1, _0801EFA4 @ =gTrappingMoves + ldrh r0, [r1] + ldrh r4, [r6] + cmp r0, r4 + bne _0801EF5C + b _0801F5FA +_0801EF5C: + adds r3, r1, 0 + adds r1, r6, 0 +_0801EF60: + ldrb r0, [r2, 0x5] + adds r0, 0x1 + strb r0, [r2, 0x5] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bls _0801EF70 + b _0801F5FA +_0801EF70: + ldrb r0, [r2, 0x5] + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + ldrh r4, [r1] + cmp r0, r4 + bne _0801EF60 + b _0801F5FA + .align 2, 0 +_0801EF80: .4byte 0x02000000 +_0801EF84: .4byte 0x00016004 +_0801EF88: .4byte gCurrentMove +_0801EF8C: .4byte 0x00016005 +_0801EF90: .4byte 0x00016020 +_0801EF94: .4byte gBankAttacker +_0801EF98: .4byte gBattlescriptCurrInstr +_0801EF9C: .4byte gMoveEffectBS_Ptrs +_0801EFA0: .4byte gBattleCommunication +_0801EFA4: .4byte gTrappingMoves +_0801EFA8: + ldr r1, _0801EFD8 @ =gBattleMoveDamage + ldr r0, _0801EFDC @ =gHP_dealt + ldr r0, [r0] + cmp r0, 0 + bge _0801EFB4 + adds r0, 0x3 +_0801EFB4: + asrs r0, 2 + str r0, [r1] + cmp r0, 0 + bne _0801EFC0 + movs r0, 0x1 + str r0, [r1] +_0801EFC0: + ldr r4, _0801EFE0 @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r1, _0801EFE4 @ =gMoveEffectBS_Ptrs + ldr r0, _0801EFE8 @ =gBattleCommunication + ldrb r0, [r0, 0x3] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + b _0801F5F8 + .align 2, 0 +_0801EFD8: .4byte gBattleMoveDamage +_0801EFDC: .4byte gHP_dealt +_0801EFE0: .4byte gBattlescriptCurrInstr +_0801EFE4: .4byte gMoveEffectBS_Ptrs +_0801EFE8: .4byte gBattleCommunication +_0801EFEC: + ldrb r1, [r7, 0x3] + adds r1, 0xF2 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x10 + adds r2, r6, 0 + movs r3, 0 + bl sub_8025E20 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0 + beq _0801F008 + b _0801F5DC +_0801F008: + ldr r2, _0801F02C @ =0x02000000 + ldrb r1, [r7, 0x3] + movs r0, 0x3F + ands r0, r1 + ldr r4, _0801F030 @ =0x000160a4 + adds r1, r2, r4 + strb r0, [r1] + ldr r0, _0801F034 @ =0x000160a5 + adds r2, r0 + strb r3, [r2] + ldr r4, _0801F038 @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r0, _0801F03C @ =BattleScript_StatUp + b _0801F5F8 + .align 2, 0 +_0801F02C: .4byte 0x02000000 +_0801F030: .4byte 0x000160a4 +_0801F034: .4byte 0x000160a5 +_0801F038: .4byte gBattlescriptCurrInstr +_0801F03C: .4byte BattleScript_StatUp +_0801F040: + movs r0, 0x70 + negs r0, r0 + ldrb r1, [r7, 0x3] + adds r1, 0xEB + lsls r1, 24 + lsrs r1, 24 + adds r2, r6, 0 + movs r3, 0 + bl sub_8025E20 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0 + beq _0801F05E + b _0801F5DC +_0801F05E: + ldr r2, _0801F080 @ =0x02000000 + ldrb r1, [r7, 0x3] + movs r0, 0x3F + ands r0, r1 + ldr r4, _0801F084 @ =0x000160a4 + adds r1, r2, r4 + strb r0, [r1] + ldr r0, _0801F088 @ =0x000160a5 + adds r2, r0 + strb r3, [r2] + ldr r4, _0801F08C @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r0, _0801F090 @ =BattleScript_StatDown + b _0801F5F8 + .align 2, 0 +_0801F080: .4byte 0x02000000 +_0801F084: .4byte 0x000160a4 +_0801F088: .4byte 0x000160a5 +_0801F08C: .4byte gBattlescriptCurrInstr +_0801F090: .4byte BattleScript_StatDown +_0801F094: + ldrb r1, [r7, 0x3] + adds r1, 0xDA + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x20 + adds r2, r6, 0 + movs r3, 0 + bl sub_8025E20 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0 + beq _0801F0B0 + b _0801F5DC +_0801F0B0: + ldr r2, _0801F0D4 @ =0x02000000 + ldrb r1, [r7, 0x3] + movs r0, 0x3F + ands r0, r1 + ldr r4, _0801F0D8 @ =0x000160a4 + adds r1, r2, r4 + strb r0, [r1] + ldr r0, _0801F0DC @ =0x000160a5 + adds r2, r0 + strb r3, [r2] + ldr r4, _0801F0E0 @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r0, _0801F0E4 @ =BattleScript_StatUp + b _0801F5F8 + .align 2, 0 +_0801F0D4: .4byte 0x02000000 +_0801F0D8: .4byte 0x000160a4 +_0801F0DC: .4byte 0x000160a5 +_0801F0E0: .4byte gBattlescriptCurrInstr +_0801F0E4: .4byte BattleScript_StatUp +_0801F0E8: + movs r0, 0x60 + negs r0, r0 + ldrb r1, [r7, 0x3] + adds r1, 0xD3 + lsls r1, 24 + lsrs r1, 24 + adds r2, r6, 0 + movs r3, 0 + bl sub_8025E20 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0 + beq _0801F106 + b _0801F5DC +_0801F106: + ldr r2, _0801F128 @ =0x02000000 + ldrb r1, [r7, 0x3] + movs r0, 0x3F + ands r0, r1 + ldr r4, _0801F12C @ =0x000160a4 + adds r1, r2, r4 + strb r0, [r1] + ldr r0, _0801F130 @ =0x000160a5 + adds r2, r0 + strb r3, [r2] + ldr r4, _0801F134 @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r0, _0801F138 @ =BattleScript_StatDown + b _0801F5F8 + .align 2, 0 +_0801F128: .4byte 0x02000000 +_0801F12C: .4byte 0x000160a4 +_0801F130: .4byte 0x000160a5 +_0801F134: .4byte gBattlescriptCurrInstr +_0801F138: .4byte BattleScript_StatDown +_0801F13C: + mov r2, r8 + ldrb r1, [r2] + movs r0, 0x58 + adds r2, r1, 0 + muls r2, r0 + mov r0, r9 + adds r0, 0x50 + adds r2, r0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 15 + orrs r0, r1 + str r0, [r2] + ldr r2, _0801F178 @ =gDisableStructs + mov r3, r8 + ldrb r1, [r3] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x2 + strb r1, [r0, 0x19] + ldr r1, _0801F17C @ =gLockedMove + ldrb r0, [r3] + lsls r0, 1 + adds r0, r1 + ldr r1, _0801F180 @ =gCurrentMove + ldrh r1, [r1] + strh r1, [r0] + b _0801F5DC + .align 2, 0 +_0801F178: .4byte gDisableStructs +_0801F17C: .4byte gLockedMove +_0801F180: .4byte gCurrentMove +_0801F184: + ldr r0, _0801F1A0 @ =gBankAttacker + ldrb r1, [r0] + movs r0, 0x58 + adds r2, r1, 0 + muls r2, r0 + mov r0, r9 + adds r0, 0x50 + adds r2, r0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 16 +_0801F19A: + orrs r0, r1 + str r0, [r2] + b _0801F5DC + .align 2, 0 +_0801F1A0: .4byte gBankAttacker +_0801F1A4: + ldr r4, _0801F254 @ =gBankAttacker + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0801F1D8 + ldr r0, _0801F258 @ =gBattleTypeFlags + ldrh r1, [r0] + ldr r0, _0801F25C @ =0x00000902 + ands r0, r1 + cmp r0, 0 + bne _0801F214 + ldr r0, _0801F260 @ =gTrainerBattleOpponent + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 3 + cmp r1, r0 + beq _0801F1D8 + b _0801F5DC +_0801F1D8: + ldr r0, _0801F258 @ =gBattleTypeFlags + ldrh r1, [r0] + ldr r0, _0801F25C @ =0x00000902 + ands r0, r1 + cmp r0, 0 + bne _0801F214 + ldr r0, _0801F260 @ =gTrainerBattleOpponent + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 3 + cmp r1, r0 + beq _0801F214 + ldr r0, _0801F264 @ =gWishFutureKnock + adds r0, 0x29 + adds r0, r6, r0 + ldrb r1, [r0] + ldr r3, _0801F268 @ =gBitTable + ldr r2, _0801F26C @ =gBattlePartyID + ldr r0, _0801F254 @ =gBankAttacker + ldrb r0, [r0] + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + lsls r0, 2 + adds r0, r3 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _0801F214 + b _0801F5DC +_0801F214: + ldr r2, _0801F270 @ =gBattleMons + ldr r1, _0801F274 @ =gBankTarget + ldrb r0, [r1] + movs r3, 0x58 + muls r0, r3 + adds r4, r0, r2 + ldrh r0, [r4, 0x2E] + adds r7, r1, 0 + mov r9, r2 + cmp r0, 0 + beq _0801F284 + adds r0, r4, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x3C + bne _0801F284 + ldr r1, _0801F278 @ =gBattlescriptCurrInstr + ldr r0, _0801F27C @ =BattleScript_NoItemSteal + str r0, [r1] + ldr r1, _0801F280 @ =gLastUsedAbility + ldrb r0, [r7] + muls r0, r3 + add r0, r9 + adds r0, 0x20 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + ldrb r1, [r1] + bl sub_81074C4 + b _0801F5FA + .align 2, 0 +_0801F254: .4byte gBankAttacker +_0801F258: .4byte gBattleTypeFlags +_0801F25C: .4byte 0x00000902 +_0801F260: .4byte gTrainerBattleOpponent +_0801F264: .4byte gWishFutureKnock +_0801F268: .4byte gBitTable +_0801F26C: .4byte gBattlePartyID +_0801F270: .4byte gBattleMons +_0801F274: .4byte gBankTarget +_0801F278: .4byte gBattlescriptCurrInstr +_0801F27C: .4byte BattleScript_NoItemSteal +_0801F280: .4byte gLastUsedAbility +_0801F284: + ldr r4, _0801F340 @ =gBankAttacker + mov r10, r4 + ldrb r1, [r4] + movs r0, 0x58 + mov r8, r0 + mov r0, r8 + muls r0, r1 + add r0, r9 + ldrh r3, [r0, 0x2E] + cmp r3, 0 + beq _0801F29C + b _0801F5DC +_0801F29C: + ldrb r0, [r7] + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + add r0, r9 + ldrh r2, [r0, 0x2E] + adds r0, r2, 0 + cmp r0, 0xAF + bne _0801F2B0 + b _0801F5DC +_0801F2B0: + cmp r0, 0 + bne _0801F2B6 + b _0801F5DC +_0801F2B6: + lsls r0, r1, 1 + ldr r5, _0801F344 @ =0x020160f0 + adds r0, r5 + ldr r1, _0801F348 @ =gLastUsedItem + strh r2, [r0] + strh r2, [r1] + ldrb r0, [r7] + mov r4, r8 + muls r4, r0 + adds r0, r4, 0 + add r0, r9 + movs r6, 0 + strh r3, [r0, 0x2E] + ldr r4, _0801F34C @ =gActiveBank + mov r2, r10 + ldrb r0, [r2] + strb r0, [r4] + str r1, [sp] + movs r0, 0 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl EmitSetAttributes + mov r3, r10 + ldrb r0, [r3] + bl MarkBufferBankForExecution + ldrb r0, [r7] + strb r0, [r4] + ldrb r0, [r7] + mov r4, r8 + muls r4, r0 + adds r0, r4, 0 + mov r1, r9 + adds r1, 0x2E + adds r0, r1 + str r0, [sp] + movs r0, 0 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl EmitSetAttributes + ldrb r0, [r7] + bl MarkBufferBankForExecution + ldr r4, _0801F350 @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r0, _0801F354 @ =BattleScript_ItemSteal + str r0, [r4] + ldr r0, _0801F358 @ =0xfffe9f10 + adds r5, r0 + ldrb r0, [r7] + lsls r0, 1 + ldr r1, _0801F35C @ =0x000160e8 + adds r0, r1 + adds r0, r5 + strb r6, [r0] + ldrb r0, [r7] + lsls r0, 1 + ldr r2, _0801F360 @ =0x000160e9 + adds r0, r2 + adds r0, r5 + strb r6, [r0] + b _0801F5FA + .align 2, 0 +_0801F340: .4byte gBankAttacker +_0801F344: .4byte 0x020160f0 +_0801F348: .4byte gLastUsedItem +_0801F34C: .4byte gActiveBank +_0801F350: .4byte gBattlescriptCurrInstr +_0801F354: .4byte BattleScript_ItemSteal +_0801F358: .4byte 0xfffe9f10 +_0801F35C: .4byte 0x000160e8 +_0801F360: .4byte 0x000160e9 +_0801F364: + ldr r3, _0801F394 @ =gBankTarget + ldrb r1, [r3] + movs r0, 0x58 + adds r2, r1, 0 + muls r2, r0 + mov r0, r9 + adds r0, 0x50 + adds r2, r0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 19 + orrs r0, r1 + str r0, [r2] + ldr r2, _0801F398 @ =gDisableStructs + ldrb r1, [r3] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, _0801F39C @ =gBankAttacker + ldrb r1, [r1] + strb r1, [r0, 0x14] + b _0801F5DC + .align 2, 0 +_0801F394: .4byte gBankTarget +_0801F398: .4byte gDisableStructs +_0801F39C: .4byte gBankAttacker +_0801F3A0: + ldr r0, _0801F3B8 @ =gBankTarget + ldrb r1, [r0] + movs r0, 0x58 + adds r2, r1, 0 + muls r2, r0 + mov r0, r9 + adds r0, 0x50 + adds r2, r0 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 20 + b _0801F19A + .align 2, 0 +_0801F3B8: .4byte gBankTarget +_0801F3BC: + ldr r4, _0801F3CC @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r0, _0801F3D0 @ =gUnknown_081D9224 + b _0801F5F8 + .align 2, 0 +_0801F3CC: .4byte gBattlescriptCurrInstr +_0801F3D0: .4byte gUnknown_081D9224 +_0801F3D4: + ldr r4, _0801F3E4 @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r0, _0801F3E8 @ =BattleScript_RapidSpinAway + b _0801F5F8 + .align 2, 0 +_0801F3E4: .4byte gBattlescriptCurrInstr +_0801F3E8: .4byte BattleScript_RapidSpinAway +_0801F3EC: + ldr r6, _0801F43C @ =gBankTarget + ldrb r0, [r6] + movs r2, 0x58 + muls r0, r2 + mov r1, r9 + adds r1, 0x4C + adds r5, r0, r1 + ldr r4, [r5] + movs r0, 0x40 + ands r0, r4 + cmp r0, 0 + bne _0801F406 + b _0801F5DC +_0801F406: + movs r0, 0x41 + negs r0, r0 + ands r4, r0 + str r4, [r5] + ldr r4, _0801F440 @ =gActiveBank + ldrb r0, [r6] + strb r0, [r4] + ldrb r0, [r4] + muls r0, r2 + adds r0, r1 + str r0, [sp] + movs r0, 0 + movs r1, 0x28 + movs r2, 0 + movs r3, 0x4 + bl EmitSetAttributes + ldrb r0, [r4] + bl MarkBufferBankForExecution + ldr r4, _0801F444 @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r0, _0801F448 @ =BattleScript_TargetPRLZHeal + b _0801F5F8 + .align 2, 0 +_0801F43C: .4byte gBankTarget +_0801F440: .4byte gActiveBank +_0801F444: .4byte gBattlescriptCurrInstr +_0801F448: .4byte BattleScript_TargetPRLZHeal +_0801F44C: + ldr r4, _0801F45C @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r0, _0801F460 @ =gUnknown_081D93FA + b _0801F5F8 + .align 2, 0 +_0801F45C: .4byte gBattlescriptCurrInstr +_0801F460: .4byte gUnknown_081D93FA +_0801F464: + ldr r4, _0801F494 @ =gBattleMoveDamage + ldr r0, _0801F498 @ =gHP_dealt + ldr r0, [r0] + movs r1, 0x3 + bl __divsi3 + str r0, [r4] + cmp r0, 0 + bne _0801F47A + movs r0, 0x1 + str r0, [r4] +_0801F47A: + ldr r4, _0801F49C @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r1, _0801F4A0 @ =gMoveEffectBS_Ptrs + ldr r0, _0801F4A4 @ =gBattleCommunication + ldrb r0, [r0, 0x3] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + b _0801F5F8 + .align 2, 0 +_0801F494: .4byte gBattleMoveDamage +_0801F498: .4byte gHP_dealt +_0801F49C: .4byte gBattlescriptCurrInstr +_0801F4A0: .4byte gMoveEffectBS_Ptrs +_0801F4A4: .4byte gBattleCommunication +_0801F4A8: + mov r3, r8 + ldrb r0, [r3] + movs r5, 0x58 + muls r0, r5 + mov r4, r9 + adds r4, 0x50 + adds r2, r0, r4 + ldr r1, [r2] + movs r0, 0xC0 + lsls r0, 4 + ands r0, r1 + cmp r0, 0 + beq _0801F4C4 + b _0801F5DC +_0801F4C4: + movs r0, 0x80 + lsls r0, 5 + orrs r1, r0 + str r1, [r2] + ldr r1, _0801F4F8 @ =gLockedMove + ldrb r0, [r3] + lsls r0, 1 + adds r0, r1 + ldr r1, _0801F4FC @ =gCurrentMove + ldrh r1, [r1] + strh r1, [r0] + bl Random + mov r2, r8 + ldrb r1, [r2] + adds r2, r1, 0 + muls r2, r5 + adds r2, r4 + movs r1, 0x1 + ands r1, r0 + adds r1, 0x2 + lsls r1, 10 + ldr r0, [r2] +_0801F4F2: + orrs r0, r1 + str r0, [r2] + b _0801F5FA + .align 2, 0 +_0801F4F8: .4byte gLockedMove +_0801F4FC: .4byte gCurrentMove +_0801F500: + mov r5, r8 + ldrb r3, [r5] + movs r4, 0x58 + adds r0, r3, 0 + muls r0, r4 + mov r2, r9 + adds r1, r0, r2 + adds r0, r1, 0 + adds r0, 0x20 + ldrb r2, [r0] + cmp r2, 0x3C + bne _0801F540 + ldrh r0, [r1, 0x2E] + cmp r0, 0 + beq _0801F5DC + ldr r0, _0801F534 @ =gLastUsedAbility + strb r2, [r0] + ldr r1, _0801F538 @ =gBattlescriptCurrInstr + ldr r0, _0801F53C @ =BattleScript_NoItemSteal + str r0, [r1] + ldrb r0, [r5] + movs r1, 0x3C + bl sub_81074C4 + b _0801F5FA + .align 2, 0 +_0801F534: .4byte gLastUsedAbility +_0801F538: .4byte gBattlescriptCurrInstr +_0801F53C: .4byte BattleScript_NoItemSteal +_0801F540: + ldrh r0, [r1, 0x2E] + cmp r0, 0 + beq _0801F5DC + adds r0, r3, 0 + bl GetBankSide + lsls r0, 24 + lsrs r6, r0, 24 + ldr r1, _0801F5B8 @ =gLastUsedItem + mov r3, r8 + ldrb r0, [r3] + muls r0, r4 + add r0, r9 + ldrh r0, [r0, 0x2E] + strh r0, [r1] + ldrb r0, [r3] + muls r0, r4 + add r0, r9 + movs r5, 0 + movs r1, 0 + strh r1, [r0, 0x2E] + ldr r2, _0801F5BC @ =gWishFutureKnock + adds r2, 0x29 + adds r2, r6, r2 + ldr r3, _0801F5C0 @ =gBitTable + ldr r1, _0801F5C4 @ =gBattlePartyID + mov r4, r8 + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + lsls r0, 2 + adds r0, r3 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldr r4, _0801F5C8 @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r0, _0801F5CC @ =BattleScript_KnockedOff + str r0, [r4] + ldr r1, _0801F5D0 @ =0x02000000 + mov r2, r8 + ldrb r0, [r2] + lsls r0, 1 + ldr r3, _0801F5D4 @ =0x000160e8 + adds r0, r3 + adds r0, r1 + strb r5, [r0] + ldrb r0, [r2] + lsls r0, 1 + ldr r4, _0801F5D8 @ =0x000160e9 + adds r0, r4 + adds r0, r1 + strb r5, [r0] + b _0801F5FA + .align 2, 0 +_0801F5B8: .4byte gLastUsedItem +_0801F5BC: .4byte gWishFutureKnock +_0801F5C0: .4byte gBitTable +_0801F5C4: .4byte gBattlePartyID +_0801F5C8: .4byte gBattlescriptCurrInstr +_0801F5CC: .4byte BattleScript_KnockedOff +_0801F5D0: .4byte 0x02000000 +_0801F5D4: .4byte 0x000160e8 +_0801F5D8: .4byte 0x000160e9 +_0801F5DC: + ldr r1, _0801F5E8 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + b _0801F5FA + .align 2, 0 +_0801F5E8: .4byte gBattlescriptCurrInstr +_0801F5EC: + ldr r4, _0801F60C @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r0, _0801F610 @ =gUnknown_081D94B0 +_0801F5F8: + str r0, [r4] +_0801F5FA: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801F60C: .4byte gBattlescriptCurrInstr +_0801F610: .4byte gUnknown_081D94B0 + thumb_func_end sub_801E3EC + + thumb_func_start atk15_seteffectwithchancetarget +atk15_seteffectwithchancetarget: @ 801F614 + push {r4,lr} + ldr r2, _0801F640 @ =gBattleMons + ldr r0, _0801F644 @ =gBankAttacker + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x20 + bne _0801F650 + ldr r2, _0801F648 @ =gBattleMoves + ldr r0, _0801F64C @ =gCurrentMove + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x5] + lsls r4, r0, 1 + b _0801F660 + .align 2, 0 +_0801F640: .4byte gBattleMons +_0801F644: .4byte gBankAttacker +_0801F648: .4byte gBattleMoves +_0801F64C: .4byte gCurrentMove +_0801F650: + ldr r2, _0801F680 @ =gBattleMoves + ldr r0, _0801F684 @ =gCurrentMove + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r4, [r0, 0x5] +_0801F660: + ldr r3, _0801F688 @ =gBattleCommunication + ldrb r2, [r3, 0x3] + movs r0, 0x80 + ands r0, r2 + cmp r0, 0 + beq _0801F690 + ldr r0, _0801F68C @ =gBattleMoveFlags + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _0801F690 + movs r0, 0x7F + ands r0, r2 + strb r0, [r3, 0x3] + b _0801F6BE + .align 2, 0 +_0801F680: .4byte gBattleMoves +_0801F684: .4byte gCurrentMove +_0801F688: .4byte gBattleCommunication +_0801F68C: .4byte gBattleMoveFlags +_0801F690: + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r4 + bhi _0801F6DA + ldr r0, _0801F6C8 @ =gBattleCommunication + ldrb r0, [r0, 0x3] + cmp r0, 0 + beq _0801F6DA + ldr r0, _0801F6CC @ =gBattleMoveFlags + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _0801F6DA + cmp r4, 0x63 + bls _0801F6D0 +_0801F6BE: + movs r0, 0 + movs r1, 0x80 + bl sub_801E3EC + b _0801F6E2 + .align 2, 0 +_0801F6C8: .4byte gBattleCommunication +_0801F6CC: .4byte gBattleMoveFlags +_0801F6D0: + movs r0, 0 + movs r1, 0 + bl sub_801E3EC + b _0801F6E2 +_0801F6DA: + ldr r1, _0801F6F8 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_0801F6E2: + ldr r0, _0801F6FC @ =gBattleCommunication + movs r1, 0 + strb r1, [r0, 0x3] + ldr r0, _0801F700 @ =0x02000000 + ldr r2, _0801F704 @ =0x00016112 + adds r0, r2 + strb r1, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801F6F8: .4byte gBattlescriptCurrInstr +_0801F6FC: .4byte gBattleCommunication +_0801F700: .4byte 0x02000000 +_0801F704: .4byte 0x00016112 + thumb_func_end atk15_seteffectwithchancetarget + + thumb_func_start atk16_seteffectprimary +atk16_seteffectprimary: @ 801F708 + push {lr} + movs r0, 0x1 + movs r1, 0 + bl sub_801E3EC + pop {r0} + bx r0 + thumb_func_end atk16_seteffectprimary + + thumb_func_start atk17_seteffectsecondary +atk17_seteffectsecondary: @ 801F718 + push {lr} + movs r0, 0 + movs r1, 0 + bl sub_801E3EC + pop {r0} + bx r0 + thumb_func_end atk17_seteffectsecondary + + thumb_func_start atk18_status_effect_clear +atk18_status_effect_clear: @ 801F728 + push {lr} + ldr r0, _0801F74C @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r2, _0801F750 @ =gActiveBank + strb r0, [r2] + ldr r3, _0801F754 @ =gBattleCommunication + ldrb r0, [r3, 0x3] + cmp r0, 0x6 + bhi _0801F75C + ldr r1, _0801F758 @ =gBattleMons + ldrb r2, [r2] + movs r0, 0x58 + muls r2, r0 + adds r1, 0x4C + b _0801F766 + .align 2, 0 +_0801F74C: .4byte gBattlescriptCurrInstr +_0801F750: .4byte gActiveBank +_0801F754: .4byte gBattleCommunication +_0801F758: .4byte gBattleMons +_0801F75C: + ldr r1, _0801F794 @ =gBattleMons + ldrb r2, [r2] + movs r0, 0x58 + muls r2, r0 + adds r1, 0x50 +_0801F766: + adds r2, r1 + ldr r1, _0801F798 @ =gStatusFlagsForMoveEffects + ldrb r0, [r3, 0x3] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + ldr r0, [r2] + bics r0, r1 + str r0, [r2] + ldr r0, _0801F79C @ =gBattleCommunication + movs r2, 0 + strb r2, [r0, 0x3] + ldr r1, _0801F7A0 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] + ldr r0, _0801F7A4 @ =0x02000000 + ldr r1, _0801F7A8 @ =0x00016112 + adds r0, r1 + strb r2, [r0] + pop {r0} + bx r0 + .align 2, 0 +_0801F794: .4byte gBattleMons +_0801F798: .4byte gStatusFlagsForMoveEffects +_0801F79C: .4byte gBattleCommunication +_0801F7A0: .4byte gBattlescriptCurrInstr +_0801F7A4: .4byte 0x02000000 +_0801F7A8: .4byte 0x00016112 + thumb_func_end atk18_status_effect_clear + + thumb_func_start atk19_faint_pokemon +atk19_faint_pokemon: @ 801F7AC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + ldr r0, _0801F81C @ =gBattlescriptCurrInstr + ldr r2, [r0] + ldrb r1, [r2, 0x2] + adds r6, r0, 0 + cmp r1, 0 + beq _0801F834 + ldrb r0, [r2, 0x1] + bl sub_8015150 + ldr r5, _0801F820 @ =gActiveBank + strb r0, [r5] + ldr r2, _0801F824 @ =gHitMarker + ldr r1, _0801F828 @ =gBitTable + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + lsls r1, 28 + ldr r0, [r2] + ands r0, r1 + cmp r0, 0 + bne _0801F7E6 + b _0801FB1C +_0801F7E6: + ldr r1, [r6] + ldrb r4, [r1, 0x3] + ldrb r0, [r1, 0x4] + lsls r0, 8 + orrs r4, r0 + ldrb r0, [r1, 0x5] + lsls r0, 16 + orrs r4, r0 + ldrb r0, [r1, 0x6] + lsls r0, 24 + orrs r4, r0 + bl b_movescr_stack_pop_cursor + str r4, [r6] + ldrb r0, [r5] + bl GetBankSide + ldr r1, _0801F82C @ =gSideAffecting + lsls r0, 24 + lsrs r0, 23 + adds r0, r1 + ldrh r2, [r0] + ldr r1, _0801F830 @ =0x0000fdff + ands r1, r2 + strh r1, [r0] + b _0801FB22 + .align 2, 0 +_0801F81C: .4byte gBattlescriptCurrInstr +_0801F820: .4byte gActiveBank +_0801F824: .4byte gHitMarker +_0801F828: .4byte gBitTable +_0801F82C: .4byte gSideAffecting +_0801F830: .4byte 0x0000fdff +_0801F834: + ldrb r0, [r2, 0x1] + cmp r0, 0x1 + bne _0801F85C + ldr r1, _0801F84C @ =gActiveBank + ldr r0, _0801F850 @ =gBankAttacker + ldrb r0, [r0] + strb r0, [r1] + ldr r0, _0801F854 @ =gBankTarget + ldrb r7, [r0] + ldr r4, _0801F858 @ =gUnknown_081D8C58 + b _0801F86A + .align 2, 0 +_0801F84C: .4byte gActiveBank +_0801F850: .4byte gBankAttacker +_0801F854: .4byte gBankTarget +_0801F858: .4byte gUnknown_081D8C58 +_0801F85C: + ldr r1, _0801F954 @ =gActiveBank + ldr r0, _0801F958 @ =gBankTarget + ldrb r0, [r0] + strb r0, [r1] + ldr r0, _0801F95C @ =gBankAttacker + ldrb r7, [r0] + ldr r4, _0801F960 @ =gUnknown_081D8C65 +_0801F86A: + ldr r0, _0801F964 @ =gAbsentBankFlags + ldrb r1, [r0] + ldr r0, _0801F968 @ =gBitTable + mov r12, r0 + ldr r2, _0801F954 @ =gActiveBank + mov r8, r2 + ldrb r2, [r2] + lsls r0, r2, 2 + add r0, r12 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _0801F886 + b _0801FB1C +_0801F886: + ldr r3, _0801F96C @ =gBattleMons + mov r10, r3 + movs r5, 0x58 + mov r9, r5 + mov r0, r9 + muls r0, r2 + add r0, r10 + ldrh r3, [r0, 0x28] + cmp r3, 0 + beq _0801F89C + b _0801FB1C +_0801F89C: + ldr r2, _0801F970 @ =0x02000000 + lsls r1, r7, 1 + ldr r5, _0801F974 @ =0x000160ac + adds r0, r1, r5 + adds r0, r2 + strb r3, [r0] + ldr r0, _0801F978 @ =0x000160ad + adds r1, r0 + adds r1, r2 + strb r3, [r1] + lsls r1, r7, 2 + adds r5, 0x54 + adds r0, r1, r5 + adds r0, r2 + strb r3, [r0] + adds r5, 0x1 + adds r0, r1, r5 + adds r0, r2 + strb r3, [r0] + adds r5, 0x1 + adds r0, r1, r5 + adds r0, r2 + strb r3, [r0] + ldr r0, _0801F97C @ =0x00016103 + adds r1, r0 + adds r1, r2 + strb r3, [r1] + ldr r5, _0801F980 @ =gHitMarker + mov r1, r8 + ldrb r0, [r1] + lsls r0, 2 + add r0, r12 + ldr r1, [r0] + lsls r1, 28 + ldr r0, [r5] + orrs r0, r1 + str r0, [r5] + ldr r0, [r6] + adds r0, 0x7 + bl b_movescr_stack_push + str r4, [r6] + mov r2, r8 + ldrb r0, [r2] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _0801F9B0 + ldr r0, [r5] + movs r1, 0x80 + lsls r1, 15 + orrs r0, r1 + str r0, [r5] + ldr r1, _0801F984 @ =gBattleResults + ldrb r0, [r1] + cmp r0, 0xFE + bhi _0801F914 + adds r0, 0x1 + strb r0, [r1] +_0801F914: + mov r0, r9 + muls r0, r7 + add r0, r10 + adds r3, r0, 0 + adds r3, 0x2A + mov r4, r8 + ldrb r2, [r4] + mov r0, r9 + muls r0, r2 + add r0, r10 + adds r1, r0, 0 + adds r1, 0x2A + ldrb r0, [r3] + ldrb r5, [r1] + cmp r0, r5 + bls _0801F9CC + ldrb r1, [r1] + subs r0, r1 + cmp r0, 0x1D + ble _0801F990 + ldr r1, _0801F988 @ =gBattlePartyID + lsls r0, r2, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0801F98C @ =gPlayerParty + adds r0, r1 + movs r1, 0x8 + bl AdjustFriendship + b _0801F9CC + .align 2, 0 +_0801F954: .4byte gActiveBank +_0801F958: .4byte gBankTarget +_0801F95C: .4byte gBankAttacker +_0801F960: .4byte gUnknown_081D8C65 +_0801F964: .4byte gAbsentBankFlags +_0801F968: .4byte gBitTable +_0801F96C: .4byte gBattleMons +_0801F970: .4byte 0x02000000 +_0801F974: .4byte 0x000160ac +_0801F978: .4byte 0x000160ad +_0801F97C: .4byte 0x00016103 +_0801F980: .4byte gHitMarker +_0801F984: .4byte gBattleResults +_0801F988: .4byte gBattlePartyID +_0801F98C: .4byte gPlayerParty +_0801F990: + ldr r1, _0801F9A8 @ =gBattlePartyID + lsls r0, r2, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0801F9AC @ =gPlayerParty + adds r0, r1 + movs r1, 0x6 + bl AdjustFriendship + b _0801F9CC + .align 2, 0 +_0801F9A8: .4byte gBattlePartyID +_0801F9AC: .4byte gPlayerParty +_0801F9B0: + ldr r1, _0801FAE0 @ =gBattleResults + ldrb r0, [r1, 0x1] + cmp r0, 0xFE + bhi _0801F9BC + adds r0, 0x1 + strb r0, [r1, 0x1] +_0801F9BC: + ldr r2, _0801FAE4 @ =gActiveBank + ldrb r0, [r2] + mov r3, r9 + muls r3, r0 + adds r0, r3, 0 + add r0, r10 + ldrh r0, [r0] + strh r0, [r1, 0x20] +_0801F9CC: + ldr r0, _0801FAE8 @ =gHitMarker + ldr r0, [r0] + movs r1, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0801FA02 + ldr r6, _0801FAEC @ =gBattleMons + ldr r0, _0801FAF0 @ =gBankAttacker + ldrb r0, [r0] + movs r5, 0x58 + muls r0, r5 + adds r0, r6 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _0801FA02 + ldr r4, _0801FAF4 @ =gBattlescriptCurrInstr + ldr r0, [r4] + bl b_movescr_stack_push + ldr r1, _0801FAF8 @ =gBattleMoveDamage + adds r0, r7, 0 + muls r0, r5 + adds r0, r6 + ldrh r0, [r0, 0x28] + str r0, [r1] + ldr r0, _0801FAFC @ =gUnknown_081D9156 + str r0, [r4] +_0801FA02: + ldr r1, _0801FB00 @ =gStatuses3 + ldr r6, _0801FB04 @ =gBankTarget + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 7 + ands r0, r1 + cmp r0, 0 + bne _0801FA1A + b _0801FB22 +_0801FA1A: + ldr r0, _0801FAE8 @ =gHitMarker + ldr r5, [r0] + movs r0, 0x80 + lsls r0, 17 + ands r5, r0 + cmp r5, 0 + bne _0801FB22 + ldr r4, _0801FAF0 @ =gBankAttacker + mov r8, r4 + ldrb r0, [r4] + bl GetBankSide + adds r4, r0, 0 + ldrb r0, [r6] + bl GetBankSide + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + beq _0801FB22 + ldr r0, _0801FAEC @ =gBattleMons + mov r9, r0 + mov r1, r8 + ldrb r2, [r1] + movs r7, 0x58 + adds r3, r2, 0 + muls r3, r7 + adds r0, r3, r0 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _0801FB22 + ldr r0, _0801FB08 @ =gCurrentMove + ldrh r0, [r0] + cmp r0, 0xA5 + beq _0801FB22 + ldr r1, _0801FB0C @ =0x02000000 + ldr r4, _0801FB10 @ =0x0001608c + adds r0, r2, r4 + adds r0, r1 + ldrb r4, [r0] + adds r0, r4, r3 + mov r6, r9 + adds r6, 0x24 + adds r0, r6 + strb r5, [r0] + ldr r5, _0801FAF4 @ =gBattlescriptCurrInstr + ldr r0, [r5] + bl b_movescr_stack_push + ldr r0, _0801FB14 @ =gUnknown_081D9468 + str r0, [r5] + ldr r5, _0801FAE4 @ =gActiveBank + mov r1, r8 + ldrb r0, [r1] + strb r0, [r5] + adds r1, r4, 0 + adds r1, 0x9 + lsls r1, 24 + lsrs r1, 24 + ldrb r0, [r5] + muls r0, r7 + adds r0, r6 + adds r0, r4 + str r0, [sp] + movs r0, 0 + movs r2, 0 + movs r3, 0x1 + bl EmitSetAttributes + ldrb r0, [r5] + bl MarkBufferBankForExecution + ldr r1, _0801FB18 @ =gBattleTextBuff1 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x2 + strb r0, [r1, 0x1] + lsls r4, 1 + mov r2, r8 + ldrb r0, [r2] + muls r0, r7 + adds r0, r4, r0 + mov r2, r9 + adds r2, 0xC + adds r0, r2 + ldrh r0, [r0] + strb r0, [r1, 0x2] + mov r3, r8 + ldrb r0, [r3] + muls r0, r7 + adds r4, r0 + adds r4, r2 + ldrh r0, [r4] + lsrs r0, 8 + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + b _0801FB22 + .align 2, 0 +_0801FAE0: .4byte gBattleResults +_0801FAE4: .4byte gActiveBank +_0801FAE8: .4byte gHitMarker +_0801FAEC: .4byte gBattleMons +_0801FAF0: .4byte gBankAttacker +_0801FAF4: .4byte gBattlescriptCurrInstr +_0801FAF8: .4byte gBattleMoveDamage +_0801FAFC: .4byte gUnknown_081D9156 +_0801FB00: .4byte gStatuses3 +_0801FB04: .4byte gBankTarget +_0801FB08: .4byte gCurrentMove +_0801FB0C: .4byte 0x02000000 +_0801FB10: .4byte 0x0001608c +_0801FB14: .4byte gUnknown_081D9468 +_0801FB18: .4byte gBattleTextBuff1 +_0801FB1C: + ldr r0, [r6] + adds r0, 0x7 + str r0, [r6] +_0801FB22: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end atk19_faint_pokemon + + thumb_func_start atk1A_faint_animation +atk1A_faint_animation: @ 801FB34 + push {r4,r5,lr} + ldr r0, _0801FB64 @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _0801FB5E + ldr r5, _0801FB68 @ =gBattlescriptCurrInstr + ldr r0, [r5] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r4, _0801FB6C @ =gActiveBank + strb r0, [r4] + movs r0, 0 + bl EmitFaintAnimation + ldrb r0, [r4] + bl MarkBufferBankForExecution + ldr r0, [r5] + adds r0, 0x2 + str r0, [r5] +_0801FB5E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0801FB64: .4byte gBattleExecBuffer +_0801FB68: .4byte gBattlescriptCurrInstr +_0801FB6C: .4byte gActiveBank + thumb_func_end atk1A_faint_animation + + thumb_func_start atk1B_faint_effects_clear +atk1B_faint_effects_clear: @ 801FB70 + push {r4-r6,lr} + sub sp, 0x4 + ldr r0, _0801FBC4 @ =gBattleExecBuffer + ldr r6, [r0] + cmp r6, 0 + bne _0801FBBC + ldr r5, _0801FBC8 @ =gBattlescriptCurrInstr + ldr r0, [r5] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r4, _0801FBCC @ =gActiveBank + strb r0, [r4] + ldr r1, _0801FBD0 @ =gBattleMons + ldrb r0, [r4] + movs r2, 0x58 + muls r0, r2 + adds r1, 0x4C + adds r0, r1 + str r6, [r0] + ldrb r0, [r4] + muls r0, r2 + adds r0, r1 + str r0, [sp] + movs r0, 0 + movs r1, 0x28 + movs r2, 0 + movs r3, 0x4 + bl EmitSetAttributes + ldrb r0, [r4] + bl MarkBufferBankForExecution + bl UndoEffectsAfterFainting + ldr r0, [r5] + adds r0, 0x2 + str r0, [r5] +_0801FBBC: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0801FBC4: .4byte gBattleExecBuffer +_0801FBC8: .4byte gBattlescriptCurrInstr +_0801FBCC: .4byte gActiveBank +_0801FBD0: .4byte gBattleMons + thumb_func_end atk1B_faint_effects_clear + + thumb_func_start atk1C_jumpifstatus +atk1C_jumpifstatus: @ 801FBD4 + push {r4,r5,lr} + ldr r5, _0801FC30 @ =gBattlescriptCurrInstr + ldr r0, [r5] + ldrb r0, [r0, 0x1] + bl sub_8015150 + lsls r0, 24 + lsrs r0, 24 + ldr r2, [r5] + ldrb r4, [r2, 0x2] + ldrb r1, [r2, 0x3] + lsls r1, 8 + adds r4, r1 + ldrb r1, [r2, 0x4] + lsls r1, 16 + adds r4, r1 + ldrb r1, [r2, 0x5] + lsls r1, 24 + adds r4, r1 + ldrb r3, [r2, 0x6] + ldrb r1, [r2, 0x7] + lsls r1, 8 + adds r3, r1 + ldrb r1, [r2, 0x8] + lsls r1, 16 + adds r3, r1 + ldrb r1, [r2, 0x9] + lsls r1, 24 + adds r3, r1 + ldr r2, _0801FC34 @ =gBattleMons + movs r1, 0x58 + muls r1, r0 + adds r0, r2, 0 + adds r0, 0x4C + adds r0, r1, r0 + ldr r0, [r0] + ands r0, r4 + cmp r0, 0 + beq _0801FC38 + adds r0, r1, r2 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _0801FC38 + str r3, [r5] + b _0801FC40 + .align 2, 0 +_0801FC30: .4byte gBattlescriptCurrInstr +_0801FC34: .4byte gBattleMons +_0801FC38: + ldr r1, _0801FC48 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0xA + str r0, [r1] +_0801FC40: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0801FC48: .4byte gBattlescriptCurrInstr + thumb_func_end atk1C_jumpifstatus + + thumb_func_start atk1D_jumpifstatus2 +atk1D_jumpifstatus2: @ 801FC4C + push {r4,r5,lr} + ldr r5, _0801FCA8 @ =gBattlescriptCurrInstr + ldr r0, [r5] + ldrb r0, [r0, 0x1] + bl sub_8015150 + lsls r0, 24 + lsrs r0, 24 + ldr r2, [r5] + ldrb r4, [r2, 0x2] + ldrb r1, [r2, 0x3] + lsls r1, 8 + adds r4, r1 + ldrb r1, [r2, 0x4] + lsls r1, 16 + adds r4, r1 + ldrb r1, [r2, 0x5] + lsls r1, 24 + adds r4, r1 + ldrb r3, [r2, 0x6] + ldrb r1, [r2, 0x7] + lsls r1, 8 + adds r3, r1 + ldrb r1, [r2, 0x8] + lsls r1, 16 + adds r3, r1 + ldrb r1, [r2, 0x9] + lsls r1, 24 + adds r3, r1 + ldr r2, _0801FCAC @ =gBattleMons + movs r1, 0x58 + muls r1, r0 + adds r0, r2, 0 + adds r0, 0x50 + adds r0, r1, r0 + ldr r0, [r0] + ands r0, r4 + cmp r0, 0 + beq _0801FCB0 + adds r0, r1, r2 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _0801FCB0 + str r3, [r5] + b _0801FCB8 + .align 2, 0 +_0801FCA8: .4byte gBattlescriptCurrInstr +_0801FCAC: .4byte gBattleMons +_0801FCB0: + ldr r1, _0801FCC0 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0xA + str r0, [r1] +_0801FCB8: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0801FCC0: .4byte gBattlescriptCurrInstr + thumb_func_end atk1D_jumpifstatus2 + + thumb_func_start atk1E_jumpifability +atk1E_jumpifability: @ 801FCC4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + ldr r6, _0801FD18 @ =gBattlescriptCurrInstr + ldr r2, [r6] + ldrb r5, [r2, 0x2] + mov r8, r5 + ldrb r1, [r2, 0x3] + ldrb r0, [r2, 0x4] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x6] + lsls r0, 24 + adds r7, r1, r0 + ldrb r0, [r2, 0x1] + cmp r0, 0x8 + bne _0801FD24 + ldr r0, _0801FD1C @ =gBankAttacker + ldrb r1, [r0] + movs r0, 0 + str r0, [sp] + movs r0, 0xD + adds r2, r5, 0 + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _0801FDA0 + ldr r1, _0801FD20 @ =gLastUsedAbility + strb r5, [r1] + str r7, [r6] + subs r4, 0x1 + lsls r0, r4, 24 + lsrs r0, 24 + ldrb r1, [r1] + b _0801FD80 + .align 2, 0 +_0801FD18: .4byte gBattlescriptCurrInstr +_0801FD1C: .4byte gBankAttacker +_0801FD20: .4byte gLastUsedAbility +_0801FD24: + cmp r0, 0x9 + bne _0801FD5C + ldr r0, _0801FD54 @ =gBankAttacker + ldrb r1, [r0] + movs r0, 0 + str r0, [sp] + movs r0, 0xC + adds r2, r5, 0 + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _0801FDA0 + ldr r1, _0801FD58 @ =gLastUsedAbility + strb r5, [r1] + str r7, [r6] + subs r4, 0x1 + lsls r0, r4, 24 + lsrs r0, 24 + ldrb r1, [r1] + b _0801FD80 + .align 2, 0 +_0801FD54: .4byte gBankAttacker +_0801FD58: .4byte gLastUsedAbility +_0801FD5C: + ldrb r0, [r2, 0x1] + bl sub_8015150 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _0801FD90 @ =gBattleMons + movs r0, 0x58 + muls r0, r4 + adds r0, r1 + adds r0, 0x20 + ldrb r1, [r0] + cmp r1, r8 + bne _0801FDA0 + ldr r0, _0801FD94 @ =gLastUsedAbility + strb r1, [r0] + str r7, [r6] + ldrb r1, [r0] + adds r0, r4, 0 +_0801FD80: + bl sub_81074C4 + ldr r0, _0801FD98 @ =0x02000000 + ldr r1, _0801FD9C @ =0x000160f8 + adds r0, r1 + strb r4, [r0] + b _0801FDA6 + .align 2, 0 +_0801FD90: .4byte gBattleMons +_0801FD94: .4byte gLastUsedAbility +_0801FD98: .4byte 0x02000000 +_0801FD9C: .4byte 0x000160f8 +_0801FDA0: + ldr r0, [r6] + adds r0, 0x7 + str r0, [r6] +_0801FDA6: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end atk1E_jumpifability + + thumb_func_start atk1F_jumpifsideaffecting +atk1F_jumpifsideaffecting: @ 801FDB4 + push {r4-r6,lr} + ldr r0, _0801FDCC @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r4, [r0, 0x1] + cmp r4, 0x1 + bne _0801FDD4 + ldr r0, _0801FDD0 @ =gBankAttacker + ldrb r0, [r0] + bl GetBankIdentity + b _0801FDDE + .align 2, 0 +_0801FDCC: .4byte gBattlescriptCurrInstr +_0801FDD0: .4byte gBankAttacker +_0801FDD4: + ldr r0, _0801FE14 @ =gBankTarget + ldrb r0, [r0] + bl GetBankIdentity + movs r4, 0x1 +_0801FDDE: + ands r4, r0 + ldr r6, _0801FE18 @ =gBattlescriptCurrInstr + ldr r3, [r6] + ldrb r2, [r3, 0x2] + ldrb r0, [r3, 0x3] + lsls r0, 8 + orrs r2, r0 + ldrb r1, [r3, 0x4] + ldrb r0, [r3, 0x5] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r3, 0x6] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r3, 0x7] + lsls r0, 24 + adds r5, r1, r0 + ldr r1, _0801FE1C @ =gSideAffecting + lsls r0, r4, 1 + adds r0, r1 + ldrh r0, [r0] + ands r2, r0 + cmp r2, 0 + beq _0801FE20 + str r5, [r6] + b _0801FE26 + .align 2, 0 +_0801FE14: .4byte gBankTarget +_0801FE18: .4byte gBattlescriptCurrInstr +_0801FE1C: .4byte gSideAffecting +_0801FE20: + adds r0, r3, 0 + adds r0, 0x8 + str r0, [r6] +_0801FE26: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end atk1F_jumpifsideaffecting + + thumb_func_start atk20_jumpifstat +atk20_jumpifstat: @ 801FE2C + push {r4,r5,lr} + movs r5, 0 + ldr r4, _0801FE60 @ =gBattlescriptCurrInstr + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_8015150 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0801FE64 @ =gBattleMons + ldr r3, [r4] + movs r1, 0x58 + muls r0, r1 + ldrb r1, [r3, 0x3] + adds r0, r1 + adds r2, 0x18 + adds r0, r2 + ldrb r2, [r0] + ldrb r0, [r3, 0x2] + cmp r0, 0x5 + bhi _0801FEEA + lsls r0, 2 + ldr r1, _0801FE68 @ =_0801FE6C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801FE60: .4byte gBattlescriptCurrInstr +_0801FE64: .4byte gBattleMons +_0801FE68: .4byte _0801FE6C + .align 2, 0 +_0801FE6C: + .4byte _0801FE84 + .4byte _0801FE94 + .4byte _0801FEA4 + .4byte _0801FEB4 + .4byte _0801FEC4 + .4byte _0801FED8 +_0801FE84: + ldr r0, _0801FE90 @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r0, [r0, 0x4] + cmp r2, r0 + bne _0801FEEA + b _0801FEE4 + .align 2, 0 +_0801FE90: .4byte gBattlescriptCurrInstr +_0801FE94: + ldr r0, _0801FEA0 @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r0, [r0, 0x4] + cmp r2, r0 + beq _0801FEEA + b _0801FEE4 + .align 2, 0 +_0801FEA0: .4byte gBattlescriptCurrInstr +_0801FEA4: + ldr r0, _0801FEB0 @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r0, [r0, 0x4] + cmp r2, r0 + bls _0801FEEA + b _0801FEE4 + .align 2, 0 +_0801FEB0: .4byte gBattlescriptCurrInstr +_0801FEB4: + ldr r0, _0801FEC0 @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r0, [r0, 0x4] + cmp r2, r0 + bcs _0801FEEA + b _0801FEE4 + .align 2, 0 +_0801FEC0: .4byte gBattlescriptCurrInstr +_0801FEC4: + ldr r0, _0801FED4 @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r0, [r0, 0x4] + ands r2, r0 + cmp r2, 0 + beq _0801FEEA + b _0801FEE4 + .align 2, 0 +_0801FED4: .4byte gBattlescriptCurrInstr +_0801FED8: + ldr r0, _0801FF0C @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r0, [r0, 0x4] + ands r2, r0 + cmp r2, 0 + bne _0801FEEA +_0801FEE4: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 +_0801FEEA: + cmp r5, 0 + beq _0801FF10 + ldr r3, _0801FF0C @ =gBattlescriptCurrInstr + ldr r2, [r3] + ldrb r1, [r2, 0x5] + ldrb r0, [r2, 0x6] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x7] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x8] + lsls r0, 24 + adds r1, r0 + str r1, [r3] + b _0801FF18 + .align 2, 0 +_0801FF0C: .4byte gBattlescriptCurrInstr +_0801FF10: + ldr r1, _0801FF20 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x9 + str r0, [r1] +_0801FF18: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0801FF20: .4byte gBattlescriptCurrInstr + thumb_func_end atk20_jumpifstat + + thumb_func_start atk21_jumpifstatus3 +atk21_jumpifstatus3: @ 801FF24 + push {r4-r6,lr} + ldr r4, _0801FF78 @ =gBattlescriptCurrInstr + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r5, _0801FF7C @ =gActiveBank + strb r0, [r5] + ldr r2, [r4] + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + adds r6, r1, r0 + ldrb r1, [r2, 0x7] + ldrb r0, [r2, 0x8] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x9] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0xA] + lsls r0, 24 + adds r3, r1, r0 + ldrb r0, [r2, 0x6] + cmp r0, 0 + beq _0801FF84 + ldr r0, _0801FF80 @ =gStatuses3 + ldrb r1, [r5] + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + ands r0, r6 + cmp r0, 0 + bne _0801FF9C + b _0801FF94 + .align 2, 0 +_0801FF78: .4byte gBattlescriptCurrInstr +_0801FF7C: .4byte gActiveBank +_0801FF80: .4byte gStatuses3 +_0801FF84: + ldr r0, _0801FF98 @ =gStatuses3 + ldrb r1, [r5] + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + ands r0, r6 + cmp r0, 0 + beq _0801FF9C +_0801FF94: + str r3, [r4] + b _0801FFA2 + .align 2, 0 +_0801FF98: .4byte gStatuses3 +_0801FF9C: + adds r0, r2, 0 + adds r0, 0xB + str r0, [r4] +_0801FFA2: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end atk21_jumpifstatus3 + + thumb_func_start atk22_jumpiftype +atk22_jumpiftype: @ 801FFA8 + push {r4-r6,lr} + ldr r4, _0801FFF0 @ =gBattlescriptCurrInstr + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_8015150 + lsls r0, 24 + lsrs r0, 24 + ldr r3, [r4] + ldrb r5, [r3, 0x2] + ldrb r2, [r3, 0x3] + ldrb r1, [r3, 0x4] + lsls r1, 8 + adds r2, r1 + ldrb r1, [r3, 0x5] + lsls r1, 16 + adds r2, r1 + ldrb r1, [r3, 0x6] + lsls r1, 24 + adds r6, r2, r1 + ldr r2, _0801FFF4 @ =gBattleMons + movs r1, 0x58 + muls r0, r1 + adds r1, r0, r2 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, r5 + beq _0801FFEC + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, r5 + bne _0801FFF8 +_0801FFEC: + str r6, [r4] + b _0801FFFC + .align 2, 0 +_0801FFF0: .4byte gBattlescriptCurrInstr +_0801FFF4: .4byte gBattleMons +_0801FFF8: + adds r0, r3, 0x7 + str r0, [r4] +_0801FFFC: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end atk22_jumpiftype + + thumb_func_start atk23_getexp +atk23_getexp: @ 8020004 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r6, 0 + ldr r0, _0802004C @ =0x0201605c + mov r10, r0 + ldr r0, _08020050 @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r1, _08020054 @ =gBank1 + strb r0, [r1] + ldr r2, _08020058 @ =gSentPokesToOpponent + movs r1, 0x2 + ands r1, r0 + lsls r1, 24 + lsrs r1, 25 + adds r1, r2 + ldrb r1, [r1] + mov r8, r1 + mov r0, r10 + subs r0, 0x4D + ldrb r0, [r0] + cmp r0, 0x6 + bls _08020040 + bl _08020996 +_08020040: + lsls r0, 2 + ldr r1, _0802005C @ =_08020060 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802004C: .4byte 0x0201605c +_08020050: .4byte gBattlescriptCurrInstr +_08020054: .4byte gBank1 +_08020058: .4byte gSentPokesToOpponent +_0802005C: .4byte _08020060 + .align 2, 0 +_08020060: + .4byte _0802007C + .4byte _080200FC + .4byte _08020216 + .4byte _0802055C + .4byte _08020648 + .4byte _08020910 + .4byte _0802096C +_0802007C: + ldr r4, _080200A8 @ =gBank1 + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08020098 + ldr r0, _080200AC @ =gBattleTypeFlags + ldrh r1, [r0] + ldr r0, _080200B0 @ =0x00000982 + ands r0, r1 + cmp r0, 0 + beq _080200BC +_08020098: + ldr r0, _080200B4 @ =0x02000000 + ldr r1, _080200B8 @ =0x0001600f + adds r0, r1 + movs r1, 0x6 + strb r1, [r0] + bl _08020996 + .align 2, 0 +_080200A8: .4byte gBank1 +_080200AC: .4byte gBattleTypeFlags +_080200B0: .4byte 0x00000982 +_080200B4: .4byte 0x02000000 +_080200B8: .4byte 0x0001600f +_080200BC: + ldr r2, _080200E8 @ =0x02000000 + ldr r3, _080200EC @ =0x0001600f + adds r1, r2, r3 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r0, _080200F0 @ =0x00016113 + adds r2, r0 + ldr r3, _080200F4 @ =gBitTable + ldr r1, _080200F8 @ =gBattlePartyID + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + lsls r0, 2 + adds r0, r3 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + bl _08020996 + .align 2, 0 +_080200E8: .4byte 0x02000000 +_080200EC: .4byte 0x0001600f +_080200F0: .4byte 0x00016113 +_080200F4: .4byte gBitTable +_080200F8: .4byte gBattlePartyID +_080200FC: + movs r5, 0 + movs r7, 0 + ldr r1, _08020150 @ =gSaveBlock1 + 0x3688 + mov r9, r1 +_08020104: + movs r0, 0x64 + adds r1, r7, 0 + muls r1, r0 + ldr r0, _08020154 @ =gPlayerParty + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + bl GetMonData + cmp r0, 0 + beq _0802016A + adds r0, r4, 0 + movs r1, 0x39 + bl GetMonData + cmp r0, 0 + beq _0802016A + ldr r0, _08020158 @ =gBitTable + lsls r1, r7, 2 + adds r1, r0 + ldr r0, [r1] + mov r2, r8 + ands r0, r2 + cmp r0, 0 + beq _08020138 + adds r5, 0x1 +_08020138: + adds r0, r4, 0 + movs r1, 0xC + bl GetMonData + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xAF + bne _0802015C + mov r3, r9 + ldrb r4, [r3] + b _08020164 + .align 2, 0 +_08020150: .4byte gSaveBlock1 + 0x3688 +_08020154: .4byte gPlayerParty +_08020158: .4byte gBitTable +_0802015C: + bl ItemId_GetHoldEffect + lsls r0, 24 + lsrs r4, r0, 24 +_08020164: + cmp r4, 0x19 + bne _0802016A + adds r6, 0x1 +_0802016A: + adds r7, 0x1 + cmp r7, 0x5 + ble _08020104 + ldr r3, _080201D0 @ =gBaseStats + ldr r2, _080201D4 @ =gBattleMons + ldr r0, _080201D8 @ =gBank1 + ldrb r1, [r0] + movs r0, 0x58 + muls r1, r0 + adds r1, r2 + ldrh r2, [r1] + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r3 + ldrb r2, [r0, 0x9] + adds r1, 0x2A + ldrb r0, [r1] + muls r0, r2 + movs r1, 0x7 + bl __divsi3 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r6, 0 + beq _080201E0 + lsrs r4, r0, 17 + adds r0, r4, 0 + adds r1, r5, 0 + bl __divsi3 + mov r1, r10 + strh r0, [r1] + lsls r0, 16 + cmp r0, 0 + bne _080201B6 + movs r0, 0x1 + strh r0, [r1] +_080201B6: + ldr r5, _080201DC @ =gExpShareExp + adds r0, r4, 0 + adds r1, r6, 0 + bl __divsi3 + strh r0, [r5] + lsls r0, 16 + cmp r0, 0 + bne _080201FA + movs r0, 0x1 + strh r0, [r5] + b _080201FA + .align 2, 0 +_080201D0: .4byte gBaseStats +_080201D4: .4byte gBattleMons +_080201D8: .4byte gBank1 +_080201DC: .4byte gExpShareExp +_080201E0: + adds r0, r1, 0 + adds r1, r5, 0 + bl __divsi3 + mov r2, r10 + strh r0, [r2] + lsls r0, 16 + cmp r0, 0 + bne _080201F6 + movs r0, 0x1 + strh r0, [r2] +_080201F6: + ldr r0, _08020248 @ =gExpShareExp + strh r6, [r0] +_080201FA: + ldr r1, _0802024C @ =0x02000000 + ldr r3, _08020250 @ =0x0001600f + adds r2, r1, r3 + ldrb r0, [r2] + adds r0, 0x1 + movs r3, 0 + strb r0, [r2] + ldr r2, _08020254 @ =0x00016018 + adds r0, r1, r2 + strb r3, [r0] + ldr r3, _08020258 @ =0x0001605f + adds r1, r3 + mov r0, r8 + strb r0, [r1] +_08020216: + ldr r0, _0802025C @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + beq _08020220 + b _08020996 +_08020220: + ldr r0, _0802024C @ =0x02000000 + ldr r1, _08020254 @ =0x00016018 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08020260 @ =gPlayerParty + adds r0, r1 + movs r1, 0xC + bl GetMonData + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xAF + bne _0802026C + ldr r0, _08020264 @ =gSaveBlock1 + ldr r2, _08020268 @ =0x00003688 + adds r0, r2 + ldrb r4, [r0] + b _08020274 + .align 2, 0 +_08020248: .4byte gExpShareExp +_0802024C: .4byte 0x02000000 +_08020250: .4byte 0x0001600f +_08020254: .4byte 0x00016018 +_08020258: .4byte 0x0001605f +_0802025C: .4byte gBattleExecBuffer +_08020260: .4byte gPlayerParty +_08020264: .4byte gSaveBlock1 +_08020268: .4byte 0x00003688 +_0802026C: + bl ItemId_GetHoldEffect + lsls r0, 24 + lsrs r4, r0, 24 +_08020274: + ldr r5, _08020294 @ =0x02000000 + cmp r4, 0x19 + beq _080202A0 + ldr r3, _08020298 @ =0x0001605f + adds r1, r5, r3 + ldrb r0, [r1] + movs r2, 0x1 + ands r2, r0 + cmp r2, 0 + bne _080202A0 + lsrs r0, 1 + strb r0, [r1] + ldr r0, _0802029C @ =0x0001600f + adds r1, r5, r0 + b _080202C8 + .align 2, 0 +_08020294: .4byte 0x02000000 +_08020298: .4byte 0x0001605f +_0802029C: .4byte 0x0001600f +_080202A0: + ldr r1, _080202D4 @ =0x00016018 + adds r0, r5, r1 + ldrb r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080202D8 @ =gPlayerParty + adds r0, r1 + movs r1, 0x38 + bl GetMonData + cmp r0, 0x64 + bne _080202E8 + ldr r2, _080202DC @ =0x0001605f + adds r1, r5, r2 + ldrb r0, [r1] + lsrs r0, 1 + movs r2, 0 + strb r0, [r1] + ldr r3, _080202E0 @ =0x0001600f + adds r1, r5, r3 +_080202C8: + movs r0, 0x5 + strb r0, [r1] + ldr r0, _080202E4 @ =gBattleMoveDamage + str r2, [r0] + b _08020996 + .align 2, 0 +_080202D4: .4byte 0x00016018 +_080202D8: .4byte gPlayerParty +_080202DC: .4byte 0x0001605f +_080202E0: .4byte 0x0001600f +_080202E4: .4byte gBattleMoveDamage +_080202E8: + ldr r0, _0802034C @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + bne _08020316 + ldr r0, _08020350 @ =gBattleMons + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _08020316 + ldr r0, _08020354 @ =0x0001601b + adds r5, r0 + ldrb r0, [r5] + cmp r0, 0 + bne _08020316 + bl sub_80325B8 + ldr r0, _08020358 @ =0x00000161 + bl PlayBGM + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] +_08020316: + ldr r5, _0802035C @ =0x02000000 + ldr r1, _08020360 @ =0x00016018 + adds r0, r5, r1 + ldrb r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08020364 @ =gPlayerParty + adds r0, r1 + movs r1, 0x39 + bl GetMonData + cmp r0, 0 + bne _08020332 + b _0802051E +_08020332: + ldr r2, _08020368 @ =0x0001605f + adds r0, r5, r2 + ldrb r0, [r0] + movs r3, 0x1 + ands r3, r0 + cmp r3, 0 + beq _08020370 + ldr r1, _0802036C @ =gBattleMoveDamage + mov r3, r10 + ldrh r0, [r3] + str r0, [r1] + mov r8, r1 + b _08020376 + .align 2, 0 +_0802034C: .4byte gBattleTypeFlags +_08020350: .4byte gBattleMons +_08020354: .4byte 0x0001601b +_08020358: .4byte 0x00000161 +_0802035C: .4byte 0x02000000 +_08020360: .4byte 0x00016018 +_08020364: .4byte gPlayerParty +_08020368: .4byte 0x0001605f +_0802036C: .4byte gBattleMoveDamage +_08020370: + ldr r0, _080203EC @ =gBattleMoveDamage + str r3, [r0] + mov r8, r0 +_08020376: + cmp r4, 0x19 + bne _08020386 + ldr r0, _080203F0 @ =gExpShareExp + ldrh r1, [r0] + mov r2, r8 + ldr r0, [r2] + adds r0, r1 + str r0, [r2] +_08020386: + cmp r4, 0x28 + bne _0802039C + mov r3, r8 + ldr r1, [r3] + movs r0, 0x96 + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + mov r1, r8 + str r0, [r1] +_0802039C: + ldr r0, _080203F4 @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _080203B8 + ldr r4, _080203EC @ =gBattleMoveDamage + ldr r1, [r4] + movs r0, 0x96 + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + str r0, [r4] +_080203B8: + ldr r0, _080203F8 @ =0x02000000 + ldr r2, _080203FC @ =0x00016018 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08020400 @ =gPlayerParty + adds r0, r1 + bl IsTradedMon + lsls r0, 24 + cmp r0, 0 + beq _08020404 + ldr r4, _080203EC @ =gBattleMoveDamage + ldr r1, [r4] + movs r0, 0x96 + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + str r0, [r4] + movs r7, 0xA5 + lsls r7, 1 + mov r8, r4 + b _0802040A + .align 2, 0 +_080203EC: .4byte gBattleMoveDamage +_080203F0: .4byte gExpShareExp +_080203F4: .4byte gBattleTypeFlags +_080203F8: .4byte 0x02000000 +_080203FC: .4byte 0x00016018 +_08020400: .4byte gPlayerParty +_08020404: + ldr r7, _0802043C @ =0x00000149 + ldr r3, _08020440 @ =gBattleMoveDamage + mov r8, r3 +_0802040A: + ldr r0, _08020444 @ =gBattleTypeFlags + ldrh r0, [r0] + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + beq _08020488 + ldr r1, _08020448 @ =gBattlePartyID + ldr r0, _0802044C @ =0x02000000 + ldr r3, _08020450 @ =0x00016018 + adds r2, r0, r3 + ldrh r1, [r1, 0x4] + adds r5, r0, 0 + ldr r4, _08020454 @ =gBitTable + ldr r3, _08020458 @ =gAbsentBankFlags + ldrb r2, [r2] + cmp r1, r2 + bne _08020460 + ldrb r1, [r3] + ldr r0, [r4, 0x8] + ands r1, r0 + cmp r1, 0 + bne _08020460 + ldr r0, _0802045C @ =0x000160a2 + adds r1, r5, r0 + b _0802047C + .align 2, 0 +_0802043C: .4byte 0x00000149 +_08020440: .4byte gBattleMoveDamage +_08020444: .4byte gBattleTypeFlags +_08020448: .4byte gBattlePartyID +_0802044C: .4byte 0x02000000 +_08020450: .4byte 0x00016018 +_08020454: .4byte gBitTable +_08020458: .4byte gAbsentBankFlags +_0802045C: .4byte 0x000160a2 +_08020460: + ldrb r2, [r3] + ldr r0, [r4] + ands r2, r0 + cmp r2, 0 + bne _08020478 + ldr r1, _08020474 @ =0x000160a2 + adds r0, r5, r1 + strb r2, [r0] + b _08020490 + .align 2, 0 +_08020474: .4byte 0x000160a2 +_08020478: + ldr r2, _08020484 @ =0x000160a2 + adds r1, r5, r2 +_0802047C: + movs r0, 0x2 + strb r0, [r1] + b _08020490 + .align 2, 0 +_08020484: .4byte 0x000160a2 +_08020488: + ldr r0, _08020530 @ =0x02000000 + ldr r3, _08020534 @ =0x000160a2 + adds r0, r3 + strb r1, [r0] +_08020490: + ldr r1, _08020538 @ =gBattleTextBuff1 + movs r3, 0 + movs r2, 0xFD + strb r2, [r1] + movs r5, 0x4 + strb r5, [r1, 0x1] + ldr r4, _08020530 @ =0x02000000 + ldr r0, _08020534 @ =0x000160a2 + adds r6, r4, r0 + ldrb r0, [r6] + strb r0, [r1, 0x2] + ldr r0, _0802053C @ =0x00016018 + adds r4, r0 + ldrb r0, [r4] + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r1, _08020540 @ =gBattleTextBuff2 + strb r2, [r1] + strb r3, [r1, 0x1] + strb r7, [r1, 0x2] + movs r3, 0xFF + lsls r3, 8 + ands r7, r3 + asrs r0, r7, 8 + strb r0, [r1, 0x3] + movs r0, 0x1 + negs r0, r0 + strb r0, [r1, 0x4] + ldr r1, _08020544 @ =gBattleTextBuff3 + strb r2, [r1] + movs r0, 0x1 + strb r0, [r1, 0x1] + strb r5, [r1, 0x2] + movs r0, 0x5 + strb r0, [r1, 0x3] + mov r0, r8 + ldr r2, [r0] + strb r2, [r1, 0x4] + adds r0, r2, 0 + ands r0, r3 + asrs r0, 8 + strb r0, [r1, 0x5] + movs r0, 0xFF + lsls r0, 16 + ands r0, r2 + asrs r0, 16 + strb r0, [r1, 0x6] + lsrs r2, 24 + strb r2, [r1, 0x7] + movs r0, 0x1 + negs r0, r0 + strb r0, [r1, 0x8] + ldrb r1, [r6] + movs r0, 0xD + bl PrepareStringBattle + ldrb r1, [r4] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08020548 @ =gPlayerParty + adds r0, r1 + ldr r3, _0802054C @ =gBattleMons + ldr r1, _08020550 @ =gBank1 + ldrb r2, [r1] + movs r1, 0x58 + muls r1, r2 + adds r1, r3 + ldrh r1, [r1] + bl MonGainEVs +_0802051E: + ldr r1, _08020530 @ =0x02000000 + ldr r3, _08020554 @ =0x0001605f + adds r2, r1, r3 + ldrb r0, [r2] + lsrs r0, 1 + strb r0, [r2] + ldr r0, _08020558 @ =0x0001600f + adds r1, r0 + b _08020618 + .align 2, 0 +_08020530: .4byte 0x02000000 +_08020534: .4byte 0x000160a2 +_08020538: .4byte gBattleTextBuff1 +_0802053C: .4byte 0x00016018 +_08020540: .4byte gBattleTextBuff2 +_08020544: .4byte gBattleTextBuff3 +_08020548: .4byte gPlayerParty +_0802054C: .4byte gBattleMons +_08020550: .4byte gBank1 +_08020554: .4byte 0x0001605f +_08020558: .4byte 0x0001600f +_0802055C: + ldr r0, _08020620 @ =gBattleExecBuffer + ldr r2, [r0] + cmp r2, 0 + beq _08020566 + b _08020996 +_08020566: + ldr r1, _08020624 @ =gBattleBufferB + ldr r4, _08020628 @ =0x02000000 + ldr r3, _0802062C @ =0x000160a2 + adds r3, r4 + mov r8, r3 + ldrb r0, [r3] + lsls r0, 9 + adds r0, r1 + strb r2, [r0] + ldr r0, _08020630 @ =0x00016018 + adds r7, r4, r0 + ldrb r0, [r7] + movs r6, 0x64 + muls r0, r6 + ldr r5, _08020634 @ =gPlayerParty + adds r0, r5 + movs r1, 0x39 + bl GetMonData + cmp r0, 0 + beq _08020612 + ldrb r0, [r7] + muls r0, r6 + adds r0, r5 + movs r1, 0x38 + bl GetMonData + cmp r0, 0x64 + beq _08020612 + ldrb r0, [r7] + muls r0, r6 + adds r0, r5 + movs r1, 0x3A + bl GetMonData + ldr r1, _08020638 @ =0x00017180 + adds r4, r1 + strh r0, [r4] + ldrb r0, [r7] + muls r0, r6 + adds r0, r5 + movs r1, 0x3B + bl GetMonData + strh r0, [r4, 0x2] + ldrb r0, [r7] + muls r0, r6 + adds r0, r5 + movs r1, 0x3C + bl GetMonData + strh r0, [r4, 0x4] + ldrb r0, [r7] + muls r0, r6 + adds r0, r5 + movs r1, 0x3D + bl GetMonData + strh r0, [r4, 0x6] + ldrb r0, [r7] + muls r0, r6 + adds r0, r5 + movs r1, 0x3E + bl GetMonData + strh r0, [r4, 0x8] + ldrb r0, [r7] + muls r0, r6 + adds r0, r5 + movs r1, 0x3F + bl GetMonData + strh r0, [r4, 0xA] + ldr r4, _0802063C @ =gActiveBank + mov r2, r8 + ldrb r0, [r2] + strb r0, [r4] + ldrb r1, [r7] + ldr r0, _08020640 @ =gBattleMoveDamage + ldrh r2, [r0] + movs r0, 0 + bl EmitExpBarUpdate + ldrb r0, [r4] + bl MarkBufferBankForExecution +_08020612: + ldr r1, _08020628 @ =0x02000000 + ldr r3, _08020644 @ =0x0001600f + adds r1, r3 +_08020618: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _08020996 + .align 2, 0 +_08020620: .4byte gBattleExecBuffer +_08020624: .4byte gBattleBufferB +_08020628: .4byte 0x02000000 +_0802062C: .4byte 0x000160a2 +_08020630: .4byte 0x00016018 +_08020634: .4byte gPlayerParty +_08020638: .4byte 0x00017180 +_0802063C: .4byte gActiveBank +_08020640: .4byte gBattleMoveDamage +_08020644: .4byte 0x0001600f +_08020648: + ldr r0, _080208AC @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + beq _08020652 + b _08020996 +_08020652: + ldr r1, _080208B0 @ =gActiveBank + ldr r4, _080208B4 @ =0x02000000 + ldr r2, _080208B8 @ =0x000160a2 + adds r0, r4, r2 + ldrb r0, [r0] + strb r0, [r1] + ldr r2, _080208BC @ =gBattleBufferB + ldrb r3, [r1] + lsls r1, r3, 9 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0x21 + beq _0802066E + b _080208F0 +_0802066E: + adds r0, r2, 0x1 + adds r0, r1, r0 + ldrb r0, [r0] + cmp r0, 0xB + beq _0802067A + b _080208F0 +_0802067A: + ldr r0, _080208C0 @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _080206A8 + ldr r1, _080208C4 @ =gBattlePartyID + lsls r0, r3, 1 + adds r2, r0, r1 + ldr r0, _080208C8 @ =0x00016018 + adds r1, r4, r0 + ldrh r0, [r2] + ldrb r1, [r1] + cmp r0, r1 + bne _080206A8 + adds r1, r0, 0 + movs r0, 0x64 + muls r0, r1 + ldr r1, _080208CC @ =gPlayerParty + adds r0, r1 + adds r1, r3, 0 + bl sub_80324F8 +_080206A8: + ldr r1, _080208D0 @ =gBattleTextBuff1 + movs r2, 0xFD + strb r2, [r1] + movs r0, 0x4 + strb r0, [r1, 0x1] + ldr r5, _080208B0 @ =gActiveBank + ldrb r0, [r5] + strb r0, [r1, 0x2] + ldr r0, _080208B4 @ =0x02000000 + ldr r3, _080208C8 @ =0x00016018 + adds r6, r0, r3 + ldrb r0, [r6] + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r4, _080208D4 @ =gBattleTextBuff2 + strb r2, [r4] + movs r0, 0x1 + strb r0, [r4, 0x1] + strb r0, [r4, 0x2] + movs r0, 0x3 + strb r0, [r4, 0x3] + ldrb r0, [r6] + movs r1, 0x64 + mov r8, r1 + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + ldr r7, _080208CC @ =gPlayerParty + adds r0, r7 + movs r1, 0x38 + bl GetMonData + strb r0, [r4, 0x4] + movs r0, 0x1 + negs r0, r0 + strb r0, [r4, 0x5] + bl b_movescr_stack_push_cursor + ldr r2, _080208D8 @ =gLeveledUpInBattle + ldr r1, _080208DC @ =gBitTable + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldr r1, _080208E0 @ =gBattlescriptCurrInstr + ldr r0, _080208E4 @ =BattleScript_LevelUp + str r0, [r1] + ldr r4, _080208E8 @ =gBattleMoveDamage + ldr r2, _080208BC @ =gBattleBufferB + ldrb r1, [r5] + lsls r1, 9 + adds r0, r2, 0x2 + adds r0, r1, r0 + ldrb r3, [r0] + adds r2, 0x3 + adds r1, r2 + ldrb r0, [r1] + lsls r0, 8 + orrs r3, r0 + str r3, [r4] + ldrb r0, [r6] + mov r3, r8 + muls r3, r0 + adds r0, r3, 0 + adds r0, r7 + movs r1, 0 + bl AdjustFriendship + ldr r0, _080208C4 @ =gBattlePartyID + ldrb r1, [r6] + ldrh r0, [r0] + cmp r0, r1 + bne _080207EC + ldr r4, _080208EC @ =gBattleMons + ldrh r0, [r4, 0x28] + cmp r0, 0 + beq _080207EC + mov r0, r8 + muls r0, r1 + adds r0, r7 + movs r1, 0x38 + bl GetMonData + adds r1, r4, 0 + adds r1, 0x2A + strb r0, [r1] + ldrb r0, [r6] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r7 + movs r1, 0x39 + bl GetMonData + strh r0, [r4, 0x28] + ldrb r0, [r6] + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + adds r0, r7 + movs r1, 0x3A + bl GetMonData + strh r0, [r4, 0x2C] + ldrb r0, [r6] + mov r3, r8 + muls r3, r0 + adds r0, r3, 0 + adds r0, r7 + movs r1, 0x3B + bl GetMonData + strh r0, [r4, 0x2] + ldrb r0, [r6] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r7 + movs r1, 0x3C + bl GetMonData + strh r0, [r4, 0x4] + ldrb r0, [r6] + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + adds r0, r7 + movs r1, 0x3D + bl GetMonData + strh r0, [r4, 0x6] + ldrb r0, [r6] + mov r3, r8 + muls r3, r0 + adds r0, r3, 0 + adds r0, r7 + movs r1, 0x3D + bl GetMonData + strh r0, [r4, 0x6] + ldrb r0, [r6] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r7 + movs r1, 0x3E + bl GetMonData + strh r0, [r4, 0x8] + ldrb r0, [r6] + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + adds r0, r7 + movs r1, 0x3F + bl GetMonData + strh r0, [r4, 0xA] +_080207EC: + ldr r0, _080208C4 @ =gBattlePartyID + ldr r1, _080208B4 @ =0x02000000 + ldr r3, _080208C8 @ =0x00016018 + adds r7, r1, r3 + ldrb r2, [r7] + ldrh r0, [r0, 0x4] + cmp r0, r2 + bne _080208F6 + ldr r6, _080208EC @ =gBattleMons + movs r0, 0xD8 + adds r0, r6 + mov r8, r0 + ldrh r0, [r0] + cmp r0, 0 + beq _080208F6 + ldr r0, _080208C0 @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080208F6 + movs r5, 0x64 + adds r0, r2, 0 + muls r0, r5 + ldr r4, _080208CC @ =gPlayerParty + adds r0, r4 + movs r1, 0x38 + bl GetMonData + adds r1, r6, 0 + adds r1, 0xDA + strb r0, [r1] + ldrb r0, [r7] + muls r0, r5 + adds r0, r4 + movs r1, 0x39 + bl GetMonData + mov r1, r8 + strh r0, [r1] + ldrb r0, [r7] + muls r0, r5 + adds r0, r4 + movs r1, 0x3A + bl GetMonData + adds r1, r6, 0 + adds r1, 0xDC + strh r0, [r1] + ldrb r0, [r7] + muls r0, r5 + adds r0, r4 + movs r1, 0x3B + bl GetMonData + adds r1, r6, 0 + adds r1, 0xB2 + strh r0, [r1] + ldrb r0, [r7] + muls r0, r5 + adds r0, r4 + movs r1, 0x3C + bl GetMonData + adds r1, r6, 0 + adds r1, 0xB4 + strh r0, [r1] + ldrb r0, [r7] + muls r0, r5 + adds r0, r4 + movs r1, 0x3D + bl GetMonData + movs r2, 0xB6 + adds r2, r6 + mov r8, r2 + strh r0, [r2] + ldrb r0, [r7] + muls r0, r5 + adds r0, r4 + movs r1, 0x3D + bl GetMonData + mov r3, r8 + strh r0, [r3] + ldrb r0, [r7] + muls r0, r5 + adds r0, r4 + movs r1, 0x3E + bl GetMonData + adds r1, r6, 0 + adds r1, 0xB8 + strh r0, [r1] + b _080208F6 + .align 2, 0 +_080208AC: .4byte gBattleExecBuffer +_080208B0: .4byte gActiveBank +_080208B4: .4byte 0x02000000 +_080208B8: .4byte 0x000160a2 +_080208BC: .4byte gBattleBufferB +_080208C0: .4byte gBattleTypeFlags +_080208C4: .4byte gBattlePartyID +_080208C8: .4byte 0x00016018 +_080208CC: .4byte gPlayerParty +_080208D0: .4byte gBattleTextBuff1 +_080208D4: .4byte gBattleTextBuff2 +_080208D8: .4byte gLeveledUpInBattle +_080208DC: .4byte gBitTable +_080208E0: .4byte gBattlescriptCurrInstr +_080208E4: .4byte BattleScript_LevelUp +_080208E8: .4byte gBattleMoveDamage +_080208EC: .4byte gBattleMons +_080208F0: + ldr r1, _08020904 @ =gBattleMoveDamage + movs r0, 0 + str r0, [r1] +_080208F6: + ldr r0, _08020908 @ =0x02000000 + ldr r1, _0802090C @ =0x0001600f + adds r0, r1 + movs r1, 0x5 + strb r1, [r0] + b _08020996 + .align 2, 0 +_08020904: .4byte gBattleMoveDamage +_08020908: .4byte 0x02000000 +_0802090C: .4byte 0x0001600f +_08020910: + ldr r0, _08020924 @ =gBattleMoveDamage + ldr r0, [r0] + cmp r0, 0 + beq _08020930 + ldr r0, _08020928 @ =0x02000000 + ldr r2, _0802092C @ =0x0001600f + adds r0, r2 + movs r1, 0x3 + strb r1, [r0] + b _08020996 + .align 2, 0 +_08020924: .4byte gBattleMoveDamage +_08020928: .4byte 0x02000000 +_0802092C: .4byte 0x0001600f +_08020930: + ldr r2, _08020950 @ =0x02000000 + ldr r3, _08020954 @ =0x00016018 + adds r1, r2, r3 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x5 + bhi _0802095C + ldr r0, _08020958 @ =0x0001600f + adds r1, r2, r0 + movs r0, 0x2 + strb r0, [r1] + b _08020996 + .align 2, 0 +_08020950: .4byte 0x02000000 +_08020954: .4byte 0x00016018 +_08020958: .4byte 0x0001600f +_0802095C: + ldr r3, _08020968 @ =0x0001600f + adds r1, r2, r3 + movs r0, 0x6 + strb r0, [r1] + b _08020996 + .align 2, 0 +_08020968: .4byte 0x0001600f +_0802096C: + ldr r0, _080209A4 @ =gBattleExecBuffer + ldr r5, [r0] + cmp r5, 0 + bne _08020996 + ldr r4, _080209A8 @ =gBattleMons + ldr r2, _080209AC @ =gBank1 + ldrb r0, [r2] + movs r1, 0x58 + muls r0, r1 + adds r0, r4 + movs r3, 0 + strh r5, [r0, 0x2E] + ldrb r0, [r2] + muls r0, r1 + adds r0, r4 + adds r0, 0x20 + strb r3, [r0] + ldr r1, _080209B0 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] +_08020996: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080209A4: .4byte gBattleExecBuffer +_080209A8: .4byte gBattleMons +_080209AC: .4byte gBank1 +_080209B0: .4byte gBattlescriptCurrInstr + thumb_func_end atk23_getexp + + thumb_func_start atk24 +atk24: @ 80209B4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r6, 0 + ldr r0, _08020AF0 @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + beq _080209C6 + b _08020B46 +_080209C6: + movs r5, 0 +_080209C8: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _08020AF4 @ =gPlayerParty + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + bl GetMonData + cmp r0, 0 + beq _080209F8 + adds r0, r4, 0 + movs r1, 0x2D + bl GetMonData + cmp r0, 0 + bne _080209F8 + adds r0, r4, 0 + movs r1, 0x39 + bl GetMonData + adds r0, r6, r0 + lsls r0, 16 + lsrs r6, r0, 16 +_080209F8: + adds r5, 0x1 + cmp r5, 0x5 + ble _080209C8 + cmp r6, 0 + bne _08020A0C + ldr r0, _08020AF8 @ =gBattleOutcome + ldrb r1, [r0] + movs r2, 0x2 + orrs r1, r2 + strb r1, [r0] +_08020A0C: + movs r6, 0 + movs r5, 0 +_08020A10: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _08020AFC @ =gEnemyParty + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + bl GetMonData + cmp r0, 0 + beq _08020A40 + adds r0, r4, 0 + movs r1, 0x2D + bl GetMonData + cmp r0, 0 + bne _08020A40 + adds r0, r4, 0 + movs r1, 0x39 + bl GetMonData + adds r0, r6, r0 + lsls r0, 16 + lsrs r6, r0, 16 +_08020A40: + adds r5, 0x1 + cmp r5, 0x5 + ble _08020A10 + ldr r2, _08020AF8 @ =gBattleOutcome + cmp r6, 0 + bne _08020A54 + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] +_08020A54: + ldrb r0, [r2] + cmp r0, 0 + bne _08020B3E + ldr r2, _08020B00 @ =gBattleTypeFlags + ldrh r1, [r2] + movs r0, 0x2 + ands r0, r1 + mov r8, r2 + cmp r0, 0 + beq _08020B3E + movs r2, 0 + movs r5, 0 + ldr r0, _08020B04 @ =gNoOfAllBanks + ldrb r3, [r0] + mov r12, r0 + ldr r7, _08020B08 @ =gBattlescriptCurrInstr + cmp r2, r3 + bge _08020AA0 + ldr r0, _08020B0C @ =gHitMarker + movs r1, 0x80 + lsls r1, 21 + ldr r6, [r0] + adds r4, r3, 0 + ldr r3, _08020B10 @ =gSpecialStatuses +_08020A84: + adds r0, r1, 0 + lsls r0, r5 + ands r0, r6 + cmp r0, 0 + beq _08020A98 + ldrb r0, [r3] + lsls r0, 25 + cmp r0, 0 + blt _08020A98 + adds r2, 0x1 +_08020A98: + adds r3, 0x28 + adds r5, 0x2 + cmp r5, r4 + blt _08020A84 +_08020AA0: + movs r4, 0 + movs r5, 0x1 + mov r0, r12 + ldrb r3, [r0] + cmp r5, r3 + bge _08020ADA + ldr r0, _08020B0C @ =gHitMarker + movs r1, 0x80 + lsls r1, 21 + mov r12, r1 + ldr r1, [r0] + ldr r0, _08020B10 @ =gSpecialStatuses + adds r6, r3, 0 + adds r3, r0, 0 + adds r3, 0x14 +_08020ABE: + mov r0, r12 + lsls r0, r5 + ands r0, r1 + cmp r0, 0 + beq _08020AD2 + ldrb r0, [r3] + lsls r0, 25 + cmp r0, 0 + blt _08020AD2 + adds r4, 0x1 +_08020AD2: + adds r3, 0x28 + adds r5, 0x2 + cmp r5, r6 + blt _08020ABE +_08020ADA: + mov r0, r8 + ldrh r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08020B14 + adds r0, r4, r2 + cmp r0, 0x1 + bgt _08020B1C + b _08020B36 + .align 2, 0 +_08020AF0: .4byte gBattleExecBuffer +_08020AF4: .4byte gPlayerParty +_08020AF8: .4byte gBattleOutcome +_08020AFC: .4byte gEnemyParty +_08020B00: .4byte gBattleTypeFlags +_08020B04: .4byte gNoOfAllBanks +_08020B08: .4byte gBattlescriptCurrInstr +_08020B0C: .4byte gHitMarker +_08020B10: .4byte gSpecialStatuses +_08020B14: + cmp r4, 0 + beq _08020B36 + cmp r2, 0 + beq _08020B36 +_08020B1C: + ldr r2, [r7] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + adds r1, r0 + str r1, [r7] + b _08020B46 +_08020B36: + ldr r0, [r7] + adds r0, 0x5 + str r0, [r7] + b _08020B46 +_08020B3E: + ldr r1, _08020B50 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_08020B46: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08020B50: .4byte gBattlescriptCurrInstr + thumb_func_end atk24 + + thumb_func_start sub_8020B54 +sub_8020B54: @ 8020B54 + ldr r1, _08020B80 @ =gBattleMoveFlags + movs r0, 0 + strb r0, [r1] + ldr r0, _08020B84 @ =0x02000000 + ldr r1, _08020B88 @ =0x0001601f + adds r0, r1 + movs r2, 0 + movs r1, 0x1 + strb r1, [r0] + ldr r0, _08020B8C @ =gCritMultiplier + strb r1, [r0] + ldr r0, _08020B90 @ =gBattleCommunication + strb r2, [r0, 0x3] + strb r2, [r0, 0x6] + ldr r2, _08020B94 @ =gHitMarker + ldr r0, [r2] + subs r1, 0x42 + ands r0, r1 + ldr r1, _08020B98 @ =0xffffbfff + ands r0, r1 + str r0, [r2] + bx lr + .align 2, 0 +_08020B80: .4byte gBattleMoveFlags +_08020B84: .4byte 0x02000000 +_08020B88: .4byte 0x0001601f +_08020B8C: .4byte gCritMultiplier +_08020B90: .4byte gBattleCommunication +_08020B94: .4byte gHitMarker +_08020B98: .4byte 0xffffbfff + thumb_func_end sub_8020B54 + + thumb_func_start atk25_move_values_cleanup +atk25_move_values_cleanup: @ 8020B9C + push {lr} + bl sub_8020B54 + ldr r1, _08020BB0 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08020BB0: .4byte gBattlescriptCurrInstr + thumb_func_end atk25_move_values_cleanup + + thumb_func_start atk26_set_multihit +atk26_set_multihit: @ 8020BB4 + ldr r3, _08020BC4 @ =gMultiHitCounter + ldr r2, _08020BC8 @ =gBattlescriptCurrInstr + ldr r0, [r2] + ldrb r1, [r0, 0x1] + strb r1, [r3] + adds r0, 0x2 + str r0, [r2] + bx lr + .align 2, 0 +_08020BC4: .4byte gMultiHitCounter +_08020BC8: .4byte gBattlescriptCurrInstr + thumb_func_end atk26_set_multihit + + thumb_func_start atk27_decrement_multihit +atk27_decrement_multihit: @ 8020BCC + push {lr} + ldr r1, _08020BE8 @ =gMultiHitCounter + ldrb r0, [r1] + subs r0, 0x1 + strb r0, [r1] + lsls r0, 24 + cmp r0, 0 + bne _08020BF0 + ldr r1, _08020BEC @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _08020C0A + .align 2, 0 +_08020BE8: .4byte gMultiHitCounter +_08020BEC: .4byte gBattlescriptCurrInstr +_08020BF0: + ldr r3, _08020C10 @ =gBattlescriptCurrInstr + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + adds r1, r0 + str r1, [r3] +_08020C0A: + pop {r0} + bx r0 + .align 2, 0 +_08020C10: .4byte gBattlescriptCurrInstr + thumb_func_end atk27_decrement_multihit + + thumb_func_start atk28_goto +atk28_goto: @ 8020C14 + ldr r3, _08020C30 @ =gBattlescriptCurrInstr + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + adds r1, r0 + str r1, [r3] + bx lr + .align 2, 0 +_08020C30: .4byte gBattlescriptCurrInstr + thumb_func_end atk28_goto + + thumb_func_start atk29_jumpifbyte +atk29_jumpifbyte: @ 8020C34 + push {r4-r6,lr} + ldr r3, _08020C78 @ =gBattlescriptCurrInstr + ldr r1, [r3] + ldrb r6, [r1, 0x1] + ldrb r2, [r1, 0x2] + ldrb r0, [r1, 0x3] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0x4] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0x5] + lsls r0, 24 + adds r5, r2, r0 + ldrb r4, [r1, 0x6] + ldrb r2, [r1, 0x7] + ldrb r0, [r1, 0x8] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0x9] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0xA] + lsls r0, 24 + adds r2, r0 + adds r1, 0xB + str r1, [r3] + cmp r6, 0x5 + bhi _08020CCC + lsls r0, r6, 2 + ldr r1, _08020C7C @ =_08020C80 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08020C78: .4byte gBattlescriptCurrInstr +_08020C7C: .4byte _08020C80 + .align 2, 0 +_08020C80: + .4byte _08020C98 + .4byte _08020CA0 + .4byte _08020CA8 + .4byte _08020CB0 + .4byte _08020CB8 + .4byte _08020CC2 +_08020C98: + ldrb r0, [r5] + cmp r0, r4 + bne _08020CCC + b _08020CCA +_08020CA0: + ldrb r0, [r5] + cmp r0, r4 + beq _08020CCC + b _08020CCA +_08020CA8: + ldrb r0, [r5] + cmp r0, r4 + bls _08020CCC + b _08020CCA +_08020CB0: + ldrb r0, [r5] + cmp r0, r4 + bcs _08020CCC + b _08020CCA +_08020CB8: + ldrb r0, [r5] + ands r4, r0 + cmp r4, 0 + beq _08020CCC + b _08020CCA +_08020CC2: + ldrb r0, [r5] + ands r4, r0 + cmp r4, 0 + bne _08020CCC +_08020CCA: + str r2, [r3] +_08020CCC: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end atk29_jumpifbyte + + thumb_func_start atk2A_jumpifhalfword +atk2A_jumpifhalfword: @ 8020CD4 + push {r4-r6,lr} + ldr r3, _08020D20 @ =gBattlescriptCurrInstr + ldr r1, [r3] + ldrb r6, [r1, 0x1] + ldrb r2, [r1, 0x2] + ldrb r0, [r1, 0x3] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0x4] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0x5] + lsls r0, 24 + adds r5, r2, r0 + ldrb r4, [r1, 0x6] + ldrb r0, [r1, 0x7] + lsls r0, 8 + orrs r4, r0 + ldrb r2, [r1, 0x8] + ldrb r0, [r1, 0x9] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0xA] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0xB] + lsls r0, 24 + adds r2, r0 + adds r1, 0xC + str r1, [r3] + cmp r6, 0x5 + bhi _08020D74 + lsls r0, r6, 2 + ldr r1, _08020D24 @ =_08020D28 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08020D20: .4byte gBattlescriptCurrInstr +_08020D24: .4byte _08020D28 + .align 2, 0 +_08020D28: + .4byte _08020D40 + .4byte _08020D48 + .4byte _08020D50 + .4byte _08020D58 + .4byte _08020D60 + .4byte _08020D6A +_08020D40: + ldrh r0, [r5] + cmp r0, r4 + bne _08020D74 + b _08020D72 +_08020D48: + ldrh r0, [r5] + cmp r0, r4 + beq _08020D74 + b _08020D72 +_08020D50: + ldrh r0, [r5] + cmp r0, r4 + bls _08020D74 + b _08020D72 +_08020D58: + ldrh r0, [r5] + cmp r0, r4 + bcs _08020D74 + b _08020D72 +_08020D60: + ldrh r0, [r5] + ands r4, r0 + cmp r4, 0 + beq _08020D74 + b _08020D72 +_08020D6A: + ldrh r0, [r5] + ands r4, r0 + cmp r4, 0 + bne _08020D74 +_08020D72: + str r2, [r3] +_08020D74: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end atk2A_jumpifhalfword + + thumb_func_start atk2B_jumpifword +atk2B_jumpifword: @ 8020D7C + push {r4-r6,lr} + ldr r3, _08020DD4 @ =gBattlescriptCurrInstr + ldr r1, [r3] + ldrb r6, [r1, 0x1] + ldrb r2, [r1, 0x2] + ldrb r0, [r1, 0x3] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0x4] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0x5] + lsls r0, 24 + adds r5, r2, r0 + ldrb r4, [r1, 0x6] + ldrb r0, [r1, 0x7] + lsls r0, 8 + orrs r4, r0 + ldrb r0, [r1, 0x8] + lsls r0, 16 + orrs r4, r0 + ldrb r0, [r1, 0x9] + lsls r0, 24 + orrs r4, r0 + ldrb r2, [r1, 0xA] + ldrb r0, [r1, 0xB] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0xC] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0xD] + lsls r0, 24 + adds r2, r0 + adds r1, 0xE + str r1, [r3] + cmp r6, 0x5 + bhi _08020E28 + lsls r0, r6, 2 + ldr r1, _08020DD8 @ =_08020DDC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08020DD4: .4byte gBattlescriptCurrInstr +_08020DD8: .4byte _08020DDC + .align 2, 0 +_08020DDC: + .4byte _08020DF4 + .4byte _08020DFC + .4byte _08020E04 + .4byte _08020E0C + .4byte _08020E14 + .4byte _08020E1E +_08020DF4: + ldr r0, [r5] + cmp r0, r4 + bne _08020E28 + b _08020E26 +_08020DFC: + ldr r0, [r5] + cmp r0, r4 + beq _08020E28 + b _08020E26 +_08020E04: + ldr r0, [r5] + cmp r0, r4 + bls _08020E28 + b _08020E26 +_08020E0C: + ldr r0, [r5] + cmp r0, r4 + bcs _08020E28 + b _08020E26 +_08020E14: + ldr r0, [r5] + ands r0, r4 + cmp r0, 0 + beq _08020E28 + b _08020E26 +_08020E1E: + ldr r0, [r5] + ands r0, r4 + cmp r0, 0 + bne _08020E28 +_08020E26: + str r2, [r3] +_08020E28: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end atk2B_jumpifword + + thumb_func_start atk2C_jumpifarrayequal +atk2C_jumpifarrayequal: @ 8020E30 + push {r4-r7,lr} + ldr r2, _08020E88 @ =gBattlescriptCurrInstr + ldr r3, [r2] + ldrb r1, [r3, 0x1] + ldrb r0, [r3, 0x2] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r3, 0x3] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r3, 0x4] + lsls r0, 24 + adds r5, r1, r0 + ldrb r1, [r3, 0x5] + ldrb r0, [r3, 0x6] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r3, 0x7] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r3, 0x8] + lsls r0, 24 + adds r4, r1, r0 + ldrb r6, [r3, 0x9] + ldrb r1, [r3, 0xA] + ldrb r0, [r3, 0xB] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r3, 0xC] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r3, 0xD] + lsls r0, 24 + adds r1, r0 + mov r12, r1 + movs r1, 0 + cmp r1, r6 + bcs _08020EA8 + ldrb r0, [r5] + ldrb r7, [r4] + cmp r0, r7 + beq _08020E8C + adds r0, r3, 0 + b _08020EA4 + .align 2, 0 +_08020E88: .4byte gBattlescriptCurrInstr +_08020E8C: + adds r5, 0x1 + adds r4, 0x1 + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, r6 + bcs _08020EA8 + ldrb r0, [r5] + ldrb r3, [r4] + cmp r0, r3 + beq _08020E8C + ldr r0, [r2] +_08020EA4: + adds r0, 0xE + str r0, [r2] +_08020EA8: + cmp r1, r6 + bne _08020EB0 + mov r7, r12 + str r7, [r2] +_08020EB0: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end atk2C_jumpifarrayequal + + thumb_func_start atk2D_jumpifarraynotequal +atk2D_jumpifarraynotequal: @ 8020EB8 + push {r4-r7,lr} + movs r7, 0 + ldr r3, _08020F2C @ =gBattlescriptCurrInstr + ldr r1, [r3] + ldrb r2, [r1, 0x1] + ldrb r0, [r1, 0x2] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0x3] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0x4] + lsls r0, 24 + adds r5, r2, r0 + ldrb r2, [r1, 0x5] + ldrb r0, [r1, 0x6] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0x7] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0x8] + lsls r0, 24 + adds r4, r2, r0 + ldrb r6, [r1, 0x9] + ldrb r2, [r1, 0xA] + ldrb r0, [r1, 0xB] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0xC] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0xD] + lsls r0, 24 + adds r2, r0 + mov r12, r2 + movs r1, 0 + cmp r7, r6 + bcs _08020F22 +_08020F06: + ldrb r0, [r5] + ldrb r2, [r4] + cmp r0, r2 + bne _08020F14 + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 +_08020F14: + adds r5, 0x1 + adds r4, 0x1 + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, r6 + bcc _08020F06 +_08020F22: + cmp r7, r6 + beq _08020F30 + mov r0, r12 + b _08020F34 + .align 2, 0 +_08020F2C: .4byte gBattlescriptCurrInstr +_08020F30: + ldr r0, [r3] + adds r0, 0xE +_08020F34: + str r0, [r3] + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end atk2D_jumpifarraynotequal + + thumb_func_start atk2E_setbyte +atk2E_setbyte: @ 8020F3C + ldr r3, _08020F60 @ =gBattlescriptCurrInstr + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + adds r1, r0 + ldrb r0, [r2, 0x5] + strb r0, [r1] + ldr r0, [r3] + adds r0, 0x6 + str r0, [r3] + bx lr + .align 2, 0 +_08020F60: .4byte gBattlescriptCurrInstr + thumb_func_end atk2E_setbyte + + thumb_func_start atk2F_addbyte +atk2F_addbyte: @ 8020F64 + ldr r3, _08020F8C @ =gBattlescriptCurrInstr + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + adds r1, r0 + ldrb r0, [r2, 0x5] + ldrb r2, [r1] + adds r0, r2 + strb r0, [r1] + ldr r0, [r3] + adds r0, 0x6 + str r0, [r3] + bx lr + .align 2, 0 +_08020F8C: .4byte gBattlescriptCurrInstr + thumb_func_end atk2F_addbyte + + thumb_func_start atk30_subbyte +atk30_subbyte: @ 8020F90 + ldr r3, _08020FB8 @ =gBattlescriptCurrInstr + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + adds r1, r0 + ldrb r0, [r1] + ldrb r2, [r2, 0x5] + subs r0, r2 + strb r0, [r1] + ldr r0, [r3] + adds r0, 0x6 + str r0, [r3] + bx lr + .align 2, 0 +_08020FB8: .4byte gBattlescriptCurrInstr + thumb_func_end atk30_subbyte + + thumb_func_start atk31_copyarray +atk31_copyarray: @ 8020FBC + push {r4-r6,lr} + ldr r3, _0802100C @ =gBattlescriptCurrInstr + ldr r1, [r3] + ldrb r2, [r1, 0x1] + ldrb r0, [r1, 0x2] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0x3] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0x4] + lsls r0, 24 + adds r6, r2, r0 + ldrb r2, [r1, 0x5] + ldrb r0, [r1, 0x6] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0x7] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0x8] + lsls r0, 24 + adds r5, r2, r0 + ldrb r4, [r1, 0x9] + movs r2, 0 + cmp r2, r4 + bge _08021000 +_08020FF2: + adds r0, r6, r2 + adds r1, r5, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, r4 + blt _08020FF2 +_08021000: + ldr r0, [r3] + adds r0, 0xA + str r0, [r3] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0802100C: .4byte gBattlescriptCurrInstr + thumb_func_end atk31_copyarray + + thumb_func_start atk32_copyarray_withindex +atk32_copyarray_withindex: @ 8021010 + push {r4-r7,lr} + ldr r3, _08021078 @ =gBattlescriptCurrInstr + ldr r1, [r3] + ldrb r2, [r1, 0x1] + ldrb r0, [r1, 0x2] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0x3] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0x4] + lsls r0, 24 + adds r7, r2, r0 + ldrb r2, [r1, 0x5] + ldrb r0, [r1, 0x6] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0x7] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0x8] + lsls r0, 24 + adds r6, r2, r0 + ldrb r2, [r1, 0x9] + ldrb r0, [r1, 0xA] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r1, 0xB] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r1, 0xC] + lsls r0, 24 + adds r5, r2, r0 + ldrb r4, [r1, 0xD] + movs r2, 0 + cmp r2, r4 + bge _0802106C +_0802105A: + adds r0, r7, r2 + ldrb r1, [r5] + adds r1, r2, r1 + adds r1, r6, r1 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, r4 + blt _0802105A +_0802106C: + ldr r0, [r3] + adds r0, 0xE + str r0, [r3] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08021078: .4byte gBattlescriptCurrInstr + thumb_func_end atk32_copyarray_withindex + + thumb_func_start atk33_orbyte +atk33_orbyte: @ 802107C + ldr r3, _080210A4 @ =gBattlescriptCurrInstr + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + adds r1, r0 + ldrb r0, [r1] + ldrb r2, [r2, 0x5] + orrs r0, r2 + strb r0, [r1] + ldr r0, [r3] + adds r0, 0x6 + str r0, [r3] + bx lr + .align 2, 0 +_080210A4: .4byte gBattlescriptCurrInstr + thumb_func_end atk33_orbyte + + thumb_func_start atk34_orhalfword +atk34_orhalfword: @ 80210A8 + push {r4,lr} + ldr r4, _080210DC @ =gBattlescriptCurrInstr + ldr r3, [r4] + ldrb r2, [r3, 0x1] + ldrb r0, [r3, 0x2] + lsls r0, 8 + adds r2, r0 + ldrb r0, [r3, 0x3] + lsls r0, 16 + adds r2, r0 + ldrb r0, [r3, 0x4] + lsls r0, 24 + adds r2, r0 + ldrb r1, [r3, 0x5] + ldrb r0, [r3, 0x6] + lsls r0, 8 + orrs r1, r0 + ldrh r0, [r2] + orrs r1, r0 + strh r1, [r2] + ldr r0, [r4] + adds r0, 0x7 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080210DC: .4byte gBattlescriptCurrInstr + thumb_func_end atk34_orhalfword + + thumb_func_start atk35_orword +atk35_orword: @ 80210E0 + push {r4,lr} + ldr r4, _08021120 @ =gBattlescriptCurrInstr + ldr r2, [r4] + ldrb r3, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + adds r3, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + adds r3, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + adds r3, r0 + ldrb r1, [r2, 0x5] + ldrb r0, [r2, 0x6] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x7] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x8] + lsls r0, 24 + adds r1, r0 + ldr r0, [r3] + orrs r0, r1 + str r0, [r3] + ldr r0, [r4] + adds r0, 0x9 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08021120: .4byte gBattlescriptCurrInstr + thumb_func_end atk35_orword + + thumb_func_start atk36_bicbyte +atk36_bicbyte: @ 8021124 + ldr r3, _0802114C @ =gBattlescriptCurrInstr + ldr r2, [r3] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + adds r1, r0 + ldrb r2, [r2, 0x5] + ldrb r0, [r1] + bics r0, r2 + strb r0, [r1] + ldr r0, [r3] + adds r0, 0x6 + str r0, [r3] + bx lr + .align 2, 0 +_0802114C: .4byte gBattlescriptCurrInstr + thumb_func_end atk36_bicbyte + + thumb_func_start atk37_bichalfword +atk37_bichalfword: @ 8021150 + push {r4,lr} + ldr r4, _08021184 @ =gBattlescriptCurrInstr + ldr r3, [r4] + ldrb r1, [r3, 0x1] + ldrb r0, [r3, 0x2] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r3, 0x3] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r3, 0x4] + lsls r0, 24 + adds r1, r0 + ldrb r2, [r3, 0x5] + ldrb r0, [r3, 0x6] + lsls r0, 8 + orrs r2, r0 + ldrh r0, [r1] + bics r0, r2 + strh r0, [r1] + ldr r0, [r4] + adds r0, 0x7 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08021184: .4byte gBattlescriptCurrInstr + thumb_func_end atk37_bichalfword + + thumb_func_start atk38_bicword +atk38_bicword: @ 8021188 + push {r4,lr} + ldr r4, _080211C8 @ =gBattlescriptCurrInstr + ldr r2, [r4] + ldrb r3, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + adds r3, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + adds r3, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + adds r3, r0 + ldrb r1, [r2, 0x5] + ldrb r0, [r2, 0x6] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x7] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x8] + lsls r0, 24 + adds r1, r0 + ldr r0, [r3] + bics r0, r1 + str r0, [r3] + ldr r0, [r4] + adds r0, 0x9 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080211C8: .4byte gBattlescriptCurrInstr + thumb_func_end atk38_bicword + + thumb_func_start atk39_pause +atk39_pause: @ 80211CC + push {r4,r5,lr} + ldr r0, _08021200 @ =gBattleExecBuffer + ldr r4, [r0] + cmp r4, 0 + bne _080211F8 + ldr r5, _08021204 @ =gBattlescriptCurrInstr + ldr r2, [r5] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldr r3, _08021208 @ =gPauseCounterBattle + ldrh r0, [r3] + adds r0, 0x1 + strh r0, [r3] + lsls r0, 16 + lsrs r0, 16 + cmp r0, r1 + bcc _080211F8 + strh r4, [r3] + adds r0, r2, 0x3 + str r0, [r5] +_080211F8: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08021200: .4byte gBattleExecBuffer +_08021204: .4byte gBattlescriptCurrInstr +_08021208: .4byte gPauseCounterBattle + thumb_func_end atk39_pause + + thumb_func_start atk3A_waitstate +atk3A_waitstate: @ 802120C + push {lr} + ldr r0, _08021224 @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _0802121E + ldr r1, _08021228 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_0802121E: + pop {r0} + bx r0 + .align 2, 0 +_08021224: .4byte gBattleExecBuffer +_08021228: .4byte gBattlescriptCurrInstr + thumb_func_end atk3A_waitstate + + thumb_func_start atk3B_healthbar_update +atk3B_healthbar_update: @ 802122C + push {lr} + ldr r0, _08021240 @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0 + bne _0802124C + ldr r0, _08021244 @ =gActiveBank + ldr r1, _08021248 @ =gBankTarget + b _08021250 + .align 2, 0 +_08021240: .4byte gBattlescriptCurrInstr +_08021244: .4byte gActiveBank +_08021248: .4byte gBankTarget +_0802124C: + ldr r0, _08021274 @ =gActiveBank + ldr r1, _08021278 @ =gBankAttacker +_08021250: + ldrb r1, [r1] + strb r1, [r0] + ldr r0, _0802127C @ =gBattleMoveDamage + ldrh r1, [r0] + movs r0, 0 + bl EmitHealthBarUpdate + ldr r0, _08021274 @ =gActiveBank + ldrb r0, [r0] + bl MarkBufferBankForExecution + ldr r1, _08021280 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08021274: .4byte gActiveBank +_08021278: .4byte gBankAttacker +_0802127C: .4byte gBattleMoveDamage +_08021280: .4byte gBattlescriptCurrInstr + thumb_func_end atk3B_healthbar_update + + thumb_func_start atk3C_return +atk3C_return: @ 8021284 + push {lr} + bl b_movescr_stack_pop_cursor + pop {r0} + bx r0 + thumb_func_end atk3C_return + + thumb_func_start atk3D_end +atk3D_end: @ 8021290 + ldr r0, _080212A4 @ =gBattleMoveFlags + movs r1, 0 + strb r1, [r0] + ldr r0, _080212A8 @ =gActiveBank + strb r1, [r0] + ldr r1, _080212AC @ =gFightStateTracker + movs r0, 0xB + strb r0, [r1] + bx lr + .align 2, 0 +_080212A4: .4byte gBattleMoveFlags +_080212A8: .4byte gActiveBank +_080212AC: .4byte gFightStateTracker + thumb_func_end atk3D_end + + thumb_func_start atk3E_end2 +atk3E_end2: @ 80212B0 + ldr r1, _080212C0 @ =gActiveBank + movs r0, 0 + strb r0, [r1] + ldr r1, _080212C4 @ =gFightStateTracker + movs r0, 0xB + strb r0, [r1] + bx lr + .align 2, 0 +_080212C0: .4byte gActiveBank +_080212C4: .4byte gFightStateTracker + thumb_func_end atk3E_end2 + + thumb_func_start atk3F_end3 +atk3F_end3: @ 80212C8 + push {lr} + bl b_movescr_stack_pop_cursor + ldr r2, _080212F0 @ =0x02017140 + adds r1, r2, 0 + adds r1, 0x20 + ldrb r0, [r1] + cmp r0, 0 + beq _080212DE + subs r0, 0x1 + strb r0, [r1] +_080212DE: + ldr r0, _080212F4 @ =gBattleMainFunc + ldrb r1, [r1] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + str r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_080212F0: .4byte 0x02017140 +_080212F4: .4byte gBattleMainFunc + thumb_func_end atk3F_end3 + + thumb_func_start atk41_call +atk41_call: @ 80212F8 + push {r4,lr} + ldr r4, _08021324 @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x5 + bl b_movescr_stack_push + ldr r2, [r4] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08021324: .4byte gBattlescriptCurrInstr + thumb_func_end atk41_call + + thumb_func_start atk42_jumpiftype2 +atk42_jumpiftype2: @ 8021328 + push {r4,lr} + ldr r4, _08021370 @ =gBattlescriptCurrInstr + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_8015150 + lsls r0, 24 + lsrs r0, 24 + ldr r3, [r4] + ldr r2, _08021374 @ =gBattleMons + movs r1, 0x58 + muls r0, r1 + adds r0, r2 + adds r1, r0, 0 + adds r1, 0x21 + ldrb r2, [r3, 0x2] + ldrb r1, [r1] + cmp r2, r1 + beq _08021356 + adds r0, 0x22 + ldrb r0, [r0] + cmp r2, r0 + bne _08021378 +_08021356: + ldrb r1, [r3, 0x3] + ldrb r0, [r3, 0x4] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r3, 0x5] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r3, 0x6] + lsls r0, 24 + orrs r1, r0 + str r1, [r4] + b _0802137C + .align 2, 0 +_08021370: .4byte gBattlescriptCurrInstr +_08021374: .4byte gBattleMons +_08021378: + adds r0, r3, 0x7 + str r0, [r4] +_0802137C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end atk42_jumpiftype2 + + thumb_func_start atk43_jumpifabilitypresent +atk43_jumpifabilitypresent: @ 8021384 + push {r4,lr} + sub sp, 0x4 + ldr r4, _080213BC @ =gBattlescriptCurrInstr + ldr r0, [r4] + ldrb r2, [r0, 0x1] + movs r0, 0 + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + cmp r0, 0 + beq _080213C0 + 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 _080213C6 + .align 2, 0 +_080213BC: .4byte gBattlescriptCurrInstr +_080213C0: + ldr r0, [r4] + adds r0, 0x6 + str r0, [r4] +_080213C6: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end atk43_jumpifabilitypresent + + thumb_func_start atk44 +atk44: @ 80213D0 + ldr r1, _080213E4 @ =0x02000000 + ldr r0, _080213E8 @ =gBankAttacker + ldrb r0, [r0] + ldr r2, _080213EC @ =0x00016060 + adds r0, r2 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + bx lr + .align 2, 0 +_080213E4: .4byte 0x02000000 +_080213E8: .4byte gBankAttacker +_080213EC: .4byte 0x00016060 + thumb_func_end atk44 + + thumb_func_start atk45_playanimation +atk45_playanimation: @ 80213F0 + push {r4-r6,lr} + ldr r5, _08021444 @ =gBattlescriptCurrInstr + ldr r0, [r5] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r6, _08021448 @ =gActiveBank + strb r0, [r6] + ldr r2, [r5] + ldrb r1, [r2, 0x3] + ldrb r0, [r2, 0x4] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x6] + lsls r0, 24 + adds r3, r1, r0 + ldrb r4, [r2, 0x2] + adds r0, r4, 0 + cmp r0, 0x1 + beq _08021426 + cmp r0, 0x11 + beq _08021426 + cmp r0, 0x2 + bne _0802144C +_08021426: + ldr r4, _08021444 @ =gBattlescriptCurrInstr + ldr r0, [r4] + ldrb r1, [r0, 0x2] + ldrh r2, [r3] + movs r0, 0 + bl EmitBattleAnimation + ldr r0, _08021448 @ =gActiveBank + ldrb r0, [r0] + bl MarkBufferBankForExecution + ldr r0, [r4] + adds r0, 0x7 + str r0, [r4] + b _080214AE + .align 2, 0 +_08021444: .4byte gBattlescriptCurrInstr +_08021448: .4byte gActiveBank +_0802144C: + ldr r0, _08021464 @ =gHitMarker + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0802146C + adds r0, r2, 0x7 + bl b_movescr_stack_push + ldr r0, _08021468 @ =BattleScript_Pausex20 + b _080214AC + .align 2, 0 +_08021464: .4byte gHitMarker +_08021468: .4byte BattleScript_Pausex20 +_0802146C: + adds r0, r4, 0 + subs r0, 0xA + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bls _08021498 + ldr r1, _08021490 @ =gStatuses3 + ldrb r0, [r6] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + ldr r1, _08021494 @ =0x000400c0 + ands r0, r1 + cmp r0, 0 + beq _08021498 + adds r0, r2, 0x7 + b _080214AC + .align 2, 0 +_08021490: .4byte gStatuses3 +_08021494: .4byte 0x000400c0 +_08021498: + ldrb r1, [r2, 0x2] + ldrh r2, [r3] + movs r0, 0 + bl EmitBattleAnimation + ldrb r0, [r6] + bl MarkBufferBankForExecution + ldr r0, [r5] + adds r0, 0x7 +_080214AC: + str r0, [r5] +_080214AE: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end atk45_playanimation + + thumb_func_start atk46_playanimation2 +atk46_playanimation2: @ 80214B4 + push {r4-r7,lr} + ldr r6, _0802151C @ =gBattlescriptCurrInstr + ldr r0, [r6] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r7, _08021520 @ =gActiveBank + strb r0, [r7] + ldr r2, [r6] + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + adds r3, r1, r0 + ldrb r1, [r2, 0x6] + ldrb r0, [r2, 0x7] + lsls r0, 8 + adds r1, r0 + ldrb r0, [r2, 0x8] + lsls r0, 16 + adds r1, r0 + ldrb r0, [r2, 0x9] + lsls r0, 24 + adds r4, r1, r0 + ldrb r5, [r3] + adds r0, r5, 0 + cmp r0, 0x1 + beq _080214FE + cmp r0, 0x11 + beq _080214FE + cmp r0, 0x2 + bne _08021524 +_080214FE: + ldrb r1, [r3] + ldrh r2, [r4] + movs r0, 0 + bl EmitBattleAnimation + ldr r0, _08021520 @ =gActiveBank + ldrb r0, [r0] + bl MarkBufferBankForExecution + ldr r1, _0802151C @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0xA + str r0, [r1] + b _0802157A + .align 2, 0 +_0802151C: .4byte gBattlescriptCurrInstr +_08021520: .4byte gActiveBank +_08021524: + ldr r0, _08021534 @ =gHitMarker + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08021538 + adds r0, r2, 0 + b _08021576 + .align 2, 0 +_08021534: .4byte gHitMarker +_08021538: + adds r0, r5, 0 + subs r0, 0xA + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bls _08021564 + ldr r1, _0802155C @ =gStatuses3 + ldrb r0, [r7] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + ldr r1, _08021560 @ =0x000400c0 + ands r0, r1 + cmp r0, 0 + beq _08021564 + adds r0, r2, 0 + b _08021576 + .align 2, 0 +_0802155C: .4byte gStatuses3 +_08021560: .4byte 0x000400c0 +_08021564: + ldrb r1, [r3] + ldrh r2, [r4] + movs r0, 0 + bl EmitBattleAnimation + ldrb r0, [r7] + bl MarkBufferBankForExecution + ldr r0, [r6] +_08021576: + adds r0, 0xA + str r0, [r6] +_0802157A: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end atk46_playanimation2 + + thumb_func_start atk47_setgraphicalstatchangevalues_setgraphicalstatchangevalues_setgraphicalstatchangevalues +atk47_setgraphicalstatchangevalues_setgraphicalstatchangevalues_setgraphicalstatchangevalues: @ 8021580 + push {r4,lr} + movs r3, 0 + ldr r0, _080215A0 @ =0x02000000 + ldr r2, _080215A4 @ =0x0001601e + adds r1, r0, r2 + ldrb r1, [r1] + movs r2, 0xF0 + ands r2, r1 + adds r4, r0, 0 + cmp r2, 0x20 + beq _080215B6 + cmp r2, 0x20 + bgt _080215A8 + cmp r2, 0x10 + beq _080215B2 + b _080215C0 + .align 2, 0 +_080215A0: .4byte 0x02000000 +_080215A4: .4byte 0x0001601e +_080215A8: + cmp r2, 0x90 + beq _080215BA + cmp r2, 0xA0 + beq _080215BE + b _080215C0 +_080215B2: + movs r3, 0xF + b _080215C0 +_080215B6: + movs r3, 0x27 + b _080215C0 +_080215BA: + movs r3, 0x16 + b _080215C0 +_080215BE: + movs r3, 0x2E +_080215C0: + ldr r1, _080215EC @ =0x0001601e + adds r0, r4, r1 + ldrb r1, [r0] + movs r0, 0xF + ands r0, r1 + adds r0, r3, r0 + subs r0, 0x1 + ldr r2, _080215F0 @ =0x000160a4 + adds r1, r4, r2 + movs r2, 0 + strb r0, [r1] + ldr r1, _080215F4 @ =0x000160a5 + adds r0, r4, r1 + strb r2, [r0] + ldr r1, _080215F8 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080215EC: .4byte 0x0001601e +_080215F0: .4byte 0x000160a4 +_080215F4: .4byte 0x000160a5 +_080215F8: .4byte gBattlescriptCurrInstr + thumb_func_end atk47_setgraphicalstatchangevalues_setgraphicalstatchangevalues_setgraphicalstatchangevalues + + thumb_func_start atk48_playstatchangeanimation +atk48_playstatchangeanimation: @ 80215FC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + movs r7, 0 + movs r0, 0 + mov r8, r0 + movs r3, 0 + ldr r5, _08021670 @ =gBattlescriptCurrInstr + ldr r0, [r5] + ldrb r0, [r0, 0x1] + str r3, [sp] + bl sub_8015150 + ldr r2, _08021674 @ =gActiveBank + strb r0, [r2] + ldr r0, [r5] + ldrb r4, [r0, 0x2] + ldrb r1, [r0, 0x3] + movs r0, 0x1 + ands r0, r1 + ldr r3, [sp] + cmp r0, 0 + beq _08021710 + movs r0, 0x2 + ands r0, r1 + movs r1, 0x15 + cmp r0, 0 + beq _0802163C + movs r1, 0x2D +_0802163C: + cmp r4, 0 + beq _080216E4 + movs r0, 0x1 + mov r10, r0 + ldr r0, _08021678 @ =gUnknown_02024A98 + mov r9, r0 + lsls r5, r1, 16 +_0802164A: + adds r0, r4, 0 + mov r1, r10 + ands r0, r1 + cmp r0, 0 + beq _080216D6 + ldr r0, _08021670 @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r1, [r0, 0x3] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0802167C + ldr r0, _08021674 @ =gActiveBank + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r7, r0 + b _080216C4 + .align 2, 0 +_08021670: .4byte gBattlescriptCurrInstr +_08021674: .4byte gActiveBank +_08021678: .4byte gUnknown_02024A98 +_0802167C: + ldr r6, _08021700 @ =gActiveBank + ldrb r0, [r6] + str r3, [sp] + bl GetBankIdentity + mov r1, r10 + ands r1, r0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + ldr r1, _08021704 @ =gSideTimer + adds r0, r1 + ldrb r0, [r0, 0x2] + ldr r3, [sp] + cmp r0, 0 + bne _080216D6 + ldr r0, _08021708 @ =gBattleMons + ldrb r2, [r6] + movs r1, 0x58 + muls r2, r1 + adds r0, r2, r0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x1D + beq _080216D6 + cmp r0, 0x49 + beq _080216D6 + cmp r0, 0x33 + bne _080216BA + cmp r7, 0x6 + beq _080216D6 +_080216BA: + cmp r0, 0x34 + bne _080216C2 + cmp r7, 0x1 + beq _080216D6 +_080216C2: + adds r0, r7, r2 +_080216C4: + add r0, r9 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0 + ble _080216D6 + lsrs r0, r5, 16 + mov r8, r0 + adds r3, 0x1 +_080216D6: + lsrs r4, 1 + movs r1, 0x80 + lsls r1, 9 + adds r5, r1 + adds r7, 0x1 + cmp r4, 0 + bne _0802164A +_080216E4: + ldr r0, _0802170C @ =gBattlescriptCurrInstr + mov r9, r0 + cmp r3, 0x1 + ble _08021772 + ldr r0, [r0] + ldrb r1, [r0, 0x3] + movs r0, 0x2 + ands r0, r1 + movs r1, 0x39 + mov r8, r1 + cmp r0, 0 + beq _08021772 + movs r0, 0x3A + b _08021770 + .align 2, 0 +_08021700: .4byte gActiveBank +_08021704: .4byte gSideTimer +_08021708: .4byte gBattleMons +_0802170C: .4byte gBattlescriptCurrInstr +_08021710: + movs r0, 0x2 + ands r0, r1 + movs r1, 0xE + cmp r0, 0 + beq _0802171C + movs r1, 0x26 +_0802171C: + mov r9, r5 + cmp r4, 0 + beq _08021758 + ldr r6, _0802178C @ =gUnknown_02024A98 + adds r5, r2, 0 + lsls r2, r1, 16 +_08021728: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _0802174A + ldrb r1, [r5] + movs r0, 0x58 + muls r0, r1 + adds r0, r7, r0 + adds r0, r6 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0xB + bgt _0802174A + lsrs r1, r2, 16 + mov r8, r1 + adds r3, 0x1 +_0802174A: + lsrs r4, 1 + movs r0, 0x80 + lsls r0, 9 + adds r2, r0 + adds r7, 0x1 + cmp r4, 0 + bne _08021728 +_08021758: + cmp r3, 0x1 + ble _08021772 + mov r1, r9 + ldr r0, [r1] + ldrb r1, [r0, 0x3] + movs r0, 0x2 + ands r0, r1 + movs r1, 0x37 + mov r8, r1 + cmp r0, 0 + beq _08021772 + movs r0, 0x38 +_08021770: + mov r8, r0 +_08021772: + mov r1, r9 + ldr r2, [r1] + ldrb r1, [r2, 0x3] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08021790 + cmp r3, 0x1 + bgt _08021790 + adds r0, r2, 0x4 + mov r1, r9 + b _080217E6 + .align 2, 0 +_0802178C: .4byte gUnknown_02024A98 +_08021790: + cmp r3, 0 + beq _080217E0 + ldr r0, _080217D0 @ =0x02000000 + ldr r1, _080217D4 @ =0x000160dc + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, 0 + bne _080217E0 + movs r0, 0 + movs r1, 0x1 + mov r2, r8 + str r3, [sp] + bl EmitBattleAnimation + ldr r0, _080217D8 @ =gActiveBank + ldrb r0, [r0] + bl MarkBufferBankForExecution + ldr r0, _080217DC @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r1, [r0, 0x3] + movs r0, 0x4 + ands r0, r1 + ldr r3, [sp] + cmp r0, 0 + beq _080217CC + cmp r3, 0x1 + ble _080217CC + movs r0, 0x1 + strb r0, [r4] +_080217CC: + ldr r1, _080217DC @ =gBattlescriptCurrInstr + b _080217E2 + .align 2, 0 +_080217D0: .4byte 0x02000000 +_080217D4: .4byte 0x000160dc +_080217D8: .4byte gActiveBank +_080217DC: .4byte gBattlescriptCurrInstr +_080217E0: + mov r1, r9 +_080217E2: + ldr r0, [r1] + adds r0, 0x4 +_080217E6: + str r0, [r1] + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end atk48_playstatchangeanimation + + thumb_func_start sub_80217F8 +sub_80217F8: @ 80217F8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + movs r0, 0 + mov r10, r0 + ldr r0, _08021834 @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r1, [r0, 0x1] + str r1, [sp, 0x10] + ldrb r0, [r0, 0x2] + str r0, [sp, 0x14] + ldr r1, _08021838 @ =gBattleMons + ldr r0, _0802183C @ =gBankAttacker + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r1, r0, r1 + ldrh r0, [r1, 0x2E] + cmp r0, 0xAF + bne _08021844 + ldr r1, _08021840 @ =gEnigmaBerries + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0, 0x7] + b _0802184E + .align 2, 0 +_08021834: .4byte gBattlescriptCurrInstr +_08021838: .4byte gBattleMons +_0802183C: .4byte gBankAttacker +_08021840: .4byte gEnigmaBerries +_08021844: + ldrh r0, [r1, 0x2E] + bl ItemId_GetHoldEffect + lsls r0, 24 + lsrs r0, 24 +_0802184E: + str r0, [sp, 0x8] + ldr r0, _0802186C @ =gBankAttacker + ldrb r1, [r0] + lsls r1, 1 + ldr r0, _08021870 @ =0x020160e8 + adds r1, r0 + str r1, [sp, 0xC] + subs r0, 0xCC + ldrb r0, [r0] + cmp r0, 0 + beq _080218C0 + movs r2, 0x3F + ands r2, r0 + str r2, [sp, 0x4] + b _080218D2 + .align 2, 0 +_0802186C: .4byte gBankAttacker +_08021870: .4byte 0x020160e8 +_08021874: + strb r2, [r7] + ldr r0, [r5] + orrs r0, r6 + str r0, [r5] + ldr r0, _080218AC @ =0x02000000 + ldr r3, _080218B0 @ =0x0001600c + adds r0, r3 + strb r4, [r0] + bl sub_8020B54 + ldr r2, _080218B4 @ =gUnknown_081D6BBC + mov r4, r8 + ldrh r1, [r4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + add r0, r9 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + bl b_movescr_stack_push + ldr r1, _080218B8 @ =gBattlescriptCurrInstr + ldr r0, _080218BC @ =gUnknown_081D9B2D + bl _0802229C + .align 2, 0 +_080218AC: .4byte 0x02000000 +_080218B0: .4byte 0x0001600c +_080218B4: .4byte gUnknown_081D6BBC +_080218B8: .4byte gBattlescriptCurrInstr +_080218BC: .4byte gUnknown_081D9B2D +_080218C0: + ldr r2, _080218D8 @ =gBattleMoves + ldr r0, _080218DC @ =gCurrentMove + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x2] + str r0, [sp, 0x4] +_080218D2: + ldr r5, _080218E0 @ =0x02000000 + mov r12, r5 + b _080218EE + .align 2, 0 +_080218D8: .4byte gBattleMoves +_080218DC: .4byte gCurrentMove +_080218E0: .4byte 0x02000000 +_080218E4: + mov r0, r10 + cmp r0, 0 + beq _080218EE + bl _08022286 +_080218EE: + ldr r0, _08021908 @ =0x0001600c + add r0, r12 + ldrb r0, [r0] + cmp r0, 0x11 + bls _080218FC + bl _0802224E +_080218FC: + lsls r0, 2 + ldr r1, _0802190C @ =_08021910 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08021908: .4byte 0x0001600c +_0802190C: .4byte _08021910 + .align 2, 0 +_08021910: + .4byte _08021958 + .4byte _08021A34 + .4byte _08021AF0 + .4byte _08021B20 + .4byte _08021B44 + .4byte _08021B78 + .4byte _08021B9C + .4byte _08021C40 + .4byte _08021C78 + .4byte _08021CA8 + .4byte _08021CCC + .4byte _08021D18 + .4byte _08021DAC + .4byte _08021E30 + .4byte _08021E70 + .4byte _08022068 + .4byte _080221C0 + .4byte _0802224E +_08021958: + ldr r5, _08021A08 @ =gBattleMons + ldr r2, _08021A0C @ =gBankTarget + ldrb r4, [r2] + movs r6, 0x58 + adds r3, r4, 0 + muls r3, r6 + adds r0, r5, 0 + adds r0, 0x50 + adds r0, r3, r0 + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 16 + ands r1, r0 + cmp r1, 0 + beq _080219FE + adds r0, r3, r5 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _080219FE + ldr r0, _08021A10 @ =gBankAttacker + ldrb r1, [r0] + cmp r1, r4 + beq _080219FE + adds r0, r1, 0 + bl GetBankSide + adds r4, r0, 0 + ldr r1, _08021A0C @ =gBankTarget + ldrb r0, [r1] + bl GetBankSide + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + beq _080219FE + ldr r0, _08021A14 @ =gBattleMoveFlags + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _080219FE + ldr r2, _08021A18 @ =gProtectStructs + ldr r4, _08021A0C @ =gBankTarget + ldrb r3, [r4] + lsls r1, r3, 4 + adds r0, r2, 0x4 + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + bne _080219C8 + adds r0, r2, 0 + adds r0, 0x8 + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + beq _080219FE +_080219C8: + ldr r2, _08021A1C @ =gBattleMoves + ldr r0, _08021A20 @ =gCurrentMove + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1] + cmp r0, 0 + beq _080219FE + adds r0, r3, 0 + muls r0, r6 + adds r1, r0, r5 + ldrb r2, [r1, 0x19] + movs r0, 0x19 + ldrsb r0, [r1, r0] + cmp r0, 0xB + bgt _080219FE + adds r0, r2, 0x1 + strb r0, [r1, 0x19] + bl b_movescr_stack_push_cursor + ldr r1, _08021A24 @ =gBattlescriptCurrInstr + ldr r0, _08021A28 @ =gUnknown_081D9132 + str r0, [r1] + movs r5, 0x1 + mov r10, r5 +_080219FE: + ldr r2, _08021A2C @ =0x02000000 + ldr r0, _08021A30 @ =0x0001600c + adds r1, r2, r0 + b _08021E00 + .align 2, 0 +_08021A08: .4byte gBattleMons +_08021A0C: .4byte gBankTarget +_08021A10: .4byte gBankAttacker +_08021A14: .4byte gBattleMoveFlags +_08021A18: .4byte gProtectStructs +_08021A1C: .4byte gBattleMoves +_08021A20: .4byte gCurrentMove +_08021A24: .4byte gBattlescriptCurrInstr +_08021A28: .4byte gUnknown_081D9132 +_08021A2C: .4byte 0x02000000 +_08021A30: .4byte 0x0001600c +_08021A34: + ldr r2, _08021AD0 @ =gBattleMons + ldr r1, _08021AD4 @ =gBankTarget + ldrb r4, [r1] + movs r3, 0x58 + mov r12, r3 + mov r3, r12 + muls r3, r4 + adds r7, r2, 0 + adds r7, 0x4C + adds r6, r3, r7 + ldr r5, [r6] + movs r0, 0x20 + ands r0, r5 + cmp r0, 0 + bne _08021A54 + b _08021DFA +_08021A54: + adds r0, r3, r2 + ldrh r0, [r0, 0x28] + cmp r0, 0 + bne _08021A5E + b _08021DFA +_08021A5E: + ldr r0, _08021AD8 @ =gBankAttacker + ldrb r0, [r0] + cmp r0, r4 + bne _08021A68 + b _08021DFA +_08021A68: + ldr r0, _08021ADC @ =gSpecialStatuses + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 2 + adds r0, 0xC + adds r1, r0 + ldr r0, [r1] + cmp r0, 0 + bne _08021A7C + b _08021DFA +_08021A7C: + ldr r0, _08021AE0 @ =gBattleMoveFlags + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + beq _08021A8A + b _08021DFA +_08021A8A: + ldr r4, [sp, 0x4] + cmp r4, 0xA + beq _08021A92 + b _08021DFA +_08021A92: + movs r0, 0x21 + negs r0, r0 + ands r5, r0 + str r5, [r6] + ldr r4, _08021AE4 @ =gActiveBank + ldr r5, _08021AD4 @ =gBankTarget + ldrb r0, [r5] + strb r0, [r4] + ldrb r0, [r5] + mov r1, r12 + muls r1, r0 + adds r0, r1, 0 + adds r0, r7 + str r0, [sp] + movs r0, 0 + movs r1, 0x28 + movs r2, 0 + movs r3, 0x4 + bl EmitSetAttributes + ldrb r0, [r4] + bl MarkBufferBankForExecution + bl b_movescr_stack_push_cursor + ldr r1, _08021AE8 @ =gBattlescriptCurrInstr + ldr r0, _08021AEC @ =gUnknown_081D955D + str r0, [r1] + movs r2, 0x1 + mov r10, r2 + b _08021DFA + .align 2, 0 +_08021AD0: .4byte gBattleMons +_08021AD4: .4byte gBankTarget +_08021AD8: .4byte gBankAttacker +_08021ADC: .4byte gSpecialStatuses +_08021AE0: .4byte gBattleMoveFlags +_08021AE4: .4byte gActiveBank +_08021AE8: .4byte gBattlescriptCurrInstr +_08021AEC: .4byte gUnknown_081D955D +_08021AF0: + ldr r0, _08021B14 @ =gBankTarget + ldrb r1, [r0] + movs r0, 0 + str r0, [sp] + movs r0, 0x7 + movs r2, 0 + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + cmp r0, 0 + beq _08021B0C + movs r4, 0x1 + mov r10, r4 +_08021B0C: + ldr r2, _08021B18 @ =0x02000000 + ldr r5, _08021B1C @ =0x0001600c + adds r1, r2, r5 + b _08021E00 + .align 2, 0 +_08021B14: .4byte gBankTarget +_08021B18: .4byte 0x02000000 +_08021B1C: .4byte 0x0001600c +_08021B20: + ldr r0, _08021B40 @ =gBankTarget + ldrb r1, [r0] + movs r0, 0 + str r0, [sp] + movs r0, 0x4 + movs r2, 0 + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + cmp r0, 0 + bne _08021B3A + b _08021DFA +_08021B3A: + movs r0, 0x1 + mov r10, r0 + b _08021DFA + .align 2, 0 +_08021B40: .4byte gBankTarget +_08021B44: + movs r0, 0 + str r0, [sp] + movs r0, 0x5 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + cmp r0, 0 + beq _08021B68 + movs r4, 0x1 + mov r10, r4 + ldr r5, _08021B64 @ =0x02000000 + mov r12, r5 + b _0802224E + .align 2, 0 +_08021B64: .4byte 0x02000000 +_08021B68: + ldr r2, _08021B70 @ =0x02000000 + ldr r0, _08021B74 @ =0x0001600c + adds r1, r2, r0 + b _08021E00 + .align 2, 0 +_08021B70: .4byte 0x02000000 +_08021B74: .4byte 0x0001600c +_08021B78: + ldr r0, _08021B98 @ =gBankAttacker + ldrb r1, [r0] + movs r0, 0 + str r0, [sp] + movs r0, 0x8 + movs r2, 0 + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + cmp r0, 0 + bne _08021B92 + b _08021DFA +_08021B92: + movs r1, 0x1 + mov r10, r1 + b _08021DFA + .align 2, 0 +_08021B98: .4byte gBankAttacker +_08021B9C: + ldr r0, _08021C28 @ =gHitMarker + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 18 + ands r0, r1 + cmp r0, 0 + beq _08021BE0 + ldr r4, [sp, 0x8] + cmp r4, 0x1D + bne _08021BE0 + ldr r0, _08021C2C @ =gUnknown_02024BE8 + ldrh r2, [r0] + adds r7, r0, 0 + cmp r2, 0xA5 + beq _08021BE0 + ldr r5, [sp, 0xC] + ldrh r1, [r5] + cmp r1, 0 + beq _08021BC8 + ldr r0, _08021C30 @ =0x0000ffff + cmp r1, r0 + bne _08021BE0 +_08021BC8: + cmp r2, 0xE2 + bne _08021BDA + ldr r0, _08021C34 @ =gBattleMoveFlags + ldrb r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + bne _08021BDA + b _08022244 +_08021BDA: + ldrh r0, [r7] + ldr r1, [sp, 0xC] + strh r0, [r1] +_08021BE0: + movs r4, 0 + ldr r2, _08021C38 @ =gBattleMons + ldr r3, _08021C3C @ =gBankAttacker + ldrb r1, [r3] + movs r0, 0x58 + muls r0, r1 + adds r2, 0xC + adds r0, r2 + ldrh r0, [r0] + ldr r5, [sp, 0xC] + ldrh r1, [r5] + mov r9, r3 + cmp r0, r1 + beq _08021C18 + mov r6, r9 + movs r3, 0x58 + adds r5, r1, 0 +_08021C02: + adds r4, 0x1 + cmp r4, 0x3 + bgt _08021C18 + lsls r0, r4, 1 + ldrb r1, [r6] + muls r1, r3 + adds r0, r1 + adds r0, r2 + ldrh r0, [r0] + cmp r0, r5 + bne _08021C02 +_08021C18: + cmp r4, 0x4 + beq _08021C1E + b _08022244 +_08021C1E: + movs r0, 0 + ldr r1, [sp, 0xC] +_08021C22: + strh r0, [r1] + b _08022244 + .align 2, 0 +_08021C28: .4byte gHitMarker +_08021C2C: .4byte gUnknown_02024BE8 +_08021C30: .4byte 0x0000ffff +_08021C34: .4byte gBattleMoveFlags +_08021C38: .4byte gBattleMons +_08021C3C: .4byte gBankAttacker +_08021C40: + movs r4, 0 + ldr r0, _08021C6C @ =gNoOfAllBanks + ldrb r2, [r0] + cmp r4, r2 + blt _08021C4C + b _08022244 +_08021C4C: + movs r5, 0 + ldr r2, _08021C70 @ =0x020160f0 + ldr r3, _08021C74 @ =gBattleMons +_08021C52: + ldrh r1, [r2] + cmp r1, 0 + beq _08021C5C + strh r1, [r3, 0x2E] + strh r5, [r2] +_08021C5C: + adds r2, 0x2 + adds r3, 0x58 + adds r4, 0x1 + ldrb r1, [r0] + cmp r4, r1 + blt _08021C52 + b _08022244 + .align 2, 0 +_08021C6C: .4byte gNoOfAllBanks +_08021C70: .4byte 0x020160f0 +_08021C74: .4byte gBattleMons +_08021C78: + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl sub_801A02C + lsls r0, 24 + cmp r0, 0 + beq _08021C98 + movs r2, 0x1 + mov r10, r2 + ldr r3, _08021C94 @ =0x02000000 + mov r12, r3 + b _0802224E + .align 2, 0 +_08021C94: .4byte 0x02000000 +_08021C98: + ldr r2, _08021CA0 @ =0x02000000 + ldr r4, _08021CA4 @ =0x0001600c + adds r1, r2, r4 + b _08021E00 + .align 2, 0 +_08021CA0: .4byte 0x02000000 +_08021CA4: .4byte 0x0001600c +_08021CA8: + movs r0, 0x4 + movs r1, 0 + movs r2, 0 + bl sub_801A02C + lsls r0, 24 + cmp r0, 0 + beq _08021CBC + movs r5, 0x1 + mov r10, r5 +_08021CBC: + ldr r2, _08021CC4 @ =0x02000000 + ldr r0, _08021CC8 @ =0x0001600c + adds r1, r2, r0 + b _08021E00 + .align 2, 0 +_08021CC4: .4byte 0x02000000 +_08021CC8: .4byte 0x0001600c +_08021CCC: + ldr r1, _08021D04 @ =gStatuses3 + ldr r0, _08021D08 @ =gBankAttacker + ldrb r2, [r0] + lsls r0, r2, 2 + adds r0, r1 + ldr r0, [r0] + ldr r1, _08021D0C @ =0x000400c0 + ands r0, r1 + cmp r0, 0 + bne _08021CE2 + b _08021DFA +_08021CE2: + ldr r0, _08021D10 @ =gHitMarker + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08021CF0 + b _08021DFA +_08021CF0: + ldr r4, _08021D14 @ =gActiveBank + strb r2, [r4] + movs r0, 0 + movs r1, 0x1 + bl EmitSpriteInvisibility + ldrb r0, [r4] + bl MarkBufferBankForExecution + b _08021DFA + .align 2, 0 +_08021D04: .4byte gStatuses3 +_08021D08: .4byte gBankAttacker +_08021D0C: .4byte 0x000400c0 +_08021D10: .4byte gHitMarker +_08021D14: .4byte gActiveBank +_08021D18: + ldr r0, _08021D88 @ =gBattleMoveFlags + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _08021D44 + ldr r1, _08021D8C @ =gStatuses3 + ldr r0, _08021D90 @ =gBankAttacker + ldrb r2, [r0] + lsls r0, r2, 2 + adds r0, r1 + ldr r0, [r0] + ldr r1, _08021D94 @ =0x000400c0 + ands r0, r1 + cmp r0, 0 + beq _08021D44 + adds r0, r2, 0 + bl sub_8015660 + lsls r0, 24 + cmp r0, 0 + beq _08021D7E +_08021D44: + ldr r4, _08021D98 @ =gActiveBank + ldr r5, _08021D90 @ =gBankAttacker + ldrb r0, [r5] + strb r0, [r4] + movs r0, 0 + movs r1, 0 + bl EmitSpriteInvisibility + ldrb r0, [r4] + bl MarkBufferBankForExecution + ldr r0, _08021D8C @ =gStatuses3 + ldrb r2, [r5] + lsls r2, 2 + adds r2, r0 + ldr r0, [r2] + ldr r1, _08021D9C @ =0xfffbff3f + ands r0, r1 + str r0, [r2] + ldr r2, _08021DA0 @ =gSpecialStatuses + ldrb r1, [r5] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] +_08021D7E: + ldr r2, _08021DA4 @ =0x02000000 + ldr r4, _08021DA8 @ =0x0001600c + adds r1, r2, r4 + b _08021E00 + .align 2, 0 +_08021D88: .4byte gBattleMoveFlags +_08021D8C: .4byte gStatuses3 +_08021D90: .4byte gBankAttacker +_08021D94: .4byte 0x000400c0 +_08021D98: .4byte gActiveBank +_08021D9C: .4byte 0xfffbff3f +_08021DA0: .4byte gSpecialStatuses +_08021DA4: .4byte 0x02000000 +_08021DA8: .4byte 0x0001600c +_08021DAC: + ldr r2, _08021E0C @ =gSpecialStatuses + ldr r1, _08021E10 @ =gBankTarget + ldrb r3, [r1] + lsls r4, r3, 2 + adds r0, r4, r3 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 29 + cmp r0, 0 + blt _08021DFA + ldr r0, _08021E14 @ =gNoOfAllBanks + ldrb r0, [r0] + cmp r3, r0 + bcs _08021DFA + ldr r5, _08021E18 @ =gStatuses3 + adds r0, r4, r5 + ldr r0, [r0] + ldr r1, _08021E1C @ =0x000400c0 + ands r0, r1 + cmp r0, 0 + bne _08021DFA + ldr r4, _08021E20 @ =gActiveBank + strb r3, [r4] + movs r0, 0 + movs r1, 0 + bl EmitSpriteInvisibility + ldrb r0, [r4] + bl MarkBufferBankForExecution + ldr r0, _08021E10 @ =gBankTarget + ldrb r2, [r0] + lsls r2, 2 + adds r2, r5 + ldr r0, [r2] + ldr r1, _08021E24 @ =0xfffbff3f + ands r0, r1 + str r0, [r2] +_08021DFA: + ldr r2, _08021E28 @ =0x02000000 + ldr r3, _08021E2C @ =0x0001600c + adds r1, r2, r3 +_08021E00: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + mov r12, r2 + b _0802224E + .align 2, 0 +_08021E0C: .4byte gSpecialStatuses +_08021E10: .4byte gBankTarget +_08021E14: .4byte gNoOfAllBanks +_08021E18: .4byte gStatuses3 +_08021E1C: .4byte 0x000400c0 +_08021E20: .4byte gActiveBank +_08021E24: .4byte 0xfffbff3f +_08021E28: .4byte 0x02000000 +_08021E2C: .4byte 0x0001600c +_08021E30: + movs r4, 0 + ldr r0, _08021E60 @ =gNoOfAllBanks + ldrb r5, [r0] + cmp r4, r5 + blt _08021E3C + b _08022244 +_08021E3C: + ldr r2, _08021E64 @ =gDisableStructs + ldr r5, _08021E68 @ =0xfeffffff + adds r3, r0, 0 + ldr r1, _08021E6C @ =gUnknown_02024AD0 +_08021E44: + ldrb r0, [r2, 0xA] + cmp r0, 0 + bne _08021E50 + ldr r0, [r1] + ands r0, r5 + str r0, [r1] +_08021E50: + adds r2, 0x1C + adds r1, 0x58 + adds r4, 0x1 + ldrb r0, [r3] + cmp r4, r0 + blt _08021E44 + b _08022244 + .align 2, 0 +_08021E60: .4byte gNoOfAllBanks +_08021E64: .4byte gDisableStructs +_08021E68: .4byte 0xfeffffff +_08021E6C: .4byte gUnknown_02024AD0 +_08021E70: + ldr r1, _08021F2C @ =gHitMarker + ldr r3, [r1] + movs r0, 0x80 + lsls r0, 5 + ands r0, r3 + ldr r2, _08021F30 @ =gBankAttacker + mov r9, r2 + adds r5, r1, 0 + cmp r0, 0 + beq _08021E9A + ldr r0, _08021F34 @ =gActiveBank + ldrb r2, [r2] + strb r2, [r0] + ldr r1, _08021F38 @ =gBankTarget + ldrb r0, [r1] + mov r4, r9 + strb r0, [r4] + strb r2, [r1] + ldr r0, _08021F3C @ =0xffffefff + ands r3, r0 + str r3, [r5] +_08021E9A: + ldr r1, _08021F40 @ =gBattleMoves + ldr r2, _08021F44 @ =gUnknown_02024BE8 + ldrh r3, [r2] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0] + mov r8, r1 + adds r7, r2, 0 + cmp r0, 0x7F + bne _08021EBE + ldr r0, _08021F48 @ =gBattleMoveFlags + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + beq _08021ECA +_08021EBE: + ldr r1, _08021F4C @ =gUnknown_02024C2C + mov r2, r9 + ldrb r0, [r2] + lsls r0, 1 + adds r0, r1 + strh r3, [r0] +_08021ECA: + ldr r0, _08021F50 @ =gAbsentBankFlags + ldrb r1, [r0] + ldr r2, _08021F54 @ =gBitTable + mov r3, r9 + ldrb r4, [r3] + lsls r0, r4, 2 + adds r0, r2 + ldr r3, [r0] + ands r1, r3 + adds r6, r2, 0 + cmp r1, 0 + beq _08021EE4 + b _08022244 +_08021EE4: + ldr r0, _08021F58 @ =0x000160a6 + add r0, r12 + ldrb r0, [r0] + ands r0, r3 + cmp r0, 0 + beq _08021EF2 + b _08022244 +_08021EF2: + ldrh r2, [r7] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + add r0, r8 + ldrb r0, [r0] + cmp r0, 0x7F + bne _08021F04 + b _08022244 +_08021F04: + ldr r0, [r5] + movs r1, 0x80 + lsls r1, 18 + ands r0, r1 + cmp r0, 0 + beq _08021F68 + ldr r1, _08021F5C @ =gLastUsedMove + lsls r0, r4, 1 + adds r0, r1 + strh r2, [r0] + ldr r0, _08021F60 @ =gUnknown_02024C4C + mov r4, r9 + ldrb r1, [r4] + lsls r1, 1 + adds r1, r0 + ldr r0, _08021F64 @ =gCurrentMove + ldrh r0, [r0] + strh r0, [r1] + b _08021F82 + .align 2, 0 +_08021F2C: .4byte gHitMarker +_08021F30: .4byte gBankAttacker +_08021F34: .4byte gActiveBank +_08021F38: .4byte gBankTarget +_08021F3C: .4byte 0xffffefff +_08021F40: .4byte gBattleMoves +_08021F44: .4byte gUnknown_02024BE8 +_08021F48: .4byte gBattleMoveFlags +_08021F4C: .4byte gUnknown_02024C2C +_08021F50: .4byte gAbsentBankFlags +_08021F54: .4byte gBitTable +_08021F58: .4byte 0x000160a6 +_08021F5C: .4byte gLastUsedMove +_08021F60: .4byte gUnknown_02024C4C +_08021F64: .4byte gCurrentMove +_08021F68: + ldr r1, _08021FD0 @ =gLastUsedMove + lsls r0, r4, 1 + adds r0, r1 + ldr r1, _08021FD4 @ =0x0000ffff + strh r1, [r0] + ldr r1, _08021FD8 @ =gUnknown_02024C4C + mov r2, r9 + ldrb r0, [r2] + lsls r0, 1 + adds r0, r1 + movs r1, 0x1 + negs r1, r1 + strh r1, [r0] +_08021F82: + ldr r2, _08021FDC @ =gBankTarget + ldrb r3, [r2] + lsls r0, r3, 2 + adds r0, r6 + ldr r0, [r0] + lsls r0, 28 + ldr r1, [r5] + ands r1, r0 + cmp r1, 0 + bne _08021FA0 + ldr r0, _08021FE0 @ =gUnknown_02024C5C + adds r0, r3, r0 + mov r3, r9 + ldrb r1, [r3] + strb r1, [r0] +_08021FA0: + ldr r0, [r5] + movs r1, 0x80 + lsls r1, 18 + ands r0, r1 + cmp r0, 0 + beq _0802204C + ldr r0, _08021FE4 @ =gBattleMoveFlags + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _0802204C + ldrh r2, [r7] + ldr r0, _08021FD4 @ =0x0000ffff + cmp r2, r0 + bne _08021FEC + ldr r1, _08021FE8 @ =gMoveHitWith + ldr r4, _08021FDC @ =gBankTarget + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + strh r2, [r0] + b _08022244 + .align 2, 0 +_08021FD0: .4byte gLastUsedMove +_08021FD4: .4byte 0x0000ffff +_08021FD8: .4byte gUnknown_02024C4C +_08021FDC: .4byte gBankTarget +_08021FE0: .4byte gUnknown_02024C5C +_08021FE4: .4byte gBattleMoveFlags +_08021FE8: .4byte gMoveHitWith +_08021FEC: + ldr r0, _08022014 @ =gMoveHitWith + ldr r5, _08022018 @ =gBankTarget + ldrb r1, [r5] + lsls r1, 1 + adds r1, r0 + ldr r4, _0802201C @ =gCurrentMove + ldrh r0, [r4] + strh r0, [r1] + ldr r0, _08022020 @ =0x0001601c + add r0, r12 + ldrb r3, [r0] + cmp r3, 0 + beq _08022028 + ldr r0, _08022024 @ =gUnknown_02024C44 + ldrb r1, [r5] + lsls r1, 1 + adds r1, r0 + movs r0, 0x3F + ands r0, r3 + b _08021C22 + .align 2, 0 +_08022014: .4byte gMoveHitWith +_08022018: .4byte gBankTarget +_0802201C: .4byte gCurrentMove +_08022020: .4byte 0x0001601c +_08022024: .4byte gUnknown_02024C44 +_08022028: + ldr r0, _08022044 @ =gUnknown_02024C44 + ldr r1, _08022048 @ =gBankTarget + ldrb r2, [r1] + lsls r2, 1 + adds r2, r0 + ldrh r1, [r4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + add r0, r8 + ldrb r0, [r0, 0x2] + strh r0, [r2] + b _08022244 + .align 2, 0 +_08022044: .4byte gUnknown_02024C44 +_08022048: .4byte gBankTarget +_0802204C: + ldr r0, _0802205C @ =gMoveHitWith + ldr r2, _08022060 @ =gBankTarget + ldrb r1, [r2] + lsls r1, 1 + adds r1, r0 + ldr r0, _08022064 @ =0x0000ffff + b _08021C22 + .align 2, 0 +_0802205C: .4byte gMoveHitWith +_08022060: .4byte gBankTarget +_08022064: .4byte 0x0000ffff +_08022068: + ldr r0, _0802212C @ =gAbsentBankFlags + ldrb r1, [r0] + ldr r6, _08022130 @ =gBitTable + ldr r2, _08022134 @ =gBankAttacker + ldrb r5, [r2] + lsls r0, r5, 2 + adds r0, r6 + ldr r4, [r0] + ands r1, r4 + mov r9, r2 + cmp r1, 0 + beq _08022082 + b _08022244 +_08022082: + ldr r0, _08022138 @ =0x000160a6 + add r0, r12 + ldrb r0, [r0] + ands r0, r4 + cmp r0, 0 + beq _08022090 + b _08022244 +_08022090: + ldr r1, _0802213C @ =gBattleMoves + ldr r4, _08022140 @ =gUnknown_02024BE8 + ldrh r3, [r4] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x8] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0802215C + ldr r0, _08022144 @ =gHitMarker + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 18 + ands r0, r1 + cmp r0, 0 + beq _0802215C + ldr r2, _08022148 @ =gBankTarget + ldrb r0, [r2] + cmp r5, r0 + bne _080220C0 + b _08022244 +_080220C0: + adds r2, r0, 0 + lsls r0, r2, 2 + adds r0, r6 + ldr r0, [r0] + lsls r0, 28 + ands r1, r0 + cmp r1, 0 + bne _0802215C + ldr r0, _0802214C @ =gBattleMoveFlags + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _0802215C + lsls r0, r2, 1 + ldr r5, _08022150 @ =0x000160ac + adds r0, r5 + add r0, r12 + strb r3, [r0] + ldr r0, _08022148 @ =gBankTarget + ldrb r1, [r0] + lsls r1, 1 + ldr r2, _08022154 @ =0x000160ad + adds r1, r2 + add r1, r12 + ldrh r0, [r4] + lsrs r0, 8 + strb r0, [r1] + ldr r3, _08022148 @ =gBankTarget + ldrb r2, [r3] + lsls r2, 2 + mov r5, r9 + ldrb r0, [r5] + lsrs r0, 1 + lsls r0, 1 + ldr r1, _08022158 @ =0x00016100 + adds r0, r1 + adds r2, r0 + add r2, r12 + ldrh r0, [r4] + strb r0, [r2] + ldrb r2, [r3] + lsls r2, 2 + ldrb r0, [r5] + lsrs r0, 1 + lsls r0, 1 + adds r1, 0x1 + adds r0, r1 + adds r2, r0 + add r2, r12 + ldrh r0, [r4] + lsrs r0, 8 + strb r0, [r2] + b _08022244 + .align 2, 0 +_0802212C: .4byte gAbsentBankFlags +_08022130: .4byte gBitTable +_08022134: .4byte gBankAttacker +_08022138: .4byte 0x000160a6 +_0802213C: .4byte gBattleMoves +_08022140: .4byte gUnknown_02024BE8 +_08022144: .4byte gHitMarker +_08022148: .4byte gBankTarget +_0802214C: .4byte gBattleMoveFlags +_08022150: .4byte 0x000160ac +_08022154: .4byte 0x000160ad +_08022158: .4byte 0x00016100 +_0802215C: + mov r1, r9 + ldrb r0, [r1] + ldr r2, _080221B4 @ =gBankTarget + ldrb r2, [r2] + cmp r0, r2 + beq _08022244 + ldr r3, _080221B4 @ =gBankTarget + ldrb r0, [r3] + lsls r0, 1 + ldr r4, _080221B8 @ =0x000160ac + adds r0, r4 + add r0, r12 + movs r3, 0 + strb r3, [r0] + ldr r5, _080221B4 @ =gBankTarget + ldrb r0, [r5] + lsls r0, 1 + ldr r1, _080221BC @ =0x000160ad + adds r0, r1 + add r0, r12 + strb r3, [r0] + ldrb r2, [r5] + lsls r2, 2 + mov r4, r9 + ldrb r0, [r4] + lsrs r0, 1 + lsls r0, 1 + adds r1, 0x53 + adds r0, r1 + adds r2, r0 + add r2, r12 + strb r3, [r2] + ldrb r2, [r5] + lsls r2, 2 + ldrb r0, [r4] + lsrs r0, 1 + lsls r0, 1 + adds r1, 0x1 + adds r0, r1 + adds r2, r0 + add r2, r12 + strb r3, [r2] + b _08022244 + .align 2, 0 +_080221B4: .4byte gBankTarget +_080221B8: .4byte 0x000160ac +_080221BC: .4byte 0x000160ad +_080221C0: + ldr r5, _080222B0 @ =gHitMarker + ldr r2, [r5] + movs r0, 0x80 + lsls r0, 12 + ands r0, r2 + cmp r0, 0 + bne _08022244 + ldr r0, _080222B4 @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08022244 + ldr r1, _080222B8 @ =gProtectStructs + ldr r0, _080222BC @ =gBankAttacker + ldrb r0, [r0] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0, 0x1] + lsls r0, 29 + cmp r0, 0 + blt _08022244 + ldr r0, _080222C0 @ =gBattleMoves + mov r9, r0 + ldr r1, _080222C4 @ =gCurrentMove + mov r8, r1 + ldrh r0, [r1] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + add r1, r9 + ldrb r0, [r1, 0x6] + cmp r0, 0x8 + bne _08022244 + movs r6, 0x80 + lsls r6, 2 + adds r4, r6, 0 + ands r4, r2 + cmp r4, 0 + bne _08022244 + ldr r7, _080222C8 @ =gBankTarget + ldrb r0, [r7] + bl GetBankIdentity + movs r1, 0x2 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + bl GetBankByPlayerAI + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _080222CC @ =gBattleMons + movs r0, 0x58 + muls r0, r2 + adds r0, r1 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _0802223A + bl _08021874 +_0802223A: + ldr r0, [r5] + orrs r0, r6 + str r0, [r5] + ldr r2, _080222D0 @ =0x02000000 + mov r12, r2 +_08022244: + ldr r1, _080222D4 @ =0x0001600c + add r1, r12 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] +_0802224E: + ldr r3, [sp, 0x10] + cmp r3, 0x1 + bne _08022262 + mov r4, r10 + cmp r4, 0 + bne _08022262 + ldr r1, _080222D4 @ =0x0001600c + add r1, r12 + movs r0, 0x11 + strb r0, [r1] +_08022262: + ldr r5, [sp, 0x10] + cmp r5, 0x2 + bne _08022278 + ldr r1, _080222D4 @ =0x0001600c + add r1, r12 + ldr r0, [sp, 0x14] + ldrb r2, [r1] + cmp r0, r2 + bne _08022278 + movs r0, 0x11 + strb r0, [r1] +_08022278: + ldr r0, _080222D4 @ =0x0001600c + add r0, r12 + ldrb r0, [r0] + cmp r0, 0x11 + beq _08022286 + bl _080218E4 +_08022286: + ldr r0, _080222D4 @ =0x0001600c + add r0, r12 + ldrb r0, [r0] + cmp r0, 0x11 + bne _0802229E + mov r3, r10 + cmp r3, 0 + bne _0802229E + ldr r1, _080222D8 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x3 +_0802229C: + str r0, [r1] +_0802229E: + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080222B0: .4byte gHitMarker +_080222B4: .4byte gBattleTypeFlags +_080222B8: .4byte gProtectStructs +_080222BC: .4byte gBankAttacker +_080222C0: .4byte gBattleMoves +_080222C4: .4byte gCurrentMove +_080222C8: .4byte gBankTarget +_080222CC: .4byte gBattleMons +_080222D0: .4byte 0x02000000 +_080222D4: .4byte 0x0001600c +_080222D8: .4byte gBattlescriptCurrInstr + thumb_func_end sub_80217F8 + + thumb_func_start atk4A_damageflags +atk4A_damageflags: @ 80222DC + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r4, 0 + movs r5, 0 + ldr r2, _08022340 @ =gBattleMoves + ldr r0, _08022344 @ =gCurrentMove + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x2] + mov r8, r0 + ldr r2, _08022348 @ =gBattleMons + ldr r3, _0802234C @ =gBankTarget + ldrb r1, [r3] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x20 + ldrb r0, [r0] + mov r12, r2 + adds r7, r3, 0 + cmp r0, 0x1A + bne _08022370 + mov r1, r8 + cmp r1, 0x4 + bne _08022370 + ldr r3, _08022350 @ =gLastUsedAbility + strb r0, [r3] + ldr r2, _08022354 @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x9 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08022358 @ =gMoveHitWith + ldrb r0, [r7] + lsls r0, 1 + adds r0, r1 + strh r4, [r0] + ldr r0, _0802235C @ =gBattleCommunication + mov r2, r8 + strb r2, [r0, 0x6] + ldrb r0, [r7] + ldrb r1, [r3] + bl sub_81074C4 + b _08022452 + .align 2, 0 +_08022340: .4byte gBattleMoves +_08022344: .4byte gCurrentMove +_08022348: .4byte gBattleMons +_0802234C: .4byte gBankTarget +_08022350: .4byte gLastUsedAbility +_08022354: .4byte gBattleMoveFlags +_08022358: .4byte gMoveHitWith +_0802235C: .4byte gBattleCommunication +_08022360: + ldr r0, _0802236C @ =gBattleMoveFlags + ldrb r1, [r0] + movs r2, 0x8 + orrs r1, r2 + strb r1, [r0] + b _08022452 + .align 2, 0 +_0802236C: .4byte gBattleMoveFlags +_08022370: + ldr r1, _0802237C @ =gTypeEffectiveness + adds r0, r5, r1 + ldrb r0, [r0] + adds r6, r1, 0 + b _08022432 + .align 2, 0 +_0802237C: .4byte gTypeEffectiveness +_08022380: + adds r0, r5, r6 + ldrb r0, [r0] + cmp r0, r8 + bne _0802242C + adds r2, r5, 0x1 + adds r3, r2, r6 + ldrb r1, [r7] + movs r0, 0x58 + muls r0, r1 + add r0, r12 + adds r0, 0x21 + ldrb r1, [r3] + adds r3, r2, 0 + ldrb r0, [r0] + cmp r1, r0 + bne _080223BE + adds r0, r5, 0x2 + adds r0, r6 + ldrb r1, [r0] + cmp r1, 0 + beq _08022360 + cmp r1, 0x5 + bne _080223B2 + movs r0, 0x4 + orrs r4, r0 +_080223B2: + cmp r1, 0x14 + bne _080223BE + movs r0, 0x2 + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_080223BE: + adds r2, r3, r6 + ldrb r1, [r7] + movs r0, 0x58 + muls r0, r1 + add r0, r12 + adds r1, r0, 0 + adds r1, 0x22 + ldrb r2, [r2] + ldrb r1, [r1] + cmp r2, r1 + bne _0802242C + adds r0, 0x21 + ldrb r1, [r0] + cmp r1, r2 + beq _080223E6 + adds r0, r5, 0x2 + adds r0, r6 + ldrb r0, [r0] + cmp r0, 0 + beq _08022360 +_080223E6: + cmp r1, r2 + beq _080223FC + adds r0, r5, 0x2 + adds r0, r6 + ldrb r0, [r0] + cmp r0, 0x5 + bne _080223FC + movs r0, 0x4 + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_080223FC: + adds r2, r3, r6 + ldrb r1, [r7] + movs r0, 0x58 + muls r0, r1 + add r0, r12 + adds r1, r0, 0 + adds r1, 0x22 + ldrb r2, [r2] + ldrb r1, [r1] + cmp r2, r1 + bne _0802242C + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, r2 + beq _0802242C + adds r0, r5, 0x2 + adds r0, r6 + ldrb r0, [r0] + cmp r0, 0x14 + bne _0802242C + movs r0, 0x2 + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_0802242C: + adds r5, 0x3 + adds r0, r5, r6 + ldrb r0, [r0] +_08022432: + cmp r0, 0xFF + beq _08022452 + cmp r0, 0xFE + bne _08022380 + ldrb r1, [r7] + movs r0, 0x58 + muls r0, r1 + mov r1, r12 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 22 + ands r0, r1 + cmp r0, 0 + beq _0802242C +_08022452: + ldr r2, _08022500 @ =gBattleMons + ldr r0, _08022504 @ =gBankTarget + mov r8, r0 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x20 + ldrb r6, [r0] + cmp r6, 0x19 + bne _080224CE + movs r5, 0x29 + ands r5, r4 + cmp r5, 0 + bne _080224CE + ldr r0, _08022508 @ =gBankAttacker + ldrb r0, [r0] + ldr r7, _0802250C @ =gCurrentMove + ldrh r1, [r7] + bl move_weather_interaction + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x2 + bne _080224CE + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + beq _08022494 + movs r0, 0x6 + ands r4, r0 + cmp r4, 0x6 + bne _080224CE +_08022494: + ldr r2, _08022510 @ =gBattleMoves + ldrh r1, [r7] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1] + cmp r0, 0 + beq _080224CE + ldr r3, _08022514 @ =gLastUsedAbility + strb r6, [r3] + ldr r2, _08022518 @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0802251C @ =gMoveHitWith + mov r2, r8 + ldrb r0, [r2] + lsls r0, 1 + adds r0, r1 + strh r5, [r0] + ldr r1, _08022520 @ =gBattleCommunication + movs r0, 0x3 + strb r0, [r1, 0x6] + ldrb r0, [r2] + ldrb r1, [r3] + bl sub_81074C4 +_080224CE: + ldr r0, _08022518 @ =gBattleMoveFlags + ldrb r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _080224EC + ldr r2, _08022524 @ =gProtectStructs + ldr r0, _08022508 @ =gBankAttacker + ldrb r1, [r0] + lsls r1, 4 + adds r1, r2 + ldrb r0, [r1, 0x1] + movs r2, 0x2 + orrs r0, r2 + strb r0, [r1, 0x1] +_080224EC: + ldr r1, _08022528 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08022500: .4byte gBattleMons +_08022504: .4byte gBankTarget +_08022508: .4byte gBankAttacker +_0802250C: .4byte gCurrentMove +_08022510: .4byte gBattleMoves +_08022514: .4byte gLastUsedAbility +_08022518: .4byte gBattleMoveFlags +_0802251C: .4byte gMoveHitWith +_08022520: .4byte gBattleCommunication +_08022524: .4byte gProtectStructs +_08022528: .4byte gBattlescriptCurrInstr + thumb_func_end atk4A_damageflags + + thumb_func_start atk4B_cmd4b +atk4B_cmd4b: @ 802252C + push {r4,lr} + ldr r4, _08022568 @ =gActiveBank + ldr r0, _0802256C @ =gBankAttacker + ldrb r0, [r0] + strb r0, [r4] + ldr r2, _08022570 @ =gHitMarker + ldr r1, _08022574 @ =gBitTable + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + lsls r1, 28 + ldr r0, [r2] + ands r0, r1 + cmp r0, 0 + bne _0802255A + movs r0, 0 + movs r1, 0 + bl dp01_build_cmdbuf_x06_a + ldrb r0, [r4] + bl MarkBufferBankForExecution +_0802255A: + ldr r1, _08022578 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08022568: .4byte gActiveBank +_0802256C: .4byte gBankAttacker +_08022570: .4byte gHitMarker +_08022574: .4byte gBitTable +_08022578: .4byte gBattlescriptCurrInstr + thumb_func_end atk4B_cmd4b + + thumb_func_start atk4C_switch1 +atk4C_switch1: @ 802257C + push {r4-r6,lr} + ldr r0, _080225D4 @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _080225CC + ldr r5, _080225D8 @ =gBattlescriptCurrInstr + ldr r0, [r5] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r4, _080225DC @ =gActiveBank + strb r0, [r4] + ldr r3, _080225E0 @ =gBattlePartyID + ldrb r0, [r4] + lsls r1, r0, 1 + adds r1, r3 + ldr r2, _080225E4 @ =0x02000000 + ldr r6, _080225E8 @ =0x00016068 + adds r0, r6 + adds r0, r2 + ldrb r0, [r0] + strh r0, [r1] + ldr r1, _080225EC @ =gBitTable + ldrb r0, [r4] + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + lsls r0, 2 + adds r0, r1 + ldrb r2, [r0] + movs r0, 0 + movs r1, 0 + bl EmitGetAttributes + ldrb r0, [r4] + bl MarkBufferBankForExecution + ldr r0, [r5] + adds r0, 0x2 + str r0, [r5] +_080225CC: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080225D4: .4byte gBattleExecBuffer +_080225D8: .4byte gBattlescriptCurrInstr +_080225DC: .4byte gActiveBank +_080225E0: .4byte gBattlePartyID +_080225E4: .4byte 0x02000000 +_080225E8: .4byte 0x00016068 +_080225EC: .4byte gBitTable + thumb_func_end atk4C_switch1 + + thumb_func_start sub_80225F0 +sub_80225F0: @ 80225F0 + push {r4-r7,lr} + sub sp, 0x58 + ldr r0, _0802274C @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + beq _080225FE + b _08022744 +_080225FE: + ldr r0, _08022750 @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r4, _08022754 @ =gActiveBank + strb r0, [r4] + ldr r6, _08022758 @ =gBattleMons + ldrb r0, [r4] + movs r5, 0x58 + adds r1, r0, 0 + muls r1, r5 + adds r1, r6 + mov r0, sp + movs r2, 0x58 + bl memcpy + ldrb r0, [r4] + muls r0, r5 + adds r3, r0, r6 + movs r2, 0 + ldr r5, _0802275C @ =gBattleBufferB + adds r7, r4, 0 +_0802262C: + adds r0, r3, r2 + ldrb r1, [r4] + lsls r1, 9 + adds r1, 0x4 + adds r1, r2, r1 + adds r1, r5 + ldrb r1, [r1] + strb r1, [r0] + adds r2, 0x1 + cmp r2, 0x57 + bls _0802262C + ldr r4, _08022758 @ =gBattleMons + ldrb r0, [r7] + movs r6, 0x58 + adds r2, r0, 0 + muls r2, r6 + adds r2, r4 + ldr r3, _08022760 @ =gBaseStats + ldrh r1, [r2] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r0, [r0, 0x6] + adds r2, 0x21 + strb r0, [r2] + ldrb r0, [r7] + adds r1, r0, 0 + muls r1, r6 + adds r1, r4 + ldrh r2, [r1] + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r3 + ldrb r0, [r0, 0x7] + adds r1, 0x22 + strb r0, [r1] + ldrb r0, [r7] + adds r1, r0, 0 + muls r1, r6 + adds r1, r4 + ldrh r0, [r1] + ldrb r1, [r1, 0x17] + lsrs r1, 7 + bl GetAbilityBySpecies + ldrb r1, [r7] + muls r1, r6 + adds r1, r4 + adds r1, 0x20 + strb r0, [r1] + ldrb r0, [r7] + bl GetBankSide + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _08022764 @ =gWishFutureKnock + adds r0, 0x29 + adds r0, r2, r0 + ldrb r1, [r0] + ldr r3, _08022768 @ =gBitTable + ldr r2, _0802276C @ =gBattlePartyID + ldrb r5, [r7] + lsls r0, r5, 1 + adds r0, r2 + ldrh r0, [r0] + lsls r0, 2 + adds r0, r3 + ldr r0, [r0] + ands r1, r0 + mov r12, r4 + cmp r1, 0 + beq _080226CA + adds r0, r5, 0 + muls r0, r6 + add r0, r12 + movs r1, 0 + strh r1, [r0, 0x2E] +_080226CA: + ldr r2, _08022770 @ =gBattleMoves + ldr r0, _08022774 @ =gCurrentMove + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0x7F + bne _08022710 + movs r2, 0 + adds r4, r7, 0 + movs r6, 0x58 + mov r5, r12 + adds r5, 0x18 + add r3, sp, 0x18 +_080226EA: + ldrb r0, [r4] + adds r1, r0, 0 + muls r1, r6 + adds r1, r2, r1 + adds r1, r5 + adds r0, r3, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r2, 0x1 + cmp r2, 0x7 + ble _080226EA + ldrb r1, [r7] + movs r0, 0x58 + muls r0, r1 + mov r1, r12 + adds r1, 0x50 + adds r0, r1 + ldr r1, [sp, 0x50] + str r1, [r0] +_08022710: + bl sub_8010B88 + ldr r0, _08022778 @ =0x02000000 + ldr r3, _08022754 @ =gActiveBank + ldrb r2, [r3] + ldr r1, _0802277C @ =0x00016003 + adds r0, r1 + strb r2, [r0] + ldr r1, _08022780 @ =gBattleTextBuff1 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x7 + strb r0, [r1, 0x1] + strb r2, [r1, 0x2] + ldr r2, _0802276C @ =gBattlePartyID + ldrb r0, [r3] + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r1, _08022750 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] +_08022744: + add sp, 0x58 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802274C: .4byte gBattleExecBuffer +_08022750: .4byte gBattlescriptCurrInstr +_08022754: .4byte gActiveBank +_08022758: .4byte gBattleMons +_0802275C: .4byte gBattleBufferB +_08022760: .4byte gBaseStats +_08022764: .4byte gWishFutureKnock +_08022768: .4byte gBitTable +_0802276C: .4byte gBattlePartyID +_08022770: .4byte gBattleMoves +_08022774: .4byte gCurrentMove +_08022778: .4byte 0x02000000 +_0802277C: .4byte 0x00016003 +_08022780: .4byte gBattleTextBuff1 + thumb_func_end sub_80225F0 + + thumb_func_start sub_8022784 +sub_8022784: @ 8022784 + push {r4,r5,lr} + ldr r0, _0802280C @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _08022806 + ldr r0, _08022810 @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r4, _08022814 @ =gActiveBank + strb r0, [r4] + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080227D0 + ldr r0, _08022818 @ =gBattleTypeFlags + ldrh r1, [r0] + ldr r0, _0802281C @ =0x00000902 + ands r0, r1 + cmp r0, 0 + bne _080227D0 + ldr r2, _08022820 @ =gBattleMons + ldrb r1, [r4] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrh r0, [r0] + bl SpeciesToNationalPokedexNum + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x2 + bl GetNationalPokedexFlag +_080227D0: + ldr r2, _08022824 @ =gAbsentBankFlags + ldr r1, _08022828 @ =gBitTable + ldr r5, _08022814 @ =gActiveBank + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + ldrb r0, [r2] + bics r0, r1 + strb r0, [r2] + ldr r1, _0802282C @ =gBattlePartyID + ldrb r0, [r5] + lsls r0, 1 + adds r0, r1 + ldrb r1, [r0] + ldr r4, _08022810 @ =gBattlescriptCurrInstr + ldr r0, [r4] + ldrb r2, [r0, 0x2] + movs r0, 0 + bl sub_800C704 + ldrb r0, [r5] + bl MarkBufferBankForExecution + ldr r0, [r4] + adds r0, 0x3 + str r0, [r4] +_08022806: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0802280C: .4byte gBattleExecBuffer +_08022810: .4byte gBattlescriptCurrInstr +_08022814: .4byte gActiveBank +_08022818: .4byte gBattleTypeFlags +_0802281C: .4byte 0x00000902 +_08022820: .4byte gBattleMons +_08022824: .4byte gAbsentBankFlags +_08022828: .4byte gBitTable +_0802282C: .4byte gBattlePartyID + thumb_func_end sub_8022784 + + thumb_func_start sub_8022830 +sub_8022830: @ 8022830 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r4, _08022894 @ =gBattlescriptCurrInstr + ldr r0, [r4] + ldrb r1, [r0, 0x1] + movs r0, 0x7F + ands r0, r1 + bl sub_8015150 + ldr r3, _08022898 @ =gActiveBank + strb r0, [r3] + ldr r2, [r4] + ldrb r1, [r2, 0x1] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080228A8 + ldr r1, _0802289C @ =gBattleMons + ldrb r3, [r3] + movs r0, 0x58 + muls r0, r3 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + ldr r1, _080228A0 @ =0x0400e000 + ands r0, r1 + cmp r0, 0 + bne _0802287C + ldr r1, _080228A4 @ =gStatuses3 + lsls r0, r3, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 3 + ands r0, r1 + cmp r0, 0 + beq _080228A8 +_0802287C: + 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 _08022A2C + .align 2, 0 +_08022894: .4byte gBattlescriptCurrInstr +_08022898: .4byte gActiveBank +_0802289C: .4byte gBattleMons +_080228A0: .4byte 0x0400e000 +_080228A4: .4byte gStatuses3 +_080228A8: + ldr r5, _08022934 @ =gBattleTypeFlags + ldrh r1, [r5] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08022948 + ldr r4, _08022938 @ =gActiveBank + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0802293C @ =gPlayerParty + mov r8, r1 + cmp r0, 0x1 + bne _080228CC + ldr r0, _08022940 @ =gEnemyParty + mov r8, r0 +_080228CC: + movs r5, 0 + ldrb r0, [r4] + bl sub_803FC34 + lsls r0, 24 + lsrs r0, 24 + bl sub_803FBFC + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bne _080228E6 + movs r5, 0x3 +_080228E6: + adds r6, r5, 0x3 + cmp r5, r6 + bge _0802292E + ldr r7, _08022944 @ =gBattlePartyID +_080228EE: + movs r0, 0x64 + muls r0, r5 + mov r1, r8 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + bl GetMonData + cmp r0, 0 + beq _08022928 + adds r0, r4, 0 + movs r1, 0x2D + bl GetMonData + cmp r0, 0 + bne _08022928 + adds r0, r4, 0 + movs r1, 0x39 + bl GetMonData + cmp r0, 0 + beq _08022928 + ldr r0, _08022938 @ =gActiveBank + ldrb r0, [r0] + lsls r0, 1 + adds r0, r7 + ldrh r0, [r0] + cmp r0, r5 + bne _0802292E +_08022928: + adds r5, 0x1 + cmp r5, r6 + blt _080228EE +_0802292E: + cmp r5, r6 + beq _080229FC + b _08022A24 + .align 2, 0 +_08022934: .4byte gBattleTypeFlags +_08022938: .4byte gActiveBank +_0802293C: .4byte gPlayerParty +_08022940: .4byte gEnemyParty +_08022944: .4byte gBattlePartyID +_08022948: + ldr r0, _08022978 @ =gActiveBank + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1 + bne _08022988 + movs r0, 0x1 + bl GetBankByPlayerAI + lsls r0, 24 + lsrs r7, r0, 24 + ldrh r1, [r5] + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + beq _0802297C + movs r0, 0x3 + bl GetBankByPlayerAI + lsls r0, 24 + lsrs r6, r0, 24 + b _0802297E + .align 2, 0 +_08022978: .4byte gActiveBank +_0802297C: + adds r6, r7, 0 +_0802297E: + ldr r0, _08022984 @ =gEnemyParty + mov r8, r0 + b _080229AE + .align 2, 0 +_08022984: .4byte gEnemyParty +_08022988: + movs r0, 0 + bl GetBankByPlayerAI + lsls r0, 24 + lsrs r7, r0, 24 + ldrh r1, [r5] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080229A8 + movs r0, 0x2 + bl GetBankByPlayerAI + lsls r0, 24 + lsrs r6, r0, 24 + b _080229AA +_080229A8: + adds r6, r7, 0 +_080229AA: + ldr r1, _08022A18 @ =gPlayerParty + mov r8, r1 +_080229AE: + movs r5, 0 +_080229B0: + movs r0, 0x64 + muls r0, r5 + mov r1, r8 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x39 + bl GetMonData + cmp r0, 0 + beq _080229F2 + adds r0, r4, 0 + movs r1, 0xB + bl GetMonData + cmp r0, 0 + beq _080229F2 + adds r0, r4, 0 + movs r1, 0x2D + bl GetMonData + cmp r0, 0 + bne _080229F2 + ldr r1, _08022A1C @ =gBattlePartyID + lsls r0, r7, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r5, r0 + beq _080229F2 + lsls r0, r6, 1 + adds r0, r1 + ldrh r0, [r0] + cmp r5, r0 + bne _080229F8 +_080229F2: + adds r5, 0x1 + cmp r5, 0x5 + ble _080229B0 +_080229F8: + cmp r5, 0x6 + bne _08022A24 +_080229FC: + ldr r3, _08022A20 @ =gBattlescriptCurrInstr + ldr r2, [r3] + ldrb r1, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + orrs r1, r0 + str r1, [r3] + b _08022A2C + .align 2, 0 +_08022A18: .4byte gPlayerParty +_08022A1C: .4byte gBattlePartyID +_08022A20: .4byte gBattlescriptCurrInstr +_08022A24: + ldr r1, _08022A38 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x6 + str r0, [r1] +_08022A2C: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08022A38: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8022830 + + thumb_func_start sub_8022A3C +sub_8022A3C: @ 8022A3C + push {r4,r5,lr} + sub sp, 0x4 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + ldr r4, _08022A84 @ =0x02000000 + ldr r5, _08022A88 @ =gActiveBank + ldrb r0, [r5] + ldr r3, _08022A8C @ =0x00016064 + adds r1, r0, r3 + adds r1, r4 + ldr r3, _08022A90 @ =gBattlePartyID + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + strb r0, [r1] + ldrb r1, [r5] + lsls r0, r1, 1 + adds r0, r1 + ldr r1, _08022A94 @ =0x0001606c + adds r4, r1 + adds r0, r4 + str r0, [sp] + movs r0, 0 + movs r1, 0x1 + movs r3, 0 + bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f + ldrb r0, [r5] + bl MarkBufferBankForExecution + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08022A84: .4byte 0x02000000 +_08022A88: .4byte gActiveBank +_08022A8C: .4byte 0x00016064 +_08022A90: .4byte gBattlePartyID +_08022A94: .4byte 0x0001606c + thumb_func_end sub_8022A3C + + thumb_func_start atk50_openpartyscreen +atk50_openpartyscreen: @ 8022A98 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + movs r7, 0 + movs r0, 0 + mov r9, r0 + ldr r6, _08022B44 @ =gBattlescriptCurrInstr + ldr r1, [r6] + ldrb r2, [r1, 0x2] + ldrb r0, [r1, 0x3] + lsls r0, 8 + orrs r2, r0 + ldrb r0, [r1, 0x4] + lsls r0, 16 + orrs r2, r0 + ldrb r0, [r1, 0x5] + lsls r0, 24 + orrs r2, r0 + mov r8, r2 + ldrb r2, [r1, 0x1] + adds r0, r2, 0 + mov r12, r6 + cmp r0, 0x5 + beq _08022ACE + b _08022F74 +_08022ACE: + ldr r0, _08022B48 @ =gBattleTypeFlags + ldrh r0, [r0] + movs r1, 0x41 + ands r1, r0 + cmp r1, 0x1 + beq _08022BBC + ldr r1, _08022B4C @ =gActiveBank + strb r7, [r1] + ldr r0, _08022B50 @ =gNoOfAllBanks + ldrb r0, [r0] + cmp r7, r0 + bcc _08022AE8 + b _08022F62 +_08022AE8: + ldr r7, _08022B54 @ =gHitMarker + ldr r6, _08022B58 @ =gBitTable + adds r4, r1, 0 + ldr r0, _08022B5C @ =gAbsentBankFlags + mov r8, r0 +_08022AF2: + ldrb r2, [r4] + lsls r0, r2, 2 + adds r0, r6 + ldr r1, [r0] + lsls r1, 28 + ldr r0, [r7] + ands r0, r1 + cmp r0, 0 + beq _08022B94 + adds r0, r2, 0 + movs r1, 0x6 + movs r2, 0x6 + bl sub_8018018 + lsls r0, 24 + cmp r0, 0 + beq _08022B60 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + mov r2, r8 + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4] + lsls r0, 2 + adds r0, r6 + ldr r1, [r0] + lsls r1, 28 + ldr r0, [r7] + bics r0, r1 + str r0, [r7] + movs r0, 0 + movs r1, 0x2 + bl EmitLinkStandbyMsg + ldrb r0, [r4] + bl MarkBufferBankForExecution + b _08022BA2 + .align 2, 0 +_08022B44: .4byte gBattlescriptCurrInstr +_08022B48: .4byte gBattleTypeFlags +_08022B4C: .4byte gActiveBank +_08022B50: .4byte gNoOfAllBanks +_08022B54: .4byte gHitMarker +_08022B58: .4byte gBitTable +_08022B5C: .4byte gAbsentBankFlags +_08022B60: + ldr r5, _08022B90 @ =gSpecialStatuses + ldrb r0, [r4] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + blt _08022BA2 + movs r0, 0x6 + bl sub_8022A3C + ldrb r1, [r4] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + ldrb r1, [r0] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r0] + b _08022BA2 + .align 2, 0 +_08022B90: .4byte gSpecialStatuses +_08022B94: + movs r0, 0 + movs r1, 0x2 + bl EmitLinkStandbyMsg + ldrb r0, [r4] + bl MarkBufferBankForExecution +_08022BA2: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + ldr r1, _08022BB8 @ =gNoOfAllBanks + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bcc _08022AF2 + b _08022F62 + .align 2, 0 +_08022BB8: .4byte gNoOfAllBanks +_08022BBC: + ands r1, r0 + cmp r1, 0 + bne _08022BC4 + b _08022F62 +_08022BC4: + ldr r0, _08022C1C @ =gHitMarker + mov r8, r0 + ldr r0, [r0] + lsrs r5, r0, 28 + ldr r6, _08022C20 @ =gBitTable + ldr r0, [r6] + ands r0, r5 + cmp r0, 0 + beq _08022C7E + ldr r4, _08022C24 @ =gActiveBank + strb r7, [r4] + movs r0, 0 + movs r1, 0x6 + movs r2, 0x6 + bl sub_8018018 + lsls r0, 24 + cmp r0, 0 + beq _08022C2C + ldr r2, _08022C28 @ =gAbsentBankFlags + ldrb r0, [r4] + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4] + lsls r0, 2 + adds r0, r6 + ldr r1, [r0] + lsls r1, 28 + mov r2, r8 + ldr r0, [r2] + bics r0, r1 + str r0, [r2] + movs r0, 0 + bl dp01_build_cmdbuf_x2A_2A_2A_2A + ldrb r0, [r4] + bl MarkBufferBankForExecution + b _08022C7E + .align 2, 0 +_08022C1C: .4byte gHitMarker +_08022C20: .4byte gBitTable +_08022C24: .4byte gActiveBank +_08022C28: .4byte gAbsentBankFlags +_08022C2C: + ldr r6, _08022C60 @ =gSpecialStatuses + ldrb r0, [r4] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + blt _08022C6C + ldr r0, _08022C64 @ =0x02000000 + ldr r1, _08022C68 @ =0x0001606a + adds r0, r1 + ldrb r0, [r0] + bl sub_8022A3C + ldrb r1, [r4] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrb r1, [r0] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r0] + b _08022C7E + .align 2, 0 +_08022C60: .4byte gSpecialStatuses +_08022C64: .4byte 0x02000000 +_08022C68: .4byte 0x0001606a +_08022C6C: + movs r0, 0 + movs r1, 0x2 + bl EmitLinkStandbyMsg + ldrb r0, [r4] + bl MarkBufferBankForExecution + movs r2, 0x1 + mov r9, r2 +_08022C7E: + ldr r6, _08022CD8 @ =gBitTable + ldr r0, [r6, 0x8] + ands r0, r5 + cmp r0, 0 + beq _08022D40 + ldr r0, [r6] + ands r0, r5 + cmp r0, 0 + bne _08022D40 + ldr r4, _08022CDC @ =gActiveBank + movs r0, 0x2 + strb r0, [r4] + movs r0, 0x2 + movs r1, 0x6 + movs r2, 0x6 + bl sub_8018018 + lsls r0, 24 + cmp r0, 0 + beq _08022CE8 + ldr r2, _08022CE0 @ =gAbsentBankFlags + ldrb r0, [r4] + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldr r2, _08022CE4 @ =gHitMarker + ldrb r0, [r4] + lsls r0, 2 + adds r0, r6 + ldr r1, [r0] + lsls r1, 28 + ldr r0, [r2] + bics r0, r1 + str r0, [r2] + movs r0, 0 + bl dp01_build_cmdbuf_x2A_2A_2A_2A + ldrb r0, [r4] + bl MarkBufferBankForExecution + b _08022D40 + .align 2, 0 +_08022CD8: .4byte gBitTable +_08022CDC: .4byte gActiveBank +_08022CE0: .4byte gAbsentBankFlags +_08022CE4: .4byte gHitMarker +_08022CE8: + ldr r6, _08022D1C @ =gSpecialStatuses + ldrb r0, [r4] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + blt _08022D28 + ldr r0, _08022D20 @ =0x02000000 + ldr r1, _08022D24 @ =0x00016068 + adds r0, r1 + ldrb r0, [r0] + bl sub_8022A3C + ldrb r1, [r4] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrb r1, [r0] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r0] + b _08022D40 + .align 2, 0 +_08022D1C: .4byte gSpecialStatuses +_08022D20: .4byte 0x02000000 +_08022D24: .4byte 0x00016068 +_08022D28: + movs r0, 0x1 + mov r2, r9 + ands r0, r2 + cmp r0, 0 + bne _08022D40 + movs r0, 0 + movs r1, 0x2 + bl EmitLinkStandbyMsg + ldrb r0, [r4] + bl MarkBufferBankForExecution +_08022D40: + ldr r6, _08022D90 @ =gBitTable + ldr r0, [r6, 0x4] + ands r0, r5 + cmp r0, 0 + beq _08022DF6 + ldr r4, _08022D94 @ =gActiveBank + movs r0, 0x1 + strb r0, [r4] + movs r0, 0x1 + movs r1, 0x6 + movs r2, 0x6 + bl sub_8018018 + lsls r0, 24 + cmp r0, 0 + beq _08022DA0 + ldr r2, _08022D98 @ =gAbsentBankFlags + ldrb r0, [r4] + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldr r2, _08022D9C @ =gHitMarker + ldrb r0, [r4] + lsls r0, 2 + adds r0, r6 + ldr r1, [r0] + lsls r1, 28 + ldr r0, [r2] + bics r0, r1 + str r0, [r2] + movs r0, 0 + bl dp01_build_cmdbuf_x2A_2A_2A_2A + ldrb r0, [r4] + bl MarkBufferBankForExecution + b _08022DF6 + .align 2, 0 +_08022D90: .4byte gBitTable +_08022D94: .4byte gActiveBank +_08022D98: .4byte gAbsentBankFlags +_08022D9C: .4byte gHitMarker +_08022DA0: + ldr r6, _08022DD4 @ =gSpecialStatuses + ldrb r0, [r4] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + blt _08022DE0 + ldr r0, _08022DD8 @ =0x02000000 + ldr r1, _08022DDC @ =0x0001606b + adds r0, r1 + ldrb r0, [r0] + bl sub_8022A3C + ldrb r1, [r4] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrb r1, [r0] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r0] + b _08022DF6 + .align 2, 0 +_08022DD4: .4byte gSpecialStatuses +_08022DD8: .4byte 0x02000000 +_08022DDC: .4byte 0x0001606b +_08022DE0: + movs r0, 0 + movs r1, 0x2 + bl EmitLinkStandbyMsg + ldrb r0, [r4] + bl MarkBufferBankForExecution + movs r0, 0x2 + mov r2, r9 + orrs r2, r0 + mov r9, r2 +_08022DF6: + ldr r6, _08022E50 @ =gBitTable + ldr r0, [r6, 0xC] + ands r0, r5 + cmp r0, 0 + beq _08022EB8 + ldr r0, [r6, 0x4] + ands r0, r5 + cmp r0, 0 + bne _08022EB8 + ldr r4, _08022E54 @ =gActiveBank + movs r0, 0x3 + strb r0, [r4] + movs r0, 0x3 + movs r1, 0x6 + movs r2, 0x6 + bl sub_8018018 + lsls r0, 24 + cmp r0, 0 + beq _08022E60 + ldr r2, _08022E58 @ =gAbsentBankFlags + ldrb r0, [r4] + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldr r2, _08022E5C @ =gHitMarker + ldrb r0, [r4] + lsls r0, 2 + adds r0, r6 + ldr r1, [r0] + lsls r1, 28 + ldr r0, [r2] + bics r0, r1 + str r0, [r2] + movs r0, 0 + bl dp01_build_cmdbuf_x2A_2A_2A_2A + ldrb r0, [r4] + bl MarkBufferBankForExecution + b _08022EB8 + .align 2, 0 +_08022E50: .4byte gBitTable +_08022E54: .4byte gActiveBank +_08022E58: .4byte gAbsentBankFlags +_08022E5C: .4byte gHitMarker +_08022E60: + ldr r6, _08022E94 @ =gSpecialStatuses + ldrb r0, [r4] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + blt _08022EA0 + ldr r0, _08022E98 @ =0x02000000 + ldr r1, _08022E9C @ =0x00016069 + adds r0, r1 + ldrb r0, [r0] + bl sub_8022A3C + ldrb r1, [r4] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrb r1, [r0] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r0] + b _08022EB8 + .align 2, 0 +_08022E94: .4byte gSpecialStatuses +_08022E98: .4byte 0x02000000 +_08022E9C: .4byte 0x00016069 +_08022EA0: + movs r0, 0x2 + mov r2, r9 + ands r2, r0 + cmp r2, 0 + bne _08022EB8 + movs r0, 0 + movs r1, 0x2 + bl EmitLinkStandbyMsg + ldrb r0, [r4] + bl MarkBufferBankForExecution +_08022EB8: + ldr r1, _08022EE8 @ =gSpecialStatuses + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + blt _08022F0C + adds r0, r1, 0 + adds r0, 0x28 + ldrb r0, [r0] + lsls r0, 25 + cmp r0, 0 + blt _08022F0C + cmp r5, 0 + beq _08022F0C + ldr r0, _08022EEC @ =gAbsentBankFlags + ldrb r1, [r0] + ldr r0, _08022EF0 @ =gBitTable + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _08022EF8 + ldr r1, _08022EF4 @ =gActiveBank + movs r0, 0x2 + strb r0, [r1] + b _08022EFC + .align 2, 0 +_08022EE8: .4byte gSpecialStatuses +_08022EEC: .4byte gAbsentBankFlags +_08022EF0: .4byte gBitTable +_08022EF4: .4byte gActiveBank +_08022EF8: + ldr r0, _08022F3C @ =gActiveBank + strb r1, [r0] +_08022EFC: + movs r0, 0 + movs r1, 0x2 + bl EmitLinkStandbyMsg + ldr r0, _08022F3C @ =gActiveBank + ldrb r0, [r0] + bl MarkBufferBankForExecution +_08022F0C: + ldr r1, _08022F40 @ =gSpecialStatuses + ldrb r0, [r1, 0x14] + lsls r0, 25 + cmp r0, 0 + blt _08022F62 + adds r0, r1, 0 + adds r0, 0x3C + ldrb r0, [r0] + lsls r0, 25 + cmp r0, 0 + blt _08022F62 + cmp r5, 0 + beq _08022F62 + ldr r0, _08022F44 @ =gAbsentBankFlags + ldrb r0, [r0] + ldr r1, _08022F48 @ =gBitTable + ldr r1, [r1, 0x4] + ands r0, r1 + cmp r0, 0 + beq _08022F4C + ldr r1, _08022F3C @ =gActiveBank + movs r0, 0x3 + b _08022F50 + .align 2, 0 +_08022F3C: .4byte gActiveBank +_08022F40: .4byte gSpecialStatuses +_08022F44: .4byte gAbsentBankFlags +_08022F48: .4byte gBitTable +_08022F4C: + ldr r1, _08022F6C @ =gActiveBank + movs r0, 0x1 +_08022F50: + strb r0, [r1] + movs r0, 0 + movs r1, 0x2 + bl EmitLinkStandbyMsg + ldr r0, _08022F6C @ =gActiveBank + ldrb r0, [r0] + bl MarkBufferBankForExecution +_08022F62: + ldr r1, _08022F70 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x6 + str r0, [r1] + b _08023302 + .align 2, 0 +_08022F6C: .4byte gActiveBank +_08022F70: .4byte gBattlescriptCurrInstr +_08022F74: + cmp r0, 0x6 + beq _08022F7A + b _08023170 +_08022F7A: + ldr r0, _08022FF0 @ =gBattleTypeFlags + ldrh r2, [r0] + movs r0, 0x40 + ands r0, r2 + cmp r0, 0 + beq _08022F88 + b _0802310C +_08022F88: + movs r0, 0x1 + ands r0, r2 + cmp r0, 0 + bne _08022F92 + b _0802310C +_08022F92: + ldr r7, _08022FF4 @ =gHitMarker + ldr r0, [r7] + lsrs r5, r0, 28 + ldr r4, _08022FF8 @ =gBitTable + ldr r0, [r4, 0x8] + ands r0, r5 + cmp r0, 0 + beq _0802303A + ldr r0, [r4] + ands r0, r5 + cmp r0, 0 + beq _0802303A + ldr r6, _08022FFC @ =gActiveBank + movs r0, 0x2 + strb r0, [r6] + ldr r0, _08023000 @ =gBattleBufferB + ldrb r1, [r0, 0x1] + movs r0, 0x2 + movs r2, 0x6 + bl sub_8018018 + lsls r0, 24 + cmp r0, 0 + beq _08023008 + ldr r2, _08023004 @ =gAbsentBankFlags + ldrb r0, [r6] + lsls r0, 2 + adds r0, r4 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r6] + lsls r0, 2 + adds r0, r4 + ldr r1, [r0] + lsls r1, 28 + ldr r0, [r7] + bics r0, r1 + str r0, [r7] + movs r0, 0 + bl dp01_build_cmdbuf_x2A_2A_2A_2A + ldrb r0, [r6] + bl MarkBufferBankForExecution + b _0802303A + .align 2, 0 +_08022FF0: .4byte gBattleTypeFlags +_08022FF4: .4byte gHitMarker +_08022FF8: .4byte gBitTable +_08022FFC: .4byte gActiveBank +_08023000: .4byte gBattleBufferB +_08023004: .4byte gAbsentBankFlags +_08023008: + ldr r4, _08023098 @ =gSpecialStatuses + ldrb r0, [r6] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + blt _0802303A + ldr r0, _0802309C @ =0x02000000 + ldr r1, _080230A0 @ =0x00016068 + adds r0, r1 + ldrb r0, [r0] + bl sub_8022A3C + ldrb r1, [r6] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r0] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r0] +_0802303A: + ldr r4, _080230A4 @ =gBitTable + ldr r0, [r4, 0xC] + ands r0, r5 + cmp r0, 0 + beq _080230EE + ldr r0, [r4, 0x4] + ands r5, r0 + cmp r5, 0 + beq _080230EE + ldr r5, _080230A8 @ =gActiveBank + movs r0, 0x3 + strb r0, [r5] + ldr r0, _080230AC @ =gBattleBufferB + ldr r2, _080230B0 @ =0x00000201 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x3 + movs r2, 0x6 + bl sub_8018018 + lsls r0, 24 + cmp r0, 0 + beq _080230BC + ldr r2, _080230B4 @ =gAbsentBankFlags + ldrb r0, [r5] + lsls r0, 2 + adds r0, r4 + ldr r0, [r0] + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldr r2, _080230B8 @ =gHitMarker + ldrb r0, [r5] + lsls r0, 2 + adds r0, r4 + ldr r1, [r0] + lsls r1, 28 + ldr r0, [r2] + bics r0, r1 + str r0, [r2] + movs r0, 0 + bl dp01_build_cmdbuf_x2A_2A_2A_2A + ldrb r0, [r5] + bl MarkBufferBankForExecution + b _080230EE + .align 2, 0 +_08023098: .4byte gSpecialStatuses +_0802309C: .4byte 0x02000000 +_080230A0: .4byte 0x00016068 +_080230A4: .4byte gBitTable +_080230A8: .4byte gActiveBank +_080230AC: .4byte gBattleBufferB +_080230B0: .4byte 0x00000201 +_080230B4: .4byte gAbsentBankFlags +_080230B8: .4byte gHitMarker +_080230BC: + ldr r4, _080230FC @ =gSpecialStatuses + ldrb r0, [r5] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + blt _080230EE + ldr r0, _08023100 @ =0x02000000 + ldr r1, _08023104 @ =0x00016069 + adds r0, r1 + ldrb r0, [r0] + bl sub_8022A3C + ldrb r1, [r5] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r0] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r0] +_080230EE: + ldr r1, _08023108 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x6 + str r0, [r1] + mov r12, r1 + b _08023110 + .align 2, 0 +_080230FC: .4byte gSpecialStatuses +_08023100: .4byte 0x02000000 +_08023104: .4byte 0x00016069 +_08023108: .4byte gBattlescriptCurrInstr +_0802310C: + adds r0, r1, 0x6 + str r0, [r6] +_08023110: + ldr r0, _08023160 @ =gHitMarker + ldr r0, [r0] + lsrs r5, r0, 28 + ldr r1, _08023164 @ =gBank1 + movs r0, 0 + strb r0, [r1] + ldr r4, _08023168 @ =gBitTable + ldr r2, [r4] + ands r2, r5 + ldr r6, _0802316C @ =gNoOfAllBanks + cmp r2, 0 + bne _0802314C + adds r7, r6, 0 + ldrb r0, [r6] + cmp r2, r0 + bcs _0802314C + adds r3, r1, 0 +_08023132: + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r3] + ldrb r2, [r3] + lsls r0, r2, 2 + adds r0, r4 + ldr r0, [r0] + ands r0, r5 + cmp r0, 0 + bne _0802314C + ldrb r0, [r7] + cmp r2, r0 + bcc _08023132 +_0802314C: + ldrb r0, [r1] + ldrb r6, [r6] + cmp r0, r6 + beq _08023156 + b _08023302 +_08023156: + mov r1, r8 + mov r2, r12 + str r1, [r2] + b _08023302 + .align 2, 0 +_08023160: .4byte gHitMarker +_08023164: .4byte gBank1 +_08023168: .4byte gBitTable +_0802316C: .4byte gNoOfAllBanks +_08023170: + movs r0, 0x80 + ands r0, r2 + movs r5, 0x1 + cmp r0, 0 + beq _0802317C + movs r5, 0 +_0802317C: + movs r0, 0x7F + ands r0, r2 + bl sub_8015150 + lsls r0, 24 + lsrs r7, r0, 24 + ldr r1, _080231A4 @ =gSpecialStatuses + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 2 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 25 + cmp r0, 0 + bge _080231A8 + ldr r0, [r6] + adds r0, 0x6 + str r0, [r6] + b _08023302 + .align 2, 0 +_080231A4: .4byte gSpecialStatuses +_080231A8: + adds r0, r7, 0 + movs r1, 0x6 + movs r2, 0x6 + bl sub_8018018 + lsls r0, 24 + cmp r0, 0 + beq _080231F8 + ldr r2, _080231E8 @ =gActiveBank + strb r7, [r2] + ldr r3, _080231EC @ =gAbsentBankFlags + ldr r4, _080231F0 @ =gBitTable + ldrb r0, [r2] + lsls r0, 2 + adds r0, r4 + ldr r0, [r0] + ldrb r1, [r3] + orrs r0, r1 + strb r0, [r3] + ldr r3, _080231F4 @ =gHitMarker + ldrb r0, [r2] + lsls r0, 2 + adds r0, r4 + ldr r1, [r0] + lsls r1, 28 + ldr r0, [r3] + bics r0, r1 + str r0, [r3] + mov r0, r8 + str r0, [r6] + b _08023302 + .align 2, 0 +_080231E8: .4byte gActiveBank +_080231EC: .4byte gAbsentBankFlags +_080231F0: .4byte gBitTable +_080231F4: .4byte gHitMarker +_080231F8: + ldr r4, _080232A0 @ =gActiveBank + strb r7, [r4] + ldr r3, _080232A4 @ =0x02000000 + ldrb r0, [r4] + ldr r2, _080232A8 @ =0x00016064 + adds r1, r0, r2 + adds r1, r3 + ldr r2, _080232AC @ =gBattlePartyID + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + strb r0, [r1] + ldrb r1, [r4] + movs r0, 0x2 + eors r0, r1 + ldr r1, _080232B0 @ =0x00016068 + adds r0, r1 + adds r0, r3 + ldrb r2, [r0] + ldrb r1, [r4] + lsls r0, r1, 1 + adds r0, r1 + ldr r1, _080232B4 @ =0x0001606c + adds r3, r1 + adds r0, r3 + str r0, [sp] + movs r0, 0 + adds r1, r5, 0 + movs r3, 0 + bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f + ldrb r0, [r4] + bl MarkBufferBankForExecution + ldr r0, [r6] + adds r0, 0x6 + str r0, [r6] + ldrb r0, [r4] + bl GetBankIdentity + lsls r0, 24 + cmp r0, 0 + bne _0802325A + ldr r1, _080232B8 @ =gBattleResults + ldrb r0, [r1, 0x2] + cmp r0, 0xFE + bhi _0802325A + adds r0, 0x1 + strb r0, [r1, 0x2] +_0802325A: + ldr r0, _080232BC @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080232C4 + ldr r1, _080232A0 @ =gActiveBank + movs r0, 0 + strb r0, [r1] + ldr r0, _080232C0 @ =gNoOfAllBanks + ldrb r0, [r0] + cmp r0, 0 + beq _08023302 + adds r4, r1, 0 +_08023276: + ldrb r0, [r4] + cmp r0, r7 + beq _0802328A + movs r0, 0 + movs r1, 0x2 + bl EmitLinkStandbyMsg + ldrb r0, [r4] + bl MarkBufferBankForExecution +_0802328A: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + ldr r1, _080232C0 @ =gNoOfAllBanks + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r1] + cmp r0, r1 + bcc _08023276 + b _08023302 + .align 2, 0 +_080232A0: .4byte gActiveBank +_080232A4: .4byte 0x02000000 +_080232A8: .4byte 0x00016064 +_080232AC: .4byte gBattlePartyID +_080232B0: .4byte 0x00016068 +_080232B4: .4byte 0x0001606c +_080232B8: .4byte gBattleResults +_080232BC: .4byte gBattleTypeFlags +_080232C0: .4byte gNoOfAllBanks +_080232C4: + adds r0, r7, 0 + bl GetBankIdentity + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + bl GetBankByPlayerAI + ldr r4, _08023310 @ =gActiveBank + strb r0, [r4] + ldr r0, _08023314 @ =gAbsentBankFlags + ldrb r1, [r0] + ldr r2, _08023318 @ =gBitTable + ldrb r3, [r4] + lsls r0, r3, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _080232F4 + movs r0, 0x2 + eors r3, r0 + strb r3, [r4] +_080232F4: + movs r0, 0 + movs r1, 0x2 + bl EmitLinkStandbyMsg + ldrb r0, [r4] + bl MarkBufferBankForExecution +_08023302: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08023310: .4byte gActiveBank +_08023314: .4byte gAbsentBankFlags +_08023318: .4byte gBitTable + thumb_func_end atk50_openpartyscreen + + thumb_func_start sub_802331C +sub_802331C: @ 802331C + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, _0802334C @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + beq _0802332C + b _080234FE +_0802332C: + ldr r4, _08023350 @ =gBattlescriptCurrInstr + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r7, _08023354 @ =gActiveBank + strb r0, [r7] + ldr r0, [r4] + ldrb r0, [r0, 0x2] + cmp r0, 0x1 + beq _080233A0 + cmp r0, 0x1 + bgt _08023358 + cmp r0, 0 + beq _0802335E + b _080234F6 + .align 2, 0 +_0802334C: .4byte gBattleExecBuffer +_08023350: .4byte gBattlescriptCurrInstr +_08023354: .4byte gActiveBank +_08023358: + cmp r0, 0x2 + beq _080233BC + b _080234F6 +_0802335E: + movs r3, 0 + ldr r2, _08023390 @ =gNoOfAllBanks + ldrb r0, [r2] + cmp r3, r0 + blt _0802336A + b _080234F6 +_0802336A: + ldr r0, _08023394 @ =0x02000000 + ldr r1, _08023398 @ =gBattleBufferB + movs r5, 0x80 + lsls r5, 2 + adds r4, r2, 0 + ldr r6, _0802339C @ =0x00016068 + adds r2, r0, r6 +_08023378: + ldrb r0, [r1] + cmp r0, 0x22 + bne _08023382 + ldrb r0, [r1, 0x1] + strb r0, [r2] +_08023382: + adds r1, r5 + adds r2, 0x1 + adds r3, 0x1 + ldrb r0, [r4] + cmp r3, r0 + blt _08023378 + b _080234F6 + .align 2, 0 +_08023390: .4byte gNoOfAllBanks +_08023394: .4byte 0x02000000 +_08023398: .4byte gBattleBufferB +_0802339C: .4byte 0x00016068 +_080233A0: + ldr r0, _080233B8 @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080233AE + b _080234F6 +_080233AE: + ldrb r0, [r7] + bl sub_8012258 + b _080234F6 + .align 2, 0 +_080233B8: .4byte gBattleTypeFlags +_080233BC: + ldr r1, _08023484 @ =gBattleCommunication + ldr r4, _08023488 @ =gBattleBufferB + ldrb r0, [r7] + lsls r0, 9 + adds r2, r4, 0x1 + adds r0, r2 + ldrb r0, [r0] + strb r0, [r1] + ldr r6, _0802348C @ =0x02000000 + ldrb r0, [r7] + ldr r3, _08023490 @ =0x00016068 + adds r1, r0, r3 + adds r1, r6 + lsls r0, 9 + adds r0, r2 + ldrb r0, [r0] + strb r0, [r1] + ldr r0, _08023494 @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080234A4 + ldrb r0, [r7] + lsls r1, r0, 1 + adds r1, r0 + ldr r5, _08023498 @ =0x0001606c + adds r1, r5 + adds r1, r6 + ldrb r2, [r1] + movs r0, 0xF + ands r0, r2 + strb r0, [r1] + ldrb r0, [r7] + lsls r1, r0, 1 + adds r1, r0 + adds r1, r5 + adds r1, r6 + lsls r0, 9 + adds r2, r4, 0x2 + mov r12, r2 + add r0, r12 + ldrb r2, [r0] + movs r3, 0xF0 + adds r0, r3, 0 + ands r0, r2 + ldrb r2, [r1] + orrs r0, r2 + strb r0, [r1] + ldrb r0, [r7] + lsls r1, r0, 1 + adds r1, r0 + ldr r2, _0802349C @ =0x0001606d + adds r1, r2 + adds r1, r6 + lsls r0, 9 + adds r4, 0x3 + mov r8, r4 + add r0, r8 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + movs r4, 0x2 + eors r0, r4 + lsls r1, r0, 1 + adds r1, r0 + adds r1, r5 + adds r1, r6 + ldrb r2, [r1] + adds r0, r3, 0 + ands r0, r2 + strb r0, [r1] + ldrb r0, [r7] + eors r0, r4 + lsls r1, r0, 1 + adds r1, r0 + adds r1, r5 + adds r1, r6 + ldrb r0, [r7] + lsls r0, 9 + add r0, r12 + ldrb r0, [r0] + ands r3, r0 + lsrs r3, 4 + ldrb r0, [r1] + orrs r3, r0 + strb r3, [r1] + ldrb r0, [r7] + eors r4, r0 + lsls r1, r4, 1 + adds r1, r4 + ldr r3, _080234A0 @ =0x0001606e + adds r1, r3 + adds r1, r6 + ldrb r0, [r7] + lsls r0, 9 + add r0, r8 + ldrb r0, [r0] + strb r0, [r1] + b _080234AA + .align 2, 0 +_08023484: .4byte gBattleCommunication +_08023488: .4byte gBattleBufferB +_0802348C: .4byte 0x02000000 +_08023490: .4byte 0x00016068 +_08023494: .4byte gBattleTypeFlags +_08023498: .4byte 0x0001606c +_0802349C: .4byte 0x0001606d +_080234A0: .4byte 0x0001606e +_080234A4: + ldrb r0, [r7] + bl sub_8012258 +_080234AA: + ldr r1, _08023508 @ =gBattleTextBuff1 + movs r5, 0xFD + strb r5, [r1] + movs r0, 0x6 + strb r0, [r1, 0x1] + ldr r4, _0802350C @ =gBattleMons + ldr r3, _08023510 @ =gBankAttacker + ldrb r0, [r3] + movs r2, 0x58 + muls r0, r2 + adds r0, r4 + ldrh r0, [r0] + strb r0, [r1, 0x2] + ldrb r0, [r3] + muls r0, r2 + adds r0, r4 + ldrh r0, [r0] + lsrs r0, 8 + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r2, _08023514 @ =gBattleTextBuff2 + strb r5, [r2] + movs r0, 0x7 + strb r0, [r2, 0x1] + ldr r3, _08023518 @ =gActiveBank + ldrb r0, [r3] + strb r0, [r2, 0x2] + ldr r1, _0802351C @ =gBattleBufferB + ldrb r0, [r3] + lsls r0, 9 + adds r1, 0x1 + adds r0, r1 + ldrb r0, [r0] + strb r0, [r2, 0x3] + movs r0, 0x1 + negs r0, r0 + strb r0, [r2, 0x4] +_080234F6: + ldr r1, _08023520 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x3 + str r0, [r1] +_080234FE: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08023508: .4byte gBattleTextBuff1 +_0802350C: .4byte gBattleMons +_08023510: .4byte gBankAttacker +_08023514: .4byte gBattleTextBuff2 +_08023518: .4byte gActiveBank +_0802351C: .4byte gBattleBufferB +_08023520: .4byte gBattlescriptCurrInstr + thumb_func_end sub_802331C + + thumb_func_start sub_8023524 +sub_8023524: @ 8023524 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + ldr r6, _08023630 @ =gBattlescriptCurrInstr + ldr r0, [r6] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r4, _08023634 @ =gActiveBank + strb r0, [r4] + ldrb r0, [r4] + bl sub_80157C4 + ldr r2, _08023638 @ =gHitMarker + ldr r1, _0802363C @ =gBitTable + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + lsls r1, 28 + ldr r0, [r2] + bics r0, r1 + str r0, [r2] + ldr r2, _08023640 @ =gSpecialStatuses + ldrb r0, [r4] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r2, [r1] + movs r0, 0x41 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + ldrb r0, [r4] + bl GetBankSide + ldr r5, _08023644 @ =gSideAffecting + lsls r0, 24 + lsrs r0, 23 + adds r0, r5 + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 2 + mov r8, r0 + ands r0, r1 + cmp r0, 0 + bne _0802367C + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + lsrs r0, 23 + adds r0, r5 + ldrh r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0802367C + ldr r1, _08023648 @ =gBattleMons + mov r9, r1 + ldrb r2, [r4] + movs r7, 0x58 + adds r0, r2, 0 + muls r0, r7 + adds r1, r0, r1 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0x2 + beq _0802367C + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0x2 + beq _0802367C + adds r0, r1, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x1A + beq _0802367C + adds r0, r2, 0 + bl GetBankSide + lsls r0, 24 + lsrs r0, 23 + adds r0, r5 + ldrh r2, [r0] + mov r1, r8 + orrs r1, r2 + strh r1, [r0] + ldrb r0, [r4] + bl GetBankSide + ldr r2, _0802364C @ =gSideTimer + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0x6] + movs r1, 0x5 + subs r1, r0 + lsls r1, 25 + lsrs r1, 24 + ldr r5, _08023650 @ =gBattleMoveDamage + ldrb r0, [r4] + muls r0, r7 + add r0, r9 + ldrh r0, [r0, 0x2C] + bl __divsi3 + str r0, [r5] + cmp r0, 0 + bne _08023614 + movs r0, 0x1 + str r0, [r5] +_08023614: + ldr r0, _08023654 @ =0x02000000 + ldrb r1, [r4] + ldr r2, _08023658 @ =0x00016003 + adds r0, r2 + strb r1, [r0] + bl b_movescr_stack_push_cursor + ldr r0, [r6] + ldrb r0, [r0, 0x1] + cmp r0, 0 + bne _08023660 + ldr r0, _0802365C @ =gUnknown_081D919F + str r0, [r6] + b _080237B6 + .align 2, 0 +_08023630: .4byte gBattlescriptCurrInstr +_08023634: .4byte gActiveBank +_08023638: .4byte gHitMarker +_0802363C: .4byte gBitTable +_08023640: .4byte gSpecialStatuses +_08023644: .4byte gSideAffecting +_08023648: .4byte gBattleMons +_0802364C: .4byte gSideTimer +_08023650: .4byte gBattleMoveDamage +_08023654: .4byte 0x02000000 +_08023658: .4byte 0x00016003 +_0802365C: .4byte gUnknown_081D919F +_08023660: + cmp r0, 0x1 + bne _08023670 + ldr r0, _0802366C @ =gUnknown_081D9171 + str r0, [r6] + b _080237B6 + .align 2, 0 +_0802366C: .4byte gUnknown_081D9171 +_08023670: + ldr r0, _08023678 @ =gUnknown_081D91CD + str r0, [r6] + b _080237B6 + .align 2, 0 +_08023678: .4byte gUnknown_081D91CD +_0802367C: + ldr r1, _08023754 @ =gBattleMons + ldr r5, _08023758 @ =gActiveBank + ldrb r2, [r5] + movs r0, 0x58 + muls r0, r2 + adds r0, r1 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x36 + bne _080236A2 + ldr r1, _0802375C @ =gDisableStructs + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r1, [r0, 0x18] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0, 0x18] +_080236A2: + ldrb r1, [r5] + movs r0, 0 + str r0, [sp] + movs r2, 0 + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + cmp r0, 0 + beq _080236B8 + b _080237B6 +_080236B8: + ldrb r1, [r5] + movs r0, 0 + movs r2, 0 + bl sub_801A02C + lsls r0, 24 + cmp r0, 0 + bne _080237B6 + ldrb r0, [r5] + bl GetBankSide + ldr r1, _08023760 @ =gSideAffecting + lsls r0, 24 + lsrs r0, 23 + adds r0, r1 + ldrh r2, [r0] + ldr r1, _08023764 @ =0x0000fdff + ands r1, r2 + strh r1, [r0] + movs r4, 0 + ldr r0, _08023768 @ =gNoOfAllBanks + ldrb r3, [r0] + cmp r4, r3 + bge _08023706 + ldr r6, _0802376C @ =gTurnOrder + ldr r3, _08023770 @ =gUnknown_02024A76 + movs r2, 0xC + adds r1, r0, 0 +_080236F0: + adds r0, r4, r6 + ldrb r0, [r0] + ldrb r7, [r5] + cmp r0, r7 + bne _080236FE + adds r0, r4, r3 + strb r2, [r0] +_080236FE: + adds r4, 0x1 + ldrb r0, [r1] + cmp r4, r0 + blt _080236F0 +_08023706: + movs r4, 0 + ldr r0, _08023768 @ =gNoOfAllBanks + ldrb r0, [r0] + cmp r4, r0 + bge _08023736 + ldr r5, _08023754 @ =gBattleMons +_08023712: + lsls r0, r4, 24 + lsrs r0, 24 + bl GetBankSide + lsls r0, 24 + lsrs r0, 23 + ldr r1, _08023774 @ =0x020160bc + adds r0, r1 + movs r1, 0x58 + muls r1, r4 + adds r1, r5 + ldrh r1, [r1, 0x28] + strh r1, [r0] + adds r4, 0x1 + ldr r0, _08023768 @ =gNoOfAllBanks + ldrb r0, [r0] + cmp r4, r0 + blt _08023712 +_08023736: + ldr r0, _08023778 @ =gBattlescriptCurrInstr + ldr r1, [r0] + ldrb r1, [r1, 0x1] + adds r5, r0, 0 + cmp r1, 0x5 + bne _080237B0 + ldr r0, _0802377C @ =gHitMarker + ldr r0, [r0] + lsrs r4, r0, 28 + ldr r1, _08023780 @ =gBank1 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldr r2, _08023784 @ =gBitTable + b _08023796 + .align 2, 0 +_08023754: .4byte gBattleMons +_08023758: .4byte gActiveBank +_0802375C: .4byte gDisableStructs +_08023760: .4byte gSideAffecting +_08023764: .4byte 0x0000fdff +_08023768: .4byte gNoOfAllBanks +_0802376C: .4byte gTurnOrder +_08023770: .4byte gUnknown_02024A76 +_08023774: .4byte 0x020160bc +_08023778: .4byte gBattlescriptCurrInstr +_0802377C: .4byte gHitMarker +_08023780: .4byte gBank1 +_08023784: .4byte gBitTable +_08023788: + ldr r0, _080237C4 @ =gNoOfAllBanks + ldrb r3, [r1] + ldrb r0, [r0] + cmp r3, r0 + bcs _080237B0 + adds r0, r3, 0x1 + strb r0, [r1] +_08023796: + ldrb r0, [r1] + lsls r0, 2 + adds r0, r2 + ldr r3, [r0] + adds r0, r4, 0 + ands r0, r3 + cmp r0, 0 + beq _08023788 + ldr r0, _080237C8 @ =gAbsentBankFlags + ldrb r0, [r0] + ands r0, r3 + cmp r0, 0 + bne _08023788 +_080237B0: + ldr r0, [r5] + adds r0, 0x2 + str r0, [r5] +_080237B6: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080237C4: .4byte gNoOfAllBanks +_080237C8: .4byte gAbsentBankFlags + thumb_func_end sub_8023524 + + thumb_func_start sub_80237CC +sub_80237CC: @ 80237CC + push {lr} + ldr r0, _080237DC @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r0, [r0, 0x1] + cmp r0, 0 + bne _080237E0 + movs r0, 0 + b _080237E2 + .align 2, 0 +_080237DC: .4byte gBattlescriptCurrInstr +_080237E0: + movs r0, 0x1 +_080237E2: + bl GetBankByPlayerAI + ldr r1, _08023804 @ =gActiveBank + strb r0, [r1] + movs r0, 0 + bl dp01_build_cmdbuf_x08_8_8_8 + ldr r0, _08023804 @ =gActiveBank + ldrb r0, [r0] + bl MarkBufferBankForExecution + ldr r1, _08023808 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08023804: .4byte gActiveBank +_08023808: .4byte gBattlescriptCurrInstr + thumb_func_end sub_80237CC + + thumb_func_start atk54_802511C +atk54_802511C: @ 802380C + push {r4,r5,lr} + ldr r5, _0802383C @ =gActiveBank + ldr r0, _08023840 @ =gBankAttacker + ldrb r0, [r0] + strb r0, [r5] + ldr r4, _08023844 @ =gBattlescriptCurrInstr + ldr r0, [r4] + ldrb r1, [r0, 0x1] + ldrb r0, [r0, 0x2] + lsls r0, 8 + orrs r1, r0 + movs r0, 0 + bl EmitEffectivenessSound + ldrb r0, [r5] + bl MarkBufferBankForExecution + ldr r0, [r4] + adds r0, 0x3 + str r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0802383C: .4byte gActiveBank +_08023840: .4byte gBankAttacker +_08023844: .4byte gBattlescriptCurrInstr + thumb_func_end atk54_802511C + + thumb_func_start sub_8023848 +sub_8023848: @ 8023848 + push {r4,r5,lr} + ldr r5, _08023878 @ =gActiveBank + ldr r0, _0802387C @ =gBankAttacker + ldrb r0, [r0] + strb r0, [r5] + ldr r4, _08023880 @ =gBattlescriptCurrInstr + ldr r0, [r4] + ldrb r1, [r0, 0x1] + ldrb r0, [r0, 0x2] + lsls r0, 8 + orrs r1, r0 + movs r0, 0 + bl sub_800D074 + ldrb r0, [r5] + bl MarkBufferBankForExecution + ldr r0, [r4] + adds r0, 0x3 + str r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08023878: .4byte gActiveBank +_0802387C: .4byte gBankAttacker +_08023880: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8023848 + + thumb_func_start atk56_8025194 +atk56_8025194: @ 8023884 + push {r4,r5,lr} + ldr r5, _080238AC @ =gBattlescriptCurrInstr + ldr r0, [r5] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r4, _080238B0 @ =gActiveBank + strb r0, [r4] + movs r0, 0 + bl EmitFaintingCry + ldrb r0, [r4] + bl MarkBufferBankForExecution + ldr r0, [r5] + adds r0, 0x2 + str r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080238AC: .4byte gBattlescriptCurrInstr +_080238B0: .4byte gActiveBank + thumb_func_end atk56_8025194 + + thumb_func_start atk57_80251C4_flee +atk57_80251C4_flee: @ 80238B4 + push {r4,lr} + movs r0, 0 + bl GetBankByPlayerAI + ldr r4, _080238E0 @ =gActiveBank + strb r0, [r4] + ldr r0, _080238E4 @ =gBattleOutcome + ldrb r1, [r0] + movs r0, 0 + bl dp01_build_cmdbuf_x37_a + ldrb r0, [r4] + bl MarkBufferBankForExecution + ldr r1, _080238E8 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080238E0: .4byte gActiveBank +_080238E4: .4byte gBattleOutcome +_080238E8: .4byte gBattlescriptCurrInstr + thumb_func_end atk57_80251C4_flee + + thumb_func_start atk58_cmd58 +atk58_cmd58: @ 80238EC + push {r4,r5,lr} + ldr r5, _08023918 @ =gBattlescriptCurrInstr + ldr r0, [r5] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r4, _0802391C @ =gActiveBank + strb r0, [r4] + movs r0, 0 + movs r1, 0x1 + bl dp01_build_cmdbuf_x06_a + ldrb r0, [r4] + bl MarkBufferBankForExecution + ldr r0, [r5] + adds r0, 0x2 + str r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08023918: .4byte gBattlescriptCurrInstr +_0802391C: .4byte gActiveBank + thumb_func_end atk58_cmd58 + + thumb_func_start atk59_8025230 +atk59_8025230: @ 8023920 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r0, _0802399C @ =gBattlescriptCurrInstr + ldr r2, [r0] + ldrb r6, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r6, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r6, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r6, r0 + ldrb r4, [r2, 0x5] + ldrb r0, [r2, 0x6] + lsls r0, 8 + orrs r4, r0 + ldrb r0, [r2, 0x7] + lsls r0, 16 + orrs r4, r0 + ldrb r0, [r2, 0x8] + lsls r0, 24 + orrs r4, r0 + ldr r0, _080239A0 @ =0x02000000 + ldr r1, _080239A4 @ =0x00016018 + adds r7, r0, r1 + ldrb r1, [r7] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080239A8 @ =gPlayerParty + adds r0, r1 + ldrb r1, [r2, 0x9] + bl sub_803B7C8 + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, _080239AC @ =0x0000fffe + cmp r5, r0 + bne _08023992 + mov r9, r7 + mov r8, r5 + movs r7, 0x64 +_0802397A: + mov r3, r9 + ldrb r0, [r3] + muls r0, r7 + ldr r1, _080239A8 @ =gPlayerParty + adds r0, r1 + movs r1, 0 + bl sub_803B7C8 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, r8 + beq _0802397A +_08023992: + cmp r5, 0 + bne _080239B0 + ldr r0, _0802399C @ =gBattlescriptCurrInstr + str r4, [r0] + b _08023A58 + .align 2, 0 +_0802399C: .4byte gBattlescriptCurrInstr +_080239A0: .4byte 0x02000000 +_080239A4: .4byte 0x00016018 +_080239A8: .4byte gPlayerParty +_080239AC: .4byte 0x0000fffe +_080239B0: + ldr r0, _080239C0 @ =0x0000ffff + cmp r5, r0 + bne _080239C8 + ldr r1, _080239C4 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0xA + str r0, [r1] + b _08023A58 + .align 2, 0 +_080239C0: .4byte 0x0000ffff +_080239C4: .4byte gBattlescriptCurrInstr +_080239C8: + movs r0, 0 + bl GetBankByPlayerAI + ldr r1, _08023A64 @ =gActiveBank + strb r0, [r1] + ldr r0, _08023A68 @ =gBattlePartyID + ldrb r2, [r1] + lsls r1, r2, 1 + adds r1, r0 + ldr r0, _08023A6C @ =0x02000000 + ldr r3, _08023A70 @ =0x00016018 + adds r0, r3 + ldrh r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + bne _08023A08 + ldr r3, _08023A74 @ =gBattleMons + movs r0, 0x58 + muls r2, r0 + adds r0, r3, 0 + adds r0, 0x50 + adds r0, r2, r0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 14 + ands r0, r1 + cmp r0, 0 + bne _08023A08 + adds r0, r2, r3 + adds r1, r5, 0 + bl GiveMoveToBattleMon +_08023A08: + ldr r0, _08023A78 @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08023A54 + movs r0, 0x2 + bl GetBankByPlayerAI + ldr r1, _08023A64 @ =gActiveBank + strb r0, [r1] + ldr r0, _08023A68 @ =gBattlePartyID + ldrb r2, [r1] + lsls r1, r2, 1 + adds r1, r0 + ldr r0, _08023A6C @ =0x02000000 + ldr r3, _08023A70 @ =0x00016018 + adds r0, r3 + ldrh r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + bne _08023A54 + ldr r3, _08023A74 @ =gBattleMons + movs r0, 0x58 + muls r2, r0 + adds r0, r3, 0 + adds r0, 0x50 + adds r0, r2, r0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 14 + ands r0, r1 + cmp r0, 0 + bne _08023A54 + adds r0, r2, r3 + adds r1, r5, 0 + bl GiveMoveToBattleMon +_08023A54: + ldr r0, _08023A7C @ =gBattlescriptCurrInstr + str r6, [r0] +_08023A58: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08023A64: .4byte gActiveBank +_08023A68: .4byte gBattlePartyID +_08023A6C: .4byte 0x02000000 +_08023A70: .4byte 0x00016018 +_08023A74: .4byte gBattleMons +_08023A78: .4byte gBattleTypeFlags +_08023A7C: .4byte gBattlescriptCurrInstr + thumb_func_end atk59_8025230 + + thumb_func_start sub_8023A80 +sub_8023A80: @ 8023A80 + push {r4,lr} + sub sp, 0x4 + movs r0, 0 + str r0, [sp] + movs r0, 0x18 + movs r1, 0x8 + movs r2, 0x1D + movs r3, 0xD + bl sub_802BBD4 + ldr r4, _08023AC8 @ =gUnknown_03004210 + ldr r1, _08023ACC @ =gUnknown_08400D7A + movs r2, 0x80 + lsls r2, 1 + movs r0, 0x9 + str r0, [sp] + adds r0, r4, 0 + movs r3, 0x19 + bl InitWindow + adds r0, r4, 0 + bl sub_8002F44 + ldr r1, _08023AD0 @ =0x0000ffff + ldr r3, _08023AD4 @ =0x00002d9f + movs r0, 0x20 + str r0, [sp] + movs r0, 0 + movs r2, 0xC + bl sub_814A5C0 + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08023AC8: .4byte gUnknown_03004210 +_08023ACC: .4byte gUnknown_08400D7A +_08023AD0: .4byte 0x0000ffff +_08023AD4: .4byte 0x00002d9f + thumb_func_end sub_8023A80 + + thumb_func_start sub_8023AD8 +sub_8023AD8: @ 8023AD8 + push {lr} + sub sp, 0x4 + movs r0, 0x1 + str r0, [sp] + movs r0, 0x18 + movs r1, 0x8 + movs r2, 0x1D + movs r3, 0xD + bl sub_802BBD4 + bl DestroyMenuCursor + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end sub_8023AD8 + + thumb_func_start sub_8023AF8 +sub_8023AF8: @ 8023AF8 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + ldr r1, _08023B24 @ =gActiveBank + movs r0, 0 + strb r0, [r1] + ldr r1, _08023B28 @ =0x02000000 + ldr r2, _08023B2C @ =0x0001601a + adds r0, r1, r2 + ldrb r0, [r0] + adds r5, r1, 0 + cmp r0, 0x5 + bls _08023B18 + b _08023E5C +_08023B18: + lsls r0, 2 + ldr r1, _08023B30 @ =_08023B34 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08023B24: .4byte gActiveBank +_08023B28: .4byte 0x02000000 +_08023B2C: .4byte 0x0001601a +_08023B30: .4byte _08023B34 + .align 2, 0 +_08023B34: + .4byte _08023B4C + .4byte _08023B74 + .4byte _08023C30 + .4byte _08023C84 + .4byte _08023E38 + .4byte _08023E4C +_08023B4C: + bl sub_8023A80 + ldr r1, _08023B68 @ =0x02000000 + ldr r0, _08023B6C @ =0x0001601a + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + movs r2, 0 + strb r0, [r1] + ldr r0, _08023B70 @ =gBattleCommunication + strb r2, [r0, 0x1] + bl sub_802BC6C + b _08023E5C + .align 2, 0 +_08023B68: .4byte 0x02000000 +_08023B6C: .4byte 0x0001601a +_08023B70: .4byte gBattleCommunication +_08023B74: + ldr r0, _08023BFC @ =gMain + ldrh r1, [r0, 0x2E] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08023B9A + ldr r4, _08023C00 @ =gBattleCommunication + ldrb r0, [r4, 0x1] + cmp r0, 0 + beq _08023B9A + movs r0, 0x5 + bl PlaySE + bl nullsub_6 + movs r0, 0 + strb r0, [r4, 0x1] + bl sub_802BC6C +_08023B9A: + ldr r0, _08023BFC @ =gMain + ldrh r1, [r0, 0x2E] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08023BC0 + ldr r4, _08023C00 @ =gBattleCommunication + ldrb r0, [r4, 0x1] + cmp r0, 0 + bne _08023BC0 + movs r0, 0x5 + bl PlaySE + bl nullsub_6 + movs r0, 0x1 + strb r0, [r4, 0x1] + bl sub_802BC6C +_08023BC0: + ldr r0, _08023BFC @ =gMain + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08023C0C + movs r0, 0x5 + bl PlaySE + ldr r0, _08023C00 @ =gBattleCommunication + ldrb r4, [r0, 0x1] + cmp r4, 0 + bne _08023C1C + bl sub_8023AD8 + movs r0, 0x1 + negs r0, r0 + str r4, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + bl BeginNormalPaletteFade + ldr r1, _08023C04 @ =0x02000000 + ldr r2, _08023C08 @ =0x0001601a + adds r1, r2 + ldrb r0, [r1] + adds r0, 0x1 + b _08023E5A + .align 2, 0 +_08023BFC: .4byte gMain +_08023C00: .4byte gBattleCommunication +_08023C04: .4byte 0x02000000 +_08023C08: .4byte 0x0001601a +_08023C0C: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08023C16 + b _08023E5C +_08023C16: + movs r0, 0x5 + bl PlaySE +_08023C1C: + ldr r0, _08023C28 @ =0x02000000 + ldr r1, _08023C2C @ =0x0001601a + adds r0, r1 + movs r1, 0x4 + strb r1, [r0] + b _08023E5C + .align 2, 0 +_08023C28: .4byte 0x02000000 +_08023C2C: .4byte 0x0001601a +_08023C30: + ldr r0, _08023C68 @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08023C3E + b _08023E5C +_08023C3E: + ldr r0, _08023C6C @ =gPlayerParty + ldr r2, _08023C70 @ =0x00016018 + adds r1, r5, r2 + ldrb r1, [r1] + ldr r2, _08023C74 @ =gPlayerPartyCount + ldrb r2, [r2] + subs r2, 0x1 + lsls r2, 24 + lsrs r2, 24 + ldr r3, _08023C78 @ =ReshowBattleScreenAfterMenu + ldr r4, _08023C7C @ =word_2024E82 + ldrh r4, [r4] + str r4, [sp] + bl sub_809D9F0 + ldr r0, _08023C80 @ =0x0001601a + adds r1, r5, r0 + ldrb r0, [r1] + adds r0, 0x1 + b _08023E5A + .align 2, 0 +_08023C68: .4byte gPaletteFade +_08023C6C: .4byte gPlayerParty +_08023C70: .4byte 0x00016018 +_08023C74: .4byte gPlayerPartyCount +_08023C78: .4byte ReshowBattleScreenAfterMenu +_08023C7C: .4byte word_2024E82 +_08023C80: .4byte 0x0001601a +_08023C84: + ldr r0, _08023CB4 @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08023C92 + b _08023E5C +_08023C92: + ldr r0, _08023CB8 @ =gMain + ldr r1, [r0, 0x4] + ldr r0, _08023CBC @ =sub_800F808 + cmp r1, r0 + beq _08023C9E + b _08023E5C +_08023C9E: + bl sub_809FA30 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x4 + bne _08023CC8 + ldr r0, _08023CC0 @ =0x02000000 + ldr r1, _08023CC4 @ =0x0001601a + adds r0, r1 + strb r5, [r0] + b _08023E5C + .align 2, 0 +_08023CB4: .4byte gPaletteFade +_08023CB8: .4byte gMain +_08023CBC: .4byte sub_800F808 +_08023CC0: .4byte 0x02000000 +_08023CC4: .4byte 0x0001601a +_08023CC8: + ldr r2, _08023D08 @ =0x02000000 + mov r9, r2 + ldr r6, _08023D0C @ =0x00016018 + add r6, r9 + ldrb r0, [r6] + movs r1, 0x64 + mov r8, r1 + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + ldr r7, _08023D10 @ =gPlayerParty + adds r0, r7 + adds r1, r5, 0 + adds r1, 0xD + bl GetMonData + lsls r0, 16 + lsrs r4, r0, 16 + adds r0, r4, 0 + bl IsHMMove2 + cmp r0, 0 + beq _08023D20 + ldr r0, _08023D14 @ =0x0000013f + ldr r1, _08023D18 @ =gActiveBank + ldrb r1, [r1] + bl PrepareStringBattle + ldr r1, _08023D1C @ =0x0001601a + add r1, r9 + movs r0, 0x5 + b _08023E5A + .align 2, 0 +_08023D08: .4byte 0x02000000 +_08023D0C: .4byte 0x00016018 +_08023D10: .4byte gPlayerParty +_08023D14: .4byte 0x0000013f +_08023D18: .4byte gActiveBank +_08023D1C: .4byte 0x0001601a +_08023D20: + ldr r3, _08023E10 @ =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] + ldr r1, _08023E14 @ =gBattleTextBuff2 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x2 + strb r0, [r1, 0x1] + strb r4, [r1, 0x2] + lsrs r0, r4, 8 + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldrb r0, [r6] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r7 + adds r1, r5, 0 + bl RemoveMonPPBonus + ldrb r0, [r6] + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + adds r0, r7 + ldr r7, _08023E18 @ =word_2024E82 + ldrh r1, [r7] + adds r2, r5, 0 + bl SetMonMoveSlot + ldr r0, _08023E1C @ =gBattlePartyID + ldrh r0, [r0] + ldrb r6, [r6] + cmp r0, r6 + bne _08023DB0 + ldr r4, _08023E20 @ =gBattleMons + ldr r0, [r4, 0x50] + movs r1, 0x80 + lsls r1, 14 + ands r0, r1 + cmp r0, 0 + bne _08023DB0 + ldr r0, _08023E24 @ =gDisableStructs + ldrb r1, [r0, 0x18] + lsrs r1, 4 + ldr r2, _08023E28 @ =gBitTable + lsls r0, r5, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _08023DB0 + adds r0, r4, 0 + adds r1, r5, 0 + bl RemoveBattleMonPPBonus + ldrh r1, [r7] + adds r0, r4, 0 + adds r2, r5, 0 + bl SetBattleMonMoveSlot +_08023DB0: + ldr r0, _08023E2C @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08023E5C + ldr r0, _08023E1C @ =gBattlePartyID + ldr r1, _08023E30 @ =0x02000000 + ldr r2, _08023E34 @ =0x00016018 + adds r1, r2 + ldrh r0, [r0, 0x4] + ldrb r1, [r1] + cmp r0, r1 + bne _08023E5C + ldr r4, _08023E20 @ =gBattleMons + movs r1, 0x80 + lsls r1, 1 + adds r0, r4, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 14 + ands r0, r1 + cmp r0, 0 + bne _08023E5C + ldr r0, _08023E24 @ =gDisableStructs + adds r0, 0x50 + ldrb r1, [r0] + lsrs r1, 4 + ldr r2, _08023E28 @ =gBitTable + lsls r0, r5, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _08023E5C + adds r4, 0xB0 + adds r0, r4, 0 + adds r1, r5, 0 + bl RemoveBattleMonPPBonus + ldr r0, _08023E18 @ =word_2024E82 + ldrh r1, [r0] + adds r0, r4, 0 + adds r2, r5, 0 + bl SetBattleMonMoveSlot + b _08023E5C + .align 2, 0 +_08023E10: .4byte gBattlescriptCurrInstr +_08023E14: .4byte gBattleTextBuff2 +_08023E18: .4byte word_2024E82 +_08023E1C: .4byte gBattlePartyID +_08023E20: .4byte gBattleMons +_08023E24: .4byte gDisableStructs +_08023E28: .4byte gBitTable +_08023E2C: .4byte gBattleTypeFlags +_08023E30: .4byte 0x02000000 +_08023E34: .4byte 0x00016018 +_08023E38: + bl sub_8023AD8 + ldr r1, _08023E48 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _08023E5C + .align 2, 0 +_08023E48: .4byte gBattlescriptCurrInstr +_08023E4C: + ldr r0, _08023E6C @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _08023E5C + ldr r2, _08023E70 @ =0x0001601a + adds r1, r5, r2 + movs r0, 0x2 +_08023E5A: + strb r0, [r1] +_08023E5C: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08023E6C: .4byte gBattleExecBuffer +_08023E70: .4byte 0x0001601a + thumb_func_end sub_8023AF8 + + thumb_func_start atk5B_80256E0 +atk5B_80256E0: @ 8023E74 + push {r4,r5,lr} + ldr r0, _08023E88 @ =0x02000000 + ldr r1, _08023E8C @ =0x0001601a + adds r5, r0, r1 + ldrb r4, [r5] + cmp r4, 0 + beq _08023E90 + cmp r4, 0x1 + beq _08023EA8 + b _08023F78 + .align 2, 0 +_08023E88: .4byte 0x02000000 +_08023E8C: .4byte 0x0001601a +_08023E90: + bl sub_8023A80 + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + ldr r0, _08023EA4 @ =gBattleCommunication + strb r4, [r0, 0x1] + bl sub_802BC6C + b _08023F78 + .align 2, 0 +_08023EA4: .4byte gBattleCommunication +_08023EA8: + ldr r0, _08023F2C @ =gMain + ldrh r1, [r0, 0x2E] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08023ECE + ldr r4, _08023F30 @ =gBattleCommunication + ldrb r0, [r4, 0x1] + cmp r0, 0 + beq _08023ECE + movs r0, 0x5 + bl PlaySE + bl nullsub_6 + movs r0, 0 + strb r0, [r4, 0x1] + bl sub_802BC6C +_08023ECE: + ldr r0, _08023F2C @ =gMain + ldrh r1, [r0, 0x2E] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08023EF4 + ldr r4, _08023F30 @ =gBattleCommunication + ldrb r0, [r4, 0x1] + cmp r0, 0 + bne _08023EF4 + movs r0, 0x5 + bl PlaySE + bl nullsub_6 + movs r0, 0x1 + strb r0, [r4, 0x1] + bl sub_802BC6C +_08023EF4: + ldr r0, _08023F2C @ =gMain + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08023F4C + movs r0, 0x5 + bl PlaySE + ldr r0, _08023F30 @ =gBattleCommunication + ldrb r0, [r0, 0x1] + cmp r0, 0 + beq _08023F38 + ldr r3, _08023F34 @ =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 _08023F40 + .align 2, 0 +_08023F2C: .4byte gMain +_08023F30: .4byte gBattleCommunication +_08023F34: .4byte gBattlescriptCurrInstr +_08023F38: + ldr r1, _08023F48 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_08023F40: + bl sub_8023AD8 + b _08023F78 + .align 2, 0 +_08023F48: .4byte gBattlescriptCurrInstr +_08023F4C: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08023F78 + movs r0, 0x5 + bl PlaySE + ldr r3, _08023F80 @ =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] + bl sub_8023AD8 +_08023F78: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08023F80: .4byte gBattlescriptCurrInstr + thumb_func_end atk5B_80256E0 + + thumb_func_start atk5C_cmd5c +atk5C_cmd5c: @ 8023F84 + push {r4,lr} + ldr r4, _08023FF0 @ =gBattlescriptCurrInstr + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r2, _08023FF4 @ =gActiveBank + strb r0, [r2] + ldr r0, _08023FF8 @ =gBattleMoveFlags + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + bne _08024008 + ldr r0, _08023FFC @ =gHitMarker + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 1 + ands r0, r1 + cmp r0, 0 + beq _08023FD6 + ldr r1, _08024000 @ =gBattleMons + ldrb r2, [r2] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 17 + ands r0, r1 + cmp r0, 0 + beq _08023FD6 + ldr r0, _08024004 @ =gDisableStructs + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0xA] + cmp r0, 0 + bne _08024008 +_08023FD6: + movs r0, 0 + bl EmitHitAnimation + ldr r0, _08023FF4 @ =gActiveBank + ldrb r0, [r0] + bl MarkBufferBankForExecution + ldr r1, _08023FF0 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] + b _0802400E + .align 2, 0 +_08023FF0: .4byte gBattlescriptCurrInstr +_08023FF4: .4byte gActiveBank +_08023FF8: .4byte gBattleMoveFlags +_08023FFC: .4byte gHitMarker +_08024000: .4byte gBattleMons +_08024004: .4byte gDisableStructs +_08024008: + ldr r0, [r4] + adds r0, 0x2 + str r0, [r4] +_0802400E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end atk5C_cmd5c + + thumb_func_start sub_8024014 +sub_8024014: @ 8024014 + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r6, 0 + movs r5, 0 + ldr r0, _08024048 @ =gTrainerBattleOpponent + ldrh r2, [r0] + movs r1, 0x80 + lsls r1, 3 + cmp r2, r1 + bne _08024058 + ldr r0, _0802404C @ =0x02017000 + adds r1, r0, 0 + adds r1, 0x94 + ldrb r2, [r1] + ldr r1, _08024050 @ =0xfffff056 + adds r0, r1 + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r4, r2, 0 + muls r4, r0 + ldr r0, _08024054 @ =gSaveBlock1 + 0x490 + mov r8, r0 + b _08024140 + .align 2, 0 +_08024048: .4byte gTrainerBattleOpponent +_0802404C: .4byte 0x02017000 +_08024050: .4byte 0xfffff056 +_08024054: .4byte gSaveBlock1 + 0x490 +_08024058: + ldr r2, _08024074 @ =gTrainers + ldrh r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r3, r0, 3 + adds r4, r3, r2 + ldrb r1, [r4] + cmp r1, 0x1 + beq _080240AE + cmp r1, 0x1 + bgt _08024078 + cmp r1, 0 + beq _08024082 + b _080240C4 + .align 2, 0 +_08024074: .4byte gTrainers +_08024078: + cmp r1, 0x2 + beq _08024098 + cmp r1, 0x3 + beq _080240AE + b _080240C4 +_08024082: + adds r0, r2, 0 + adds r0, 0x24 + adds r0, r3, r0 + ldr r1, [r0] + adds r0, r4, 0 + adds r0, 0x20 + ldrb r0, [r0] + lsls r0, 3 + adds r0, r1 + subs r0, 0x8 + b _080240C2 +_08024098: + adds r0, r2, 0 + adds r0, 0x24 + adds r0, r3, r0 + ldr r1, [r0] + adds r0, r4, 0 + adds r0, 0x20 + ldrb r0, [r0] + lsls r0, 3 + adds r0, r1 + subs r0, 0x8 + b _080240C2 +_080240AE: + adds r0, r2, 0 + adds r0, 0x24 + adds r0, r3, r0 + ldr r1, [r0] + adds r0, r4, 0 + adds r0, 0x20 + ldrb r0, [r0] + lsls r0, 4 + adds r0, r1 + subs r0, 0x10 +_080240C2: + ldrb r5, [r0, 0x2] +_080240C4: + ldr r0, _08024120 @ =gTrainerMoney + lsls r1, r6, 2 + adds r3, r1, r0 + ldrb r1, [r3] + mov r12, r0 + lsls r4, r5, 2 + ldr r5, _08024124 @ =0x02000000 + ldr r7, _08024128 @ =gBattleTypeFlags + ldr r0, _0802412C @ =gSaveBlock1 + 0x490 + mov r8, r0 + cmp r1, 0xFF + beq _080240FE + ldr r2, _08024130 @ =gTrainers + ldr r0, _08024134 @ =gTrainerBattleOpponent + ldrh r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrb r2, [r0, 0x1] + adds r1, r3, 0 +_080240EE: + ldrb r0, [r1] + cmp r0, r2 + beq _080240FE + adds r1, 0x4 + adds r6, 0x1 + ldrb r0, [r1] + cmp r0, 0xFF + bne _080240EE +_080240FE: + ldr r1, _08024138 @ =0x00016056 + adds r0, r5, r1 + ldrb r0, [r0] + adds r3, r4, 0 + muls r3, r0 + lsls r0, r6, 2 + add r0, r12 + ldrb r2, [r0, 0x1] + ldrh r1, [r7] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0802413C + lsls r0, r2, 1 + adds r4, r3, 0 + muls r4, r0 + b _08024140 + .align 2, 0 +_08024120: .4byte gTrainerMoney +_08024124: .4byte 0x02000000 +_08024128: .4byte gBattleTypeFlags +_0802412C: .4byte gSaveBlock1 + 0x490 +_08024130: .4byte gTrainers +_08024134: .4byte gTrainerBattleOpponent +_08024138: .4byte 0x00016056 +_0802413C: + adds r4, r3, 0 + muls r4, r2 +_08024140: + mov r0, r8 + adds r1, r4, 0 + bl sub_80B79B8 + ldr r1, _0802418C @ =gBattleTextBuff1 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x1 + strb r0, [r1, 0x1] + movs r0, 0x4 + strb r0, [r1, 0x2] + movs r0, 0x5 + strb r0, [r1, 0x3] + strb r4, [r1, 0x4] + movs r0, 0xFF + lsls r0, 8 + ands r0, r4 + lsrs r0, 8 + strb r0, [r1, 0x5] + movs r0, 0xFF + lsls r0, 16 + ands r0, r4 + lsrs r0, 16 + strb r0, [r1, 0x6] + lsrs r0, r4, 24 + strb r0, [r1, 0x7] + movs r0, 0xFF + strb r0, [r1, 0x8] + ldr r1, _08024190 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802418C: .4byte gBattleTextBuff1 +_08024190: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8024014 + + thumb_func_start atk5E_8025A70 +atk5E_8025A70: @ 8024194 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r4, _080241B8 @ =gBattlescriptCurrInstr + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r6, _080241BC @ =gActiveBank + strb r0, [r6] + ldr r5, _080241C0 @ =gBattleCommunication + ldrb r0, [r5] + mov r8, r4 + cmp r0, 0 + beq _080241C4 + cmp r0, 0x1 + beq _080241DC + b _08024230 + .align 2, 0 +_080241B8: .4byte gBattlescriptCurrInstr +_080241BC: .4byte gActiveBank +_080241C0: .4byte gBattleCommunication +_080241C4: + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl EmitGetAttributes + ldrb r0, [r6] + bl MarkBufferBankForExecution + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + b _08024230 +_080241DC: + ldr r0, _0802423C @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _08024230 + ldrb r0, [r6] + lsls r0, 9 + ldr r1, _08024240 @ =gUnknown_02024264 + adds r0, r1 + mov r12, r0 + movs r2, 0 + adds r4, r6, 0 + movs r5, 0x58 + ldr r6, _08024244 @ =gUnknown_02024AA4 + adds r7, r6, 0 + subs r7, 0x18 + mov r3, r12 + adds r3, 0xC +_080241FE: + lsls r1, r2, 1 + ldrb r0, [r4] + muls r0, r5 + adds r1, r0 + adds r1, r7 + ldrh r0, [r3] + strh r0, [r1] + ldrb r0, [r4] + adds r1, r0, 0 + muls r1, r5 + adds r1, r2, r1 + adds r1, r6 + mov r0, r12 + adds r0, 0x24 + adds r0, r2 + ldrb r0, [r0] + strb r0, [r1] + adds r3, 0x2 + adds r2, 0x1 + cmp r2, 0x3 + ble _080241FE + mov r1, r8 + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] +_08024230: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802423C: .4byte gBattleExecBuffer +_08024240: .4byte gUnknown_02024264 +_08024244: .4byte gUnknown_02024AA4 + thumb_func_end atk5E_8025A70 + + thumb_func_start atk5F_8025B24 +atk5F_8025B24: @ 8024248 + push {lr} + ldr r0, _08024270 @ =gActiveBank + ldr r2, _08024274 @ =gBankAttacker + ldrb r3, [r2] + strb r3, [r0] + ldr r1, _08024278 @ =gBankTarget + ldrb r0, [r1] + strb r0, [r2] + strb r3, [r1] + ldr r2, _0802427C @ =gHitMarker + ldr r1, [r2] + movs r3, 0x80 + lsls r3, 5 + adds r0, r1, 0 + ands r0, r3 + cmp r0, 0 + beq _08024284 + ldr r0, _08024280 @ =0xffffefff + ands r1, r0 + b _08024286 + .align 2, 0 +_08024270: .4byte gActiveBank +_08024274: .4byte gBankAttacker +_08024278: .4byte gBankTarget +_0802427C: .4byte gHitMarker +_08024280: .4byte 0xffffefff +_08024284: + orrs r1, r3 +_08024286: + str r1, [r2] + ldr r1, _08024294 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08024294: .4byte gBattlescriptCurrInstr + thumb_func_end atk5F_8025B24 + + thumb_func_start atk60_cmd60 +atk60_cmd60: @ 8024298 + push {lr} + ldr r0, _080242C0 @ =gBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080242B2 + ldr r0, _080242C4 @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r0, [r0, 0x1] + bl IncrementGameStat +_080242B2: + ldr r1, _080242C4 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080242C0: .4byte gBankAttacker +_080242C4: .4byte gBattlescriptCurrInstr + thumb_func_end atk60_cmd60 + + thumb_func_start atk61_8025BA4 +atk61_8025BA4: @ 80242C8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x30 + ldr r0, _0802432C @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _0802437C + ldr r0, _08024330 @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r1, _08024334 @ =gActiveBank + strb r0, [r1] + ldrb r0, [r1] + bl GetBankSide + lsls r0, 24 + ldr r1, _08024338 @ =gEnemyParty + mov r8, r1 + cmp r0, 0 + bne _080242FA + ldr r0, _0802433C @ =gPlayerParty + mov r8, r0 +_080242FA: + movs r7, 0 + add r6, sp, 0x4 + mov r5, sp +_08024300: + movs r0, 0x64 + muls r0, r7 + mov r1, r8 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x41 + bl GetMonData + cmp r0, 0 + beq _08024324 + adds r0, r4, 0 + movs r1, 0x41 + bl GetMonData + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + bne _08024344 +_08024324: + ldr r0, _08024340 @ =0x0000ffff + strh r0, [r5] + movs r0, 0 + b _08024356 + .align 2, 0 +_0802432C: .4byte gBattleExecBuffer +_08024330: .4byte gBattlescriptCurrInstr +_08024334: .4byte gActiveBank +_08024338: .4byte gEnemyParty +_0802433C: .4byte gPlayerParty +_08024340: .4byte 0x0000ffff +_08024344: + adds r0, r4, 0 + movs r1, 0x39 + bl GetMonData + strh r0, [r5] + adds r0, r4, 0 + movs r1, 0x37 + bl GetMonData +_08024356: + str r0, [r6] + adds r6, 0x8 + adds r5, 0x8 + adds r7, 0x1 + cmp r7, 0x5 + ble _08024300 + movs r0, 0 + mov r1, sp + movs r2, 0x1 + bl dp01_build_cmdbuf_x30_TODO + ldr r0, _08024388 @ =gActiveBank + ldrb r0, [r0] + bl MarkBufferBankForExecution + ldr r1, _0802438C @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] +_0802437C: + add sp, 0x30 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08024388: .4byte gActiveBank +_0802438C: .4byte gBattlescriptCurrInstr + thumb_func_end atk61_8025BA4 + + thumb_func_start atk62_08025C6C +atk62_08025C6C: @ 8024390 + push {r4,r5,lr} + ldr r5, _080243B8 @ =gBattlescriptCurrInstr + ldr r0, [r5] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r4, _080243BC @ =gActiveBank + strb r0, [r4] + movs r0, 0 + bl dp01_build_cmdbuf_x31_31_31_31 + ldrb r0, [r4] + bl MarkBufferBankForExecution + ldr r0, [r5] + adds r0, 0x2 + str r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080243B8: .4byte gBattlescriptCurrInstr +_080243BC: .4byte gActiveBank + thumb_func_end atk62_08025C6C + + thumb_func_start atk63_jumptoattack +atk63_jumptoattack: @ 80243C0 + push {r4,lr} + ldr r0, _080243D8 @ =gBattlescriptCurrInstr + ldr r1, [r0] + ldrb r1, [r1, 0x1] + adds r4, r0, 0 + cmp r1, 0 + beq _080243E4 + ldr r0, _080243DC @ =gCurrentMove + ldr r1, _080243E0 @ =gUnknown_02024BEA + ldrh r1, [r1] + strh r1, [r0] + b _080243F2 + .align 2, 0 +_080243D8: .4byte gBattlescriptCurrInstr +_080243DC: .4byte gCurrentMove +_080243E0: .4byte gUnknown_02024BEA +_080243E4: + ldr r2, _08024410 @ =gUnknown_02024BE8 + ldr r1, _08024414 @ =gCurrentMove + ldr r0, _08024418 @ =gUnknown_02024BEA + ldrh r0, [r0] + strh r0, [r1] + strh r0, [r2] + adds r0, r1, 0 +_080243F2: + ldr r3, _0802441C @ =gUnknown_081D6BBC + ldr r2, _08024420 @ =gBattleMoves + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r3 + ldr r0, [r0] + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08024410: .4byte gUnknown_02024BE8 +_08024414: .4byte gCurrentMove +_08024418: .4byte gUnknown_02024BEA +_0802441C: .4byte gUnknown_081D6BBC +_08024420: .4byte gBattleMoves + thumb_func_end atk63_jumptoattack + + thumb_func_start atk64_statusanimation +atk64_statusanimation: @ 8024424 + push {r4,lr} + ldr r0, _08024494 @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _0802448C + ldr r0, _08024498 @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r4, _0802449C @ =gActiveBank + strb r0, [r4] + ldr r1, _080244A0 @ =gStatuses3 + ldrb r2, [r4] + lsls r0, r2, 2 + adds r0, r1 + ldr r0, [r0] + ldr r1, _080244A4 @ =0x000400c0 + ands r0, r1 + cmp r0, 0 + bne _08024484 + ldr r0, _080244A8 @ =gDisableStructs + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0xA] + cmp r0, 0 + bne _08024484 + ldr r0, _080244AC @ =gHitMarker + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08024484 + ldr r1, _080244B0 @ =gBattleMons + movs r0, 0x58 + muls r0, r2 + adds r1, 0x4C + adds r0, r1 + ldr r2, [r0] + movs r0, 0 + movs r1, 0 + bl EmitStatusAnimation + ldrb r0, [r4] + bl MarkBufferBankForExecution +_08024484: + ldr r1, _08024498 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] +_0802448C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08024494: .4byte gBattleExecBuffer +_08024498: .4byte gBattlescriptCurrInstr +_0802449C: .4byte gActiveBank +_080244A0: .4byte gStatuses3 +_080244A4: .4byte 0x000400c0 +_080244A8: .4byte gDisableStructs +_080244AC: .4byte gHitMarker +_080244B0: .4byte gBattleMons + thumb_func_end atk64_statusanimation + + thumb_func_start atk65_8025D90 +atk65_8025D90: @ 80244B4 + push {r4,r5,lr} + ldr r0, _0802453C @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _08024534 + ldr r4, _08024540 @ =gBattlescriptCurrInstr + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r5, _08024544 @ =gActiveBank + strb r0, [r5] + ldr r1, [r4] + ldrb r3, [r1, 0x2] + ldrb r0, [r1, 0x3] + lsls r0, 8 + orrs r3, r0 + ldrb r0, [r1, 0x4] + lsls r0, 16 + orrs r3, r0 + ldrb r0, [r1, 0x5] + lsls r0, 24 + orrs r3, r0 + ldr r1, _08024548 @ =gStatuses3 + ldrb r2, [r5] + lsls r0, r2, 2 + adds r0, r1 + ldr r0, [r0] + ldr r1, _0802454C @ =0x000400c0 + ands r0, r1 + cmp r0, 0 + bne _0802452C + ldr r0, _08024550 @ =gDisableStructs + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0xA] + cmp r0, 0 + bne _0802452C + ldr r0, _08024554 @ =gHitMarker + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0802452C + ldr r1, _08024558 @ =gBattleMons + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r2, [r0] + ands r2, r3 + movs r0, 0 + movs r1, 0x1 + bl EmitStatusAnimation + ldrb r0, [r5] + bl MarkBufferBankForExecution +_0802452C: + ldr r1, _08024540 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x6 + str r0, [r1] +_08024534: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0802453C: .4byte gBattleExecBuffer +_08024540: .4byte gBattlescriptCurrInstr +_08024544: .4byte gActiveBank +_08024548: .4byte gStatuses3 +_0802454C: .4byte 0x000400c0 +_08024550: .4byte gDisableStructs +_08024554: .4byte gHitMarker +_08024558: .4byte gBattleMons + thumb_func_end atk65_8025D90 + + thumb_func_start atk66_8025E38 +atk66_8025E38: @ 802455C + push {r4,r5,lr} + ldr r0, _080245D4 @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _080245CE + ldr r4, _080245D8 @ =gBattlescriptCurrInstr + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r5, _080245DC @ =gActiveBank + strb r0, [r5] + ldr r4, [r4] + ldrb r2, [r4, 0x3] + ldrb r0, [r4, 0x4] + lsls r0, 8 + orrs r2, r0 + ldrb r0, [r4, 0x5] + lsls r0, 16 + orrs r2, r0 + ldrb r0, [r4, 0x6] + lsls r0, 24 + orrs r2, r0 + ldr r1, _080245E0 @ =gStatuses3 + ldrb r3, [r5] + lsls r0, r3, 2 + adds r0, r1 + ldr r0, [r0] + ldr r1, _080245E4 @ =0x000400c0 + ands r0, r1 + cmp r0, 0 + bne _080245C6 + ldr r0, _080245E8 @ =gDisableStructs + lsls r1, r3, 3 + subs r1, r3 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1, 0xA] + cmp r0, 0 + bne _080245C6 + ldr r0, _080245EC @ =gHitMarker + ldr r0, [r0] + movs r1, 0x80 + ands r0, r1 + cmp r0, 0 + bne _080245C6 + ldrb r1, [r4, 0x2] + movs r0, 0 + bl EmitStatusAnimation + ldrb r0, [r5] + bl MarkBufferBankForExecution +_080245C6: + ldr r1, _080245D8 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x7 + str r0, [r1] +_080245CE: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080245D4: .4byte gBattleExecBuffer +_080245D8: .4byte gBattlescriptCurrInstr +_080245DC: .4byte gActiveBank +_080245E0: .4byte gStatuses3 +_080245E4: .4byte 0x000400c0 +_080245E8: .4byte gDisableStructs +_080245EC: .4byte gHitMarker + thumb_func_end atk66_8025E38 + + thumb_func_start atk67_8025ECC +atk67_8025ECC: @ 80245F0 + push {r4,r5,lr} + ldr r5, _08024600 @ =gBattleCommunication + ldrb r4, [r5] + cmp r4, 0 + beq _08024604 + cmp r4, 0x1 + beq _08024616 + b _08024696 + .align 2, 0 +_08024600: .4byte gBattleCommunication +_08024604: + bl sub_8023A80 + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + strb r4, [r5, 0x1] + bl sub_802BC6C + b _08024696 +_08024616: + ldr r0, _08024674 @ =gMain + ldrh r1, [r0, 0x2E] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0802463A + ldrb r0, [r5, 0x1] + cmp r0, 0 + beq _0802463A + movs r0, 0x5 + bl PlaySE + bl nullsub_6 + movs r0, 0 + strb r0, [r5, 0x1] + bl sub_802BC6C +_0802463A: + ldr r0, _08024674 @ =gMain + ldrh r1, [r0, 0x2E] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08024660 + ldr r4, _08024678 @ =gBattleCommunication + ldrb r0, [r4, 0x1] + cmp r0, 0 + bne _08024660 + movs r0, 0x5 + bl PlaySE + bl nullsub_6 + movs r0, 0x1 + strb r0, [r4, 0x1] + bl sub_802BC6C +_08024660: + ldr r0, _08024674 @ =gMain + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0802467C + ldr r1, _08024678 @ =gBattleCommunication + movs r0, 0x1 + strb r0, [r1, 0x1] + b _08024684 + .align 2, 0 +_08024674: .4byte gMain +_08024678: .4byte gBattleCommunication +_0802467C: + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08024696 +_08024684: + movs r0, 0x5 + bl PlaySE + bl sub_8023AD8 + ldr r1, _0802469C @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_08024696: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0802469C: .4byte gBattlescriptCurrInstr + thumb_func_end atk67_8025ECC + + thumb_func_start sub_80246A0 +sub_80246A0: @ 80246A0 + push {r4,r5,lr} + movs r1, 0 + ldr r2, _080246CC @ =gNoOfAllBanks + ldr r5, _080246D0 @ =gBattlescriptCurrInstr + ldrb r0, [r2] + cmp r1, r0 + bge _080246BE + ldr r4, _080246D4 @ =gUnknown_02024A76 + movs r3, 0xC +_080246B2: + adds r0, r1, r4 + strb r3, [r0] + adds r1, 0x1 + ldrb r0, [r2] + cmp r1, r0 + blt _080246B2 +_080246BE: + ldr r0, [r5] + adds r0, 0x1 + str r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080246CC: .4byte gNoOfAllBanks +_080246D0: .4byte gBattlescriptCurrInstr +_080246D4: .4byte gUnknown_02024A76 + thumb_func_end sub_80246A0 + + thumb_func_start atk69_8025FE0 +atk69_8025FE0: @ 80246D8 + push {r4-r7,lr} + ldr r7, _08024700 @ =gBattleMons + ldr r6, _08024704 @ =gBankTarget + ldrb r2, [r6] + movs r5, 0x58 + adds r0, r2, 0 + muls r0, r5 + adds r1, r0, r7 + ldrh r0, [r1, 0x2E] + cmp r0, 0xAF + bne _0802470C + ldr r1, _08024708 @ =gEnigmaBerries + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r4, [r0, 0x7] + ldrb r6, [r0, 0x1A] + b _08024726 + .align 2, 0 +_08024700: .4byte gBattleMons +_08024704: .4byte gBankTarget +_08024708: .4byte gEnigmaBerries +_0802470C: + ldrh r0, [r1, 0x2E] + bl ItemId_GetHoldEffect + lsls r0, 24 + lsrs r4, r0, 24 + ldrb r0, [r6] + muls r0, r5 + adds r0, r7 + ldrh r0, [r0, 0x2E] + bl ItemId_GetHoldEffectParam + lsls r0, 24 + lsrs r6, r0, 24 +_08024726: + ldr r1, _080247E8 @ =gStringBank + ldr r5, _080247EC @ =gBankTarget + ldrb r0, [r5] + strb r0, [r1] + cmp r4, 0x27 + bne _08024764 + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r6 + bcs _08024764 + ldrb r0, [r5] + movs r1, 0x27 + bl sub_81074F8 + ldr r2, _080247F0 @ =gSpecialStatuses + ldrb r1, [r5] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strb r1, [r0] +_08024764: + ldr r2, _080247F4 @ =gBattleMons + ldr r3, _080247EC @ =gBankTarget + ldrb r4, [r3] + movs r0, 0x58 + muls r0, r4 + adds r1, r2, 0 + adds r1, 0x50 + adds r0, r1 + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 17 + ands r1, r0 + adds r5, r2, 0 + cmp r1, 0 + bne _08024834 + ldr r2, _080247F8 @ =gBattleMoves + ldr r0, _080247FC @ =gCurrentMove + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0x65 + beq _080247B6 + ldr r0, _08024800 @ =gProtectStructs + lsls r1, r4, 4 + adds r1, r0 + ldrb r0, [r1] + lsls r0, 30 + cmp r0, 0 + blt _080247B6 + ldr r0, _080247F0 @ =gSpecialStatuses + lsls r1, r4, 2 + adds r1, r4 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1] + lsrs r0, 7 + cmp r0, 0 + beq _08024834 +_080247B6: + ldrb r0, [r3] + movs r4, 0x58 + muls r0, r4 + adds r0, r5 + ldrh r1, [r0, 0x28] + ldr r2, _08024804 @ =gBattleMoveDamage + ldr r0, [r2] + cmp r1, r0 + bgt _08024834 + subs r0, r1, 0x1 + str r0, [r2] + ldr r1, _08024800 @ =gProtectStructs + ldrb r3, [r3] + lsls r0, r3, 4 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 30 + cmp r0, 0 + bge _0802480C + ldr r0, _08024808 @ =gBattleMoveFlags + ldrb r1, [r0] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r0] + b _08024834 + .align 2, 0 +_080247E8: .4byte gStringBank +_080247EC: .4byte gBankTarget +_080247F0: .4byte gSpecialStatuses +_080247F4: .4byte gBattleMons +_080247F8: .4byte gBattleMoves +_080247FC: .4byte gCurrentMove +_08024800: .4byte gProtectStructs +_08024804: .4byte gBattleMoveDamage +_08024808: .4byte gBattleMoveFlags +_0802480C: + ldr r0, _08024844 @ =gSpecialStatuses + lsls r1, r3, 2 + adds r1, r3 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1] + lsrs r0, 7 + cmp r0, 0 + beq _08024834 + ldr r2, _08024848 @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0802484C @ =gLastUsedItem + adds r0, r3, 0 + muls r0, r4 + adds r0, r5 + ldrh r0, [r0, 0x2E] + strh r0, [r1] +_08024834: + ldr r1, _08024850 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08024844: .4byte gSpecialStatuses +_08024848: .4byte gBattleMoveFlags +_0802484C: .4byte gLastUsedItem +_08024850: .4byte gBattlescriptCurrInstr + thumb_func_end atk69_8025FE0 + + thumb_func_start atk6A_stash_item_for_side +atk6A_stash_item_for_side: @ 8024854 + push {r4-r6,lr} + sub sp, 0x4 + ldr r6, _080248B0 @ =gBattlescriptCurrInstr + ldr r0, [r6] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r5, _080248B4 @ =gActiveBank + strb r0, [r5] + ldrb r4, [r5] + lsls r1, r4, 1 + ldr r0, _080248B8 @ =0x020160cc + adds r1, r0 + ldr r2, _080248BC @ =gBattleMons + movs r3, 0x58 + adds r0, r4, 0 + muls r0, r3 + adds r0, r2 + ldrh r0, [r0, 0x2E] + strh r0, [r1] + ldrb r0, [r5] + muls r0, r3 + adds r0, r2 + movs r1, 0 + strh r1, [r0, 0x2E] + ldrb r0, [r5] + muls r0, r3 + adds r2, 0x2E + adds r0, r2 + str r0, [sp] + movs r0, 0 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl EmitSetAttributes + ldrb r0, [r5] + bl MarkBufferBankForExecution + ldr r0, [r6] + adds r0, 0x2 + str r0, [r6] + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080248B0: .4byte gBattlescriptCurrInstr +_080248B4: .4byte gActiveBank +_080248B8: .4byte 0x020160cc +_080248BC: .4byte gBattleMons + thumb_func_end atk6A_stash_item_for_side + + thumb_func_start sub_80248C0 +sub_80248C0: @ 80248C0 + ldr r1, _080248EC @ =gBattleTextBuff1 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x7 + strb r0, [r1, 0x1] + ldr r2, _080248F0 @ =gBankAttacker + ldrb r0, [r2] + strb r0, [r1, 0x2] + ldr r3, _080248F4 @ =gBattlePartyID + ldrb r0, [r2] + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r1, _080248F8 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + bx lr + .align 2, 0 +_080248EC: .4byte gBattleTextBuff1 +_080248F0: .4byte gBankAttacker +_080248F4: .4byte gBattlePartyID +_080248F8: .4byte gBattlescriptCurrInstr + thumb_func_end sub_80248C0 + + thumb_func_start sub_80248FC +sub_80248FC: @ 80248FC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + movs r1, 0 + movs r7, 0 + ldr r0, _08024928 @ =0x02000000 + mov r10, r0 + ldr r4, _0802492C @ =0x0001609c + add r4, r10 + ldrb r0, [r4] + cmp r0, 0x1 + bne _0802491C + b _08024AF4 +_0802491C: + cmp r0, 0x1 + bgt _08024930 + cmp r0, 0 + beq _0802493E + b _08024C38 + .align 2, 0 +_08024928: .4byte 0x02000000 +_0802492C: .4byte 0x0001609c +_08024930: + cmp r0, 0x2 + bne _08024936 + b _08024C04 +_08024936: + cmp r0, 0x3 + bne _0802493C + b _08024C30 +_0802493C: + b _08024C38 +_0802493E: + str r1, [sp] + movs r0, 0xB + movs r1, 0 + movs r2, 0x1D + movs r3, 0x7 + bl sub_802BBD4 + ldr r0, _0802499C @ =gStringVar4 + ldr r1, _080249A0 @ =gUnknown_08400D9F + bl StringCopy + adds r5, r0, 0 + movs r1, 0 + mov r8, r1 +_0802495A: + movs r2, 0 + mov r9, r2 + ldr r0, _080249A4 @ =gUnknown_0840165C + mov r1, r8 + lsls r4, r1, 2 + adds r0, r4, r0 + ldr r1, [r0] + adds r0, r5, 0 + bl StringAppend + adds r5, r0, 0 + ldr r0, _080249A8 @ =0x02000000 + ldr r2, _080249AC @ =0x00016018 + adds r0, r2 + ldrb r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _080249B0 @ =gPlayerParty + adds r0, r1 + ldr r1, _080249B4 @ =gLevelUpStatBoxStats + add r1, r8 + ldrb r1, [r1] + bl GetMonData + lsls r0, 16 + lsrs r1, r0, 16 + mov r0, r8 + cmp r0, 0x5 + bhi _08024A1A + ldr r0, _080249B8 @ =_080249BC + adds r0, r4, r0 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802499C: .4byte gStringVar4 +_080249A0: .4byte gUnknown_08400D9F +_080249A4: .4byte gUnknown_0840165C +_080249A8: .4byte 0x02000000 +_080249AC: .4byte 0x00016018 +_080249B0: .4byte gPlayerParty +_080249B4: .4byte gLevelUpStatBoxStats +_080249B8: .4byte _080249BC + .align 2, 0 +_080249BC: + .4byte _080249D4 + .4byte _080249E0 + .4byte _080249EC + .4byte _080249F8 + .4byte _08024A04 + .4byte _08024A10 +_080249D4: + ldr r0, _080249DC @ =0x02017180 + ldrh r0, [r0] + b _08024A14 + .align 2, 0 +_080249DC: .4byte 0x02017180 +_080249E0: + ldr r0, _080249E8 @ =0x02017180 + ldrh r0, [r0, 0x8] + b _08024A14 + .align 2, 0 +_080249E8: .4byte 0x02017180 +_080249EC: + ldr r0, _080249F4 @ =0x02017180 + ldrh r0, [r0, 0x2] + b _08024A14 + .align 2, 0 +_080249F4: .4byte 0x02017180 +_080249F8: + ldr r0, _08024A00 @ =0x02017180 + ldrh r0, [r0, 0xA] + b _08024A14 + .align 2, 0 +_08024A00: .4byte 0x02017180 +_08024A04: + ldr r0, _08024A0C @ =0x02017180 + ldrh r0, [r0, 0x4] + b _08024A14 + .align 2, 0 +_08024A0C: .4byte 0x02017180 +_08024A10: + ldr r0, _08024A54 @ =0x02017180 + ldrh r0, [r0, 0x6] +_08024A14: + subs r0, r1, r0 + lsls r0, 16 + lsrs r7, r0, 16 +_08024A1A: + lsls r0, r7, 16 + asrs r0, 16 + cmp r0, 0 + bge _08024A2C + negs r0, r0 + lsls r0, 16 + lsrs r7, r0, 16 + movs r1, 0x1 + add r9, r1 +_08024A2C: + movs r0, 0xFC + strb r0, [r5] + movs r0, 0x13 + strb r0, [r5, 0x1] + movs r1, 0x1 + mov r2, r8 + ands r1, r2 + lsls r0, r1, 3 + adds r0, r1 + adds r0, 0x5 + lsls r0, 3 + adds r0, 0x6 + strb r0, [r5, 0x2] + adds r5, 0x3 + mov r0, r9 + cmp r0, 0 + beq _08024A5C + ldr r1, _08024A58 @ =gUnknown_08400DAC + b _08024A5E + .align 2, 0 +_08024A54: .4byte 0x02017180 +_08024A58: .4byte gUnknown_08400DAC +_08024A5C: + ldr r1, _08024AA4 @ =gUnknown_08400DAA +_08024A5E: + adds r0, r5, 0 + bl StringCopy + adds r5, r0, 0 + movs r6, 0xFC + strb r6, [r5] + movs r4, 0x14 + strb r4, [r5, 0x1] + movs r0, 0x6 + strb r0, [r5, 0x2] + adds r5, 0x3 + lsls r1, r7, 16 + asrs r1, 16 + adds r0, r5, 0 + movs r2, 0x1 + movs r3, 0x2 + bl ConvertIntToDecimalStringN + adds r5, r0, 0 + strb r6, [r5] + strb r4, [r5, 0x1] + movs r0, 0 + strb r0, [r5, 0x2] + adds r5, 0x3 + movs r0, 0x1 + mov r1, r8 + ands r0, r1 + cmp r0, 0 + beq _08024AA8 + movs r0, 0xFE + strb r0, [r5] + movs r0, 0xFF + strb r0, [r5, 0x1] + adds r5, 0x1 + b _08024AB8 + .align 2, 0 +_08024AA4: .4byte gUnknown_08400DAA +_08024AA8: + strb r6, [r5] + movs r0, 0x11 + strb r0, [r5, 0x1] + movs r0, 0x8 + strb r0, [r5, 0x2] + adds r5, 0x3 + movs r0, 0xFF + strb r0, [r5] +_08024AB8: + movs r2, 0x1 + add r8, r2 + mov r0, r8 + cmp r0, 0x5 + bgt _08024AC4 + b _0802495A +_08024AC4: + ldr r4, _08024AE4 @ =gUnknown_03004210 + ldr r1, _08024AE8 @ =gStringVar4 + adds r2, 0xFF + movs r0, 0x1 + str r0, [sp] + adds r0, r4, 0 + movs r3, 0xC + bl InitWindow + adds r0, r4, 0 + bl sub_8002F44 + ldr r1, _08024AEC @ =0x02000000 + ldr r2, _08024AF0 @ =0x0001609c + adds r1, r2 + b _08024BEA + .align 2, 0 +_08024AE4: .4byte gUnknown_03004210 +_08024AE8: .4byte gStringVar4 +_08024AEC: .4byte 0x02000000 +_08024AF0: .4byte 0x0001609c +_08024AF4: + ldr r0, _08024B94 @ =gMain + ldrh r0, [r0, 0x2E] + cmp r0, 0 + bne _08024AFE + b _08024C38 +_08024AFE: + movs r0, 0x5 + bl PlaySE + ldr r0, _08024B98 @ =gStringVar4 + ldr r1, _08024B9C @ =gUnknown_08400D9F + bl StringCopy + adds r5, r0, 0 + movs r0, 0 + mov r8, r0 + mov r9, r0 + movs r6, 0xFC + movs r7, 0x14 + ldr r1, _08024BA0 @ =0x00016018 + add r10, r1 +_08024B1C: + ldr r1, _08024BA4 @ =gUnknown_0840165C + mov r2, r8 + lsls r0, r2, 2 + adds r0, r1 + ldr r1, [r0] + adds r0, r5, 0 + bl StringAppend + adds r5, r0, 0 + mov r0, r10 + ldrb r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _08024BA8 @ =gPlayerParty + adds r0, r1 + ldr r1, _08024BAC @ =gLevelUpStatBoxStats + add r1, r8 + ldrb r1, [r1] + bl GetMonData + adds r1, r0, 0 + strb r6, [r5] + movs r0, 0x13 + strb r0, [r5, 0x1] + movs r4, 0x1 + mov r2, r8 + ands r4, r2 + lsls r0, r4, 3 + adds r0, r4 + adds r0, 0x5 + lsls r0, 3 + adds r0, 0x6 + strb r0, [r5, 0x2] + adds r5, 0x3 + strb r6, [r5] + strb r7, [r5, 0x1] + movs r0, 0x6 + strb r0, [r5, 0x2] + adds r5, 0x3 + lsls r1, 16 + asrs r1, 16 + adds r0, r5, 0 + movs r2, 0x1 + movs r3, 0x3 + bl ConvertIntToDecimalStringN + adds r5, r0, 0 + strb r6, [r5] + strb r7, [r5, 0x1] + mov r0, r9 + strb r0, [r5, 0x2] + adds r5, 0x3 + cmp r4, 0 + beq _08024BB0 + movs r0, 0xFE + strb r0, [r5] + movs r0, 0xFF + strb r0, [r5, 0x1] + adds r5, 0x1 + b _08024BC0 + .align 2, 0 +_08024B94: .4byte gMain +_08024B98: .4byte gStringVar4 +_08024B9C: .4byte gUnknown_08400D9F +_08024BA0: .4byte 0x00016018 +_08024BA4: .4byte gUnknown_0840165C +_08024BA8: .4byte gPlayerParty +_08024BAC: .4byte gLevelUpStatBoxStats +_08024BB0: + strb r6, [r5] + movs r0, 0x11 + strb r0, [r5, 0x1] + movs r0, 0x8 + strb r0, [r5, 0x2] + adds r5, 0x3 + movs r0, 0xFF + strb r0, [r5] +_08024BC0: + movs r1, 0x1 + add r8, r1 + mov r2, r8 + cmp r2, 0x5 + ble _08024B1C + ldr r4, _08024BF4 @ =gUnknown_03004210 + ldr r1, _08024BF8 @ =gStringVar4 + movs r2, 0x80 + lsls r2, 1 + movs r0, 0x1 + str r0, [sp] + adds r0, r4, 0 + movs r3, 0xC + bl InitWindow + adds r0, r4, 0 + bl sub_8002F44 + ldr r1, _08024BFC @ =0x02000000 + ldr r0, _08024C00 @ =0x0001609c + adds r1, r0 +_08024BEA: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _08024C38 + .align 2, 0 +_08024BF4: .4byte gUnknown_03004210 +_08024BF8: .4byte gStringVar4 +_08024BFC: .4byte 0x02000000 +_08024C00: .4byte 0x0001609c +_08024C04: + ldr r0, _08024C2C @ =gMain + ldrh r0, [r0, 0x2E] + cmp r0, 0 + beq _08024C38 + movs r0, 0x5 + bl PlaySE + movs r0, 0x1 + str r0, [sp] + movs r0, 0xB + movs r1, 0 + movs r2, 0x1D + movs r3, 0x7 + bl sub_802BBD4 + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _08024C38 + .align 2, 0 +_08024C2C: .4byte gMain +_08024C30: + ldr r1, _08024C48 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_08024C38: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08024C48: .4byte gBattlescriptCurrInstr + thumb_func_end sub_80248FC + + thumb_func_start sub_8024C4C +sub_8024C4C: @ 8024C4C + push {lr} + bl sub_80156DC + ldr r1, _08024C60 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08024C60: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8024C4C + + thumb_func_start atk6E_state0_side_becomes_attacker +atk6E_state0_side_becomes_attacker: @ 8024C64 + push {lr} + movs r0, 0 + bl GetBankByPlayerAI + ldr r1, _08024C7C @ =gBankAttacker + strb r0, [r1] + ldr r1, _08024C80 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08024C7C: .4byte gBankAttacker +_08024C80: .4byte gBattlescriptCurrInstr + thumb_func_end atk6E_state0_side_becomes_attacker + + thumb_func_start atk6F_8026810 +atk6F_8026810: @ 8024C84 + push {r4,r5,lr} + ldr r5, _08024CB0 @ =gBattlescriptCurrInstr + ldr r0, [r5] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r4, _08024CB4 @ =gActiveBank + strb r0, [r4] + movs r0, 0 + movs r1, 0 + bl EmitSpriteInvisibility + ldrb r0, [r4] + bl MarkBufferBankForExecution + ldr r0, [r5] + adds r0, 0x2 + str r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08024CB0: .4byte gBattlescriptCurrInstr +_08024CB4: .4byte gActiveBank + thumb_func_end atk6F_8026810 + + thumb_func_start atk70_record_ability_usage_of_side +atk70_record_ability_usage_of_side: @ 8024CB8 + push {r4,lr} + ldr r4, _08024CE0 @ =gBattlescriptCurrInstr + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r1, _08024CE4 @ =gActiveBank + strb r0, [r1] + ldrb r0, [r1] + ldr r1, _08024CE8 @ =gLastUsedAbility + ldrb r1, [r1] + bl sub_81074C4 + ldr r0, [r4] + adds r0, 0x1 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08024CE0: .4byte gBattlescriptCurrInstr +_08024CE4: .4byte gActiveBank +_08024CE8: .4byte gLastUsedAbility + thumb_func_end atk70_record_ability_usage_of_side + + thumb_func_start sub_8024CEC +sub_8024CEC: @ 8024CEC + ldr r2, _08024D0C @ =gBattleTextBuff2 + movs r0, 0xFD + strb r0, [r2] + movs r0, 0x2 + strb r0, [r2, 0x1] + ldr r0, _08024D10 @ =word_2024E82 + ldrh r1, [r0] + strb r1, [r2, 0x2] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + lsrs r0, 8 + strb r0, [r2, 0x3] + movs r0, 0xFF + strb r0, [r2, 0x4] + bx lr + .align 2, 0 +_08024D0C: .4byte gBattleTextBuff2 +_08024D10: .4byte word_2024E82 + thumb_func_end sub_8024CEC + + thumb_func_start atk71_80268A0 +atk71_80268A0: @ 8024D14 + push {lr} + bl sub_8024CEC + ldr r1, _08024D28 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08024D28: .4byte gBattlescriptCurrInstr + thumb_func_end atk71_80268A0 + + thumb_func_start atk72_flee +atk72_flee: @ 8024D2C + push {lr} + ldr r0, _08024D58 @ =gBank1 + ldrb r0, [r0] + bl sub_8014AB8 + lsls r0, 24 + cmp r0, 0 + beq _08024D60 + ldr r3, _08024D5C @ =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 _08024D68 + .align 2, 0 +_08024D58: .4byte gBank1 +_08024D5C: .4byte gBattlescriptCurrInstr +_08024D60: + ldr r1, _08024D6C @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_08024D68: + pop {r0} + bx r0 + .align 2, 0 +_08024D6C: .4byte gBattlescriptCurrInstr + thumb_func_end atk72_flee + + thumb_func_start atk73_cmd73 +atk73_cmd73: @ 8024D70 + push {r4,r5,lr} + ldr r0, _08024DC0 @ =gBattleTypeFlags + ldrh r0, [r0] + movs r5, 0x1 + ands r5, r0 + cmp r5, 0 + bne _08024E12 + ldr r0, _08024DC4 @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r1, _08024DC8 @ =gActiveBank + strb r0, [r1] + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08024DCC @ =gBattleMons + movs r1, 0x58 + muls r1, r0 + adds r1, r2 + ldrh r4, [r1, 0x28] + movs r0, 0x64 + muls r0, r4 + ldrh r1, [r1, 0x2C] + bl __divsi3 + cmp r0, 0 + bne _08024DAE + movs r0, 0x1 +_08024DAE: + cmp r0, 0x45 + bgt _08024DB6 + cmp r4, 0 + bne _08024DD8 +_08024DB6: + ldr r0, _08024DD0 @ =0x02000000 + ldr r1, _08024DD4 @ =0x000160c1 + adds r0, r1 + strb r5, [r0] + b _08024E12 + .align 2, 0 +_08024DC0: .4byte gBattleTypeFlags +_08024DC4: .4byte gBattlescriptCurrInstr +_08024DC8: .4byte gActiveBank +_08024DCC: .4byte gBattleMons +_08024DD0: .4byte 0x02000000 +_08024DD4: .4byte 0x000160c1 +_08024DD8: + cmp r0, 0x27 + ble _08024DF0 + ldr r0, _08024DE8 @ =0x02000000 + ldr r1, _08024DEC @ =0x000160c1 + adds r0, r1 + movs r1, 0x1 + b _08024E10 + .align 2, 0 +_08024DE8: .4byte 0x02000000 +_08024DEC: .4byte 0x000160c1 +_08024DF0: + cmp r0, 0x9 + ble _08024E08 + ldr r0, _08024E00 @ =0x02000000 + ldr r1, _08024E04 @ =0x000160c1 + adds r0, r1 + movs r1, 0x2 + b _08024E10 + .align 2, 0 +_08024E00: .4byte 0x02000000 +_08024E04: .4byte 0x000160c1 +_08024E08: + ldr r0, _08024E20 @ =0x02000000 + ldr r1, _08024E24 @ =0x000160c1 + adds r0, r1 + movs r1, 0x3 +_08024E10: + strb r1, [r0] +_08024E12: + ldr r1, _08024E28 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08024E20: .4byte 0x02000000 +_08024E24: .4byte 0x000160c1 +_08024E28: .4byte gBattlescriptCurrInstr + thumb_func_end atk73_cmd73 + + thumb_func_start atk74_hp_tresholds_2 +atk74_hp_tresholds_2: @ 8024E2C + push {r4-r7,lr} + ldr r0, _08024E8C @ =gBattleTypeFlags + ldrh r0, [r0] + movs r7, 0x1 + ands r7, r0 + cmp r7, 0 + bne _08024ED0 + ldr r0, _08024E90 @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r0, [r0, 0x1] + bl sub_8015150 + adds r4, r0, 0 + ldr r0, _08024E94 @ =gActiveBank + strb r4, [r0] + movs r0, 0x1 + eors r4, r0 + lsls r4, 24 + lsrs r4, 24 + ldr r6, _08024E98 @ =0x02000000 + adds r0, r4, 0 + bl GetBankSide + lsls r0, 24 + lsrs r0, 23 + ldr r1, _08024E9C @ =0x000160bc + adds r0, r1 + adds r0, r6 + ldrb r5, [r0] + ldr r1, _08024EA0 @ =gBattleMons + movs r0, 0x58 + muls r0, r4 + adds r0, r1 + ldrh r4, [r0, 0x28] + subs r1, r5, r4 + movs r0, 0x64 + muls r0, r1 + adds r1, r5, 0 + bl __divsi3 + adds r1, r0, 0 + cmp r4, r5 + bcc _08024EA8 + ldr r1, _08024EA4 @ =0x000160c1 + adds r0, r6, r1 + strb r7, [r0] + b _08024ED0 + .align 2, 0 +_08024E8C: .4byte gBattleTypeFlags +_08024E90: .4byte gBattlescriptCurrInstr +_08024E94: .4byte gActiveBank +_08024E98: .4byte 0x02000000 +_08024E9C: .4byte 0x000160bc +_08024EA0: .4byte gBattleMons +_08024EA4: .4byte 0x000160c1 +_08024EA8: + cmp r0, 0x1D + bgt _08024EB8 + ldr r0, _08024EB4 @ =0x000160c1 + adds r1, r6, r0 + movs r0, 0x1 + b _08024ECE + .align 2, 0 +_08024EB4: .4byte 0x000160c1 +_08024EB8: + cmp r1, 0x45 + bgt _08024EC8 + ldr r0, _08024EC4 @ =0x000160c1 + adds r1, r6, r0 + movs r0, 0x2 + b _08024ECE + .align 2, 0 +_08024EC4: .4byte 0x000160c1 +_08024EC8: + ldr r0, _08024EE0 @ =0x000160c1 + adds r1, r6, r0 + movs r0, 0x3 +_08024ECE: + strb r0, [r1] +_08024ED0: + ldr r1, _08024EE4 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08024EE0: .4byte 0x000160c1 +_08024EE4: .4byte gBattlescriptCurrInstr + thumb_func_end atk74_hp_tresholds_2 + + thumb_func_start atk75_8026A58 +atk75_8026A58: @ 8024EE8 + push {lr} + sub sp, 0x4 + ldr r2, _08024F28 @ =gBankInMenu + ldr r1, _08024F2C @ =gBankAttacker + ldrb r0, [r1] + strb r0, [r2] + ldr r2, _08024F30 @ =gBattlePartyID + ldrb r0, [r1] + lsls r0, 1 + adds r0, r2 + ldrh r2, [r0] + movs r0, 0x64 + muls r0, r2 + ldr r1, _08024F34 @ =gEnemyParty + adds r0, r1 + ldr r1, _08024F38 @ =gLastUsedItem + ldrh r1, [r1] + lsls r2, 24 + lsrs r2, 24 + movs r3, 0x1 + str r3, [sp] + movs r3, 0 + bl sub_803E1B0 + ldr r1, _08024F3C @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_08024F28: .4byte gBankInMenu +_08024F2C: .4byte gBankAttacker +_08024F30: .4byte gBattlePartyID +_08024F34: .4byte gEnemyParty +_08024F38: .4byte gLastUsedItem +_08024F3C: .4byte gBattlescriptCurrInstr + thumb_func_end atk75_8026A58 + + thumb_func_start sub_8024F40 +sub_8024F40: @ 8024F40 + push {r4-r6,lr} + ldr r4, _08024F64 @ =gBattlescriptCurrInstr + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r1, _08024F68 @ =gActiveBank + strb r0, [r1] + ldr r0, [r4] + ldrb r0, [r0, 0x2] + cmp r0, 0x6 + bls _08024F5A + b _08025112 +_08024F5A: + lsls r0, 2 + ldr r1, _08024F6C @ =_08024F70 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08024F64: .4byte gBattlescriptCurrInstr +_08024F68: .4byte gActiveBank +_08024F6C: .4byte _08024F70 + .align 2, 0 +_08024F70: + .4byte _08024F8C + .4byte _08024F9C + .4byte _08024FFC + .4byte _0802500C + .4byte _08025024 + .4byte _08025060 + .4byte _08025098 +_08024F8C: + ldr r0, _08024F98 @ =gActiveBank + ldrb r0, [r0] + bl CancelMultiTurnMoves + b _08025112 + .align 2, 0 +_08024F98: .4byte gActiveBank +_08024F9C: + ldr r1, _08024FD8 @ =gBankAttacker + ldr r4, _08024FDC @ =gBankTarget + ldrb r0, [r4] + strb r0, [r1] + ldrb r0, [r1] + bl GetBankSide + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08024FE0 @ =gSideTimer + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r2, r1, r2 + ldrb r0, [r2, 0x8] + cmp r0, 0 + beq _08024FE8 + ldr r1, _08024FE4 @ =gBattleMons + ldrb r2, [r2, 0x9] + movs r0, 0x58 + muls r0, r2 + adds r0, r1 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _08024FE8 + strb r2, [r4] + b _08025112 + .align 2, 0 +_08024FD8: .4byte gBankAttacker +_08024FDC: .4byte gBankTarget +_08024FE0: .4byte gSideTimer +_08024FE4: .4byte gBattleMons +_08024FE8: + ldr r0, _08024FF4 @ =gBankTarget + ldr r1, _08024FF8 @ =gActiveBank + ldrb r1, [r1] + strb r1, [r0] + b _08025112 + .align 2, 0 +_08024FF4: .4byte gBankTarget +_08024FF8: .4byte gActiveBank +_08024FFC: + bl CanRunFromBattle + ldr r1, _08025008 @ =gBattleCommunication + strb r0, [r1] + b _08025112 + .align 2, 0 +_08025008: .4byte gBattleCommunication +_0802500C: + ldr r0, _0802501C @ =gCurrentMove + ldrh r0, [r0] + movs r1, 0 + bl sub_801B5C0 + ldr r1, _08025020 @ =gBankTarget + strb r0, [r1] + b _08025112 + .align 2, 0 +_0802501C: .4byte gCurrentMove +_08025020: .4byte gBankTarget +_08025024: + ldr r2, _08025044 @ =gHitMarker + ldr r1, _08025048 @ =gBitTable + ldr r0, _0802504C @ =gActiveBank + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + lsls r0, 28 + ldr r2, [r2] + ands r2, r0 + cmp r2, 0 + beq _08025054 + ldr r1, _08025050 @ =gBattleCommunication + movs r0, 0x1 + strb r0, [r1] + b _08025112 + .align 2, 0 +_08025044: .4byte gHitMarker +_08025048: .4byte gBitTable +_0802504C: .4byte gActiveBank +_08025050: .4byte gBattleCommunication +_08025054: + ldr r0, _0802505C @ =gBattleCommunication + strb r2, [r0] + b _08025112 + .align 2, 0 +_0802505C: .4byte gBattleCommunication +_08025060: + ldr r4, _08025090 @ =gSpecialStatuses + ldr r3, _08025094 @ =gActiveBank + ldrb r0, [r3] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r2, [r1] + movs r0, 0x9 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + ldrb r0, [r3] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r2, [r1] + movs r0, 0x11 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + b _08025112 + .align 2, 0 +_08025090: .4byte gSpecialStatuses +_08025094: .4byte gActiveBank +_08025098: + ldr r3, _080250B8 @ =gBattlePartyID + ldr r0, _080250BC @ =0x02000000 + ldr r1, _080250C0 @ =0x00016018 + adds r0, r1 + ldrh r2, [r3] + ldrb r1, [r0] + cmp r2, r1 + beq _080250B2 + ldrh r0, [r3, 0x4] + cmp r0, r1 + bne _08025112 + cmp r2, r0 + bne _080250C8 +_080250B2: + ldr r1, _080250C4 @ =gActiveBank + movs r0, 0 + b _080250CC + .align 2, 0 +_080250B8: .4byte gBattlePartyID +_080250BC: .4byte 0x02000000 +_080250C0: .4byte 0x00016018 +_080250C4: .4byte gActiveBank +_080250C8: + ldr r1, _08025120 @ =gActiveBank + movs r0, 0x2 +_080250CC: + strb r0, [r1] + adds r5, r1, 0 + ldrb r2, [r5] + lsls r1, r2, 1 + ldr r0, _08025124 @ =0x020160e8 + adds r4, r1, r0 + movs r3, 0 + ldr r1, _08025128 @ =gBattleMons + movs r0, 0x58 + muls r0, r2 + adds r1, 0xC + adds r0, r1 + ldrh r0, [r0] + ldrh r2, [r4] + cmp r0, r2 + beq _0802510A + adds r6, r5, 0 + movs r5, 0x58 + adds r2, r1, 0 +_080250F2: + adds r3, 0x1 + cmp r3, 0x3 + bgt _0802510A + lsls r1, r3, 1 + ldrb r0, [r6] + muls r0, r5 + adds r1, r0 + adds r1, r2 + ldrh r0, [r1] + ldrh r1, [r4] + cmp r0, r1 + bne _080250F2 +_0802510A: + cmp r3, 0x4 + bne _08025112 + movs r0, 0 + strh r0, [r4] +_08025112: + ldr r1, _0802512C @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x3 + str r0, [r1] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08025120: .4byte gActiveBank +_08025124: .4byte 0x020160e8 +_08025128: .4byte gBattleMons +_0802512C: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8024F40 + + thumb_func_start atk77_setprotect +atk77_setprotect: @ 8025130 + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r6, 0x1 + ldr r2, _080251FC @ =gUnknown_02024C4C + ldr r1, _08025200 @ =gBankAttacker + ldrb r3, [r1] + lsls r0, r3, 1 + adds r0, r2 + ldrh r0, [r0] + mov r8, r1 + ldr r7, _08025204 @ =gDisableStructs + cmp r0, 0xB6 + beq _08025160 + cmp r0, 0xC5 + beq _08025160 + cmp r0, 0xCB + beq _08025160 + lsls r0, r3, 3 + subs r0, r3 + lsls r0, 2 + adds r0, r7 + movs r1, 0 + strb r1, [r0, 0x8] +_08025160: + ldr r0, _08025208 @ =gCurrentMoveTurn + ldrb r1, [r0] + ldr r0, _0802520C @ =gNoOfAllBanks + ldrb r0, [r0] + subs r0, 0x1 + cmp r1, r0 + bne _08025170 + movs r6, 0 +_08025170: + ldr r2, _08025210 @ =gProtectSuccessRates + mov r5, r8 + ldrb r1, [r5] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r7 + ldrb r4, [r0, 0x8] + lsls r4, 1 + adds r4, r2 + bl Random + ldrh r1, [r4] + lsls r0, 16 + lsrs r0, 16 + cmp r1, r0 + bls _08025224 + cmp r6, 0 + beq _08025224 + ldr r4, _08025214 @ =gBattleMoves + ldr r3, _08025218 @ =gCurrentMove + ldrh r0, [r3] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r0, [r1] + cmp r0, 0x6F + bne _080251C0 + ldr r0, _0802521C @ =gProtectStructs + ldrb r1, [r5] + lsls r1, 4 + adds r1, r0 + ldrb r0, [r1] + movs r2, 0x1 + orrs r0, r2 + strb r0, [r1] + ldr r1, _08025220 @ =gBattleCommunication + movs r0, 0 + strb r0, [r1, 0x5] +_080251C0: + ldrh r0, [r3] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r0, [r1] + cmp r0, 0x74 + bne _080251E6 + ldr r0, _0802521C @ =gProtectStructs + ldrb r1, [r5] + lsls r1, 4 + adds r1, r0 + ldrb r0, [r1] + movs r2, 0x2 + orrs r0, r2 + strb r0, [r1] + ldr r1, _08025220 @ =gBattleCommunication + movs r0, 0x1 + strb r0, [r1, 0x5] +_080251E6: + mov r1, r8 + ldrb r0, [r1] + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r7 + ldrb r0, [r1, 0x8] + adds r0, 0x1 + strb r0, [r1, 0x8] + b _08025246 + .align 2, 0 +_080251FC: .4byte gUnknown_02024C4C +_08025200: .4byte gBankAttacker +_08025204: .4byte gDisableStructs +_08025208: .4byte gCurrentMoveTurn +_0802520C: .4byte gNoOfAllBanks +_08025210: .4byte gProtectSuccessRates +_08025214: .4byte gBattleMoves +_08025218: .4byte gCurrentMove +_0802521C: .4byte gProtectStructs +_08025220: .4byte gBattleCommunication +_08025224: + ldr r2, _08025258 @ =gDisableStructs + ldr r0, _0802525C @ =gBankAttacker + ldrb r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strb r1, [r0, 0x8] + ldr r1, _08025260 @ =gBattleCommunication + movs r0, 0x2 + strb r0, [r1, 0x5] + ldr r2, _08025264 @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] +_08025246: + ldr r1, _08025268 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08025258: .4byte gDisableStructs +_0802525C: .4byte gBankAttacker +_08025260: .4byte gBattleCommunication +_08025264: .4byte gBattleMoveFlags +_08025268: .4byte gBattlescriptCurrInstr + thumb_func_end atk77_setprotect + + thumb_func_start atk78_faintifabilitynotdamp +atk78_faintifabilitynotdamp: @ 802526C + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, _08025328 @ =gBattleExecBuffer + ldr r2, [r0] + cmp r2, 0 + bne _08025370 + ldr r1, _0802532C @ =gBankTarget + strb r2, [r1] + ldr r0, _08025330 @ =gNoOfAllBanks + ldrb r3, [r0] + adds r5, r1, 0 + mov r8, r0 + ldr r6, _08025334 @ =gBattleMons + cmp r2, r3 + bcs _080252B8 + adds r0, r6, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x6 + beq _080252B8 + adds r2, r3, 0 + adds r4, r6, 0 + movs r3, 0x58 +_0802529C: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, r2 + bcs _080252B8 + ldrb r0, [r5] + muls r0, r3 + adds r0, r4 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x6 + bne _0802529C +_080252B8: + ldrb r0, [r5] + mov r1, r8 + ldrb r1, [r1] + cmp r0, r1 + bne _08025354 + ldr r4, _08025338 @ =gActiveBank + ldr r7, _0802533C @ =gBankAttacker + ldrb r0, [r7] + strb r0, [r4] + ldr r2, _08025340 @ =gBattleMoveDamage + ldrb r1, [r4] + movs r0, 0x58 + muls r0, r1 + adds r0, r6 + ldrh r0, [r0, 0x28] + str r0, [r2] + ldr r1, _08025344 @ =0x00007fff + movs r0, 0 + bl EmitHealthBarUpdate + ldrb r0, [r4] + bl MarkBufferBankForExecution + ldr r1, _08025348 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + movs r0, 0 + strb r0, [r5] + mov r2, r8 + ldrb r0, [r2] + cmp r0, 0 + beq _08025370 + adds r3, r5, 0 + ldrb r5, [r7] + ldr r7, _0802534C @ =gBitTable + adds r4, r0, 0 + ldr r6, _08025350 @ =gAbsentBankFlags +_08025304: + ldrb r2, [r3] + cmp r2, r5 + beq _0802531A + ldrb r0, [r6] + ldrb r1, [r3] + lsls r1, 2 + adds r1, r7 + ldr r1, [r1] + ands r0, r1 + cmp r0, 0 + beq _08025370 +_0802531A: + adds r0, r2, 0x1 + strb r0, [r3] + lsls r0, 24 + lsrs r0, 24 + cmp r0, r4 + bcc _08025304 + b _08025370 + .align 2, 0 +_08025328: .4byte gBattleExecBuffer +_0802532C: .4byte gBankTarget +_08025330: .4byte gNoOfAllBanks +_08025334: .4byte gBattleMons +_08025338: .4byte gActiveBank +_0802533C: .4byte gBankAttacker +_08025340: .4byte gBattleMoveDamage +_08025344: .4byte 0x00007fff +_08025348: .4byte gBattlescriptCurrInstr +_0802534C: .4byte gBitTable +_08025350: .4byte gAbsentBankFlags +_08025354: + ldr r1, _0802537C @ =gLastUsedAbility + movs r0, 0x6 + strb r0, [r1] + ldrb r0, [r5] + movs r1, 0x58 + muls r1, r0 + adds r1, r6 + adds r1, 0x20 + ldrb r1, [r1] + bl sub_81074C4 + ldr r1, _08025380 @ =gBattlescriptCurrInstr + ldr r0, _08025384 @ =gUnknown_081D9834 + str r0, [r1] +_08025370: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802537C: .4byte gLastUsedAbility +_08025380: .4byte gBattlescriptCurrInstr +_08025384: .4byte gUnknown_081D9834 + thumb_func_end atk78_faintifabilitynotdamp + + thumb_func_start atk79_setuserhptozero +atk79_setuserhptozero: @ 8025388 + push {r4,lr} + sub sp, 0x4 + ldr r0, _080253D4 @ =gBattleExecBuffer + ldr r3, [r0] + cmp r3, 0 + bne _080253CC + ldr r4, _080253D8 @ =gActiveBank + ldr r0, _080253DC @ =gBankAttacker + ldrb r0, [r0] + strb r0, [r4] + ldr r1, _080253E0 @ =gBattleMons + ldrb r0, [r4] + movs r2, 0x58 + muls r0, r2 + adds r0, r1 + strh r3, [r0, 0x28] + ldrb r0, [r4] + muls r0, r2 + adds r1, 0x28 + adds r0, r1 + str r0, [sp] + movs r0, 0 + movs r1, 0x2A + movs r2, 0 + movs r3, 0x2 + bl EmitSetAttributes + ldrb r0, [r4] + bl MarkBufferBankForExecution + ldr r1, _080253E4 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_080253CC: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080253D4: .4byte gBattleExecBuffer +_080253D8: .4byte gActiveBank +_080253DC: .4byte gBankAttacker +_080253E0: .4byte gBattleMons +_080253E4: .4byte gBattlescriptCurrInstr + thumb_func_end atk79_setuserhptozero + + thumb_func_start sub_80253E8 +sub_80253E8: @ 80253E8 + push {r4-r7,lr} + ldr r3, _08025460 @ =gBattlescriptCurrInstr + ldr r2, [r3] + ldrb r4, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r4, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r4, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r4, r0 + ldr r0, _08025464 @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + adds r7, r3, 0 + cmp r0, 0 + beq _08025480 + ldr r0, _08025468 @ =gBankTarget + ldrb r1, [r0] + adds r1, 0x1 + strb r1, [r0] + ldr r2, _0802546C @ =gBankAttacker + lsls r1, 24 + lsrs r1, 24 + adds r3, r0, 0 + ldr r6, _08025470 @ =gAbsentBankFlags + ldr r5, _08025474 @ =gBitTable + ldr r0, _08025478 @ =gNoOfAllBanks + mov r12, r0 + ldrb r0, [r2] + cmp r1, r0 + bne _0802543E +_0802542E: + ldrb r0, [r3] + adds r0, 0x1 + strb r0, [r3] + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r2] + cmp r0, r1 + beq _0802542E +_0802543E: + ldrb r0, [r6] + ldrb r1, [r3] + lsls r1, 2 + adds r1, r5 + ldr r1, [r1] + ands r0, r1 + cmp r0, 0 + bne _0802542E + ldrb r0, [r3] + mov r2, r12 + ldrb r2, [r2] + cmp r0, r2 + bcc _0802547C + ldr r0, [r7] + adds r0, 0x5 + str r0, [r7] + b _08025484 + .align 2, 0 +_08025460: .4byte gBattlescriptCurrInstr +_08025464: .4byte gBattleTypeFlags +_08025468: .4byte gBankTarget +_0802546C: .4byte gBankAttacker +_08025470: .4byte gAbsentBankFlags +_08025474: .4byte gBitTable +_08025478: .4byte gNoOfAllBanks +_0802547C: + str r4, [r7] + b _08025484 +_08025480: + adds r0, r2, 0x5 + str r0, [r3] +_08025484: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80253E8 + + thumb_func_start sub_802548C +sub_802548C: @ 802548C + push {r4-r6,lr} + ldr r4, _080254E8 @ =gBattlescriptCurrInstr + ldr r1, [r4] + ldrb r2, [r1, 0x1] + ldrb r0, [r1, 0x2] + lsls r0, 8 + orrs r2, r0 + ldrb r0, [r1, 0x3] + lsls r0, 16 + orrs r2, r0 + ldrb r0, [r1, 0x4] + lsls r0, 24 + orrs r2, r0 + ldrb r0, [r1, 0x5] + ldr r3, _080254EC @ =gBankTarget + cmp r0, 0x1 + bne _080254B4 + ldr r0, _080254F0 @ =gBankAttacker + ldrb r0, [r0] + strb r0, [r3] +_080254B4: + ldr r1, _080254F4 @ =gBattleMoveDamage + ldr r6, _080254F8 @ =gBattleMons + ldrb r0, [r3] + movs r5, 0x58 + muls r0, r5 + adds r0, r6 + ldrh r0, [r0, 0x2C] + lsrs r0, 1 + str r0, [r1] + cmp r0, 0 + bne _080254CE + movs r0, 0x1 + str r0, [r1] +_080254CE: + ldr r0, [r1] + negs r0, r0 + str r0, [r1] + ldrb r0, [r3] + muls r0, r5 + adds r0, r6 + ldrh r1, [r0, 0x28] + ldrh r0, [r0, 0x2C] + cmp r1, r0 + bne _080254FC + str r2, [r4] + b _08025502 + .align 2, 0 +_080254E8: .4byte gBattlescriptCurrInstr +_080254EC: .4byte gBankTarget +_080254F0: .4byte gBankAttacker +_080254F4: .4byte gBattleMoveDamage +_080254F8: .4byte gBattleMons +_080254FC: + ldr r0, [r4] + adds r0, 0x6 + str r0, [r4] +_08025502: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_802548C + + thumb_func_start sub_8025508 +sub_8025508: @ 8025508 + push {r4-r7,lr} + ldr r3, _0802556C @ =0x02000000 + ldr r4, _08025570 @ =gBankAttacker + ldrb r2, [r4] + lsls r1, r2, 1 + ldr r5, _08025574 @ =0x000160ac + adds r0, r1, r5 + adds r0, r3 + ldrb r7, [r0] + ldr r0, _08025578 @ =0x000160ad + adds r1, r0 + adds r1, r3 + ldrb r0, [r1] + lsls r0, 8 + orrs r7, r0 + lsls r2, 2 + ldr r1, _0802557C @ =0x00016100 + adds r0, r2, r1 + adds r0, r3 + ldrb r6, [r0] + adds r5, 0x55 + adds r0, r2, r5 + adds r0, r3 + ldrb r0, [r0] + lsls r0, 8 + orrs r6, r0 + adds r1, 0x2 + adds r0, r2, r1 + adds r0, r3 + ldrb r5, [r0] + ldr r0, _08025580 @ =0x00016103 + adds r2, r0 + adds r2, r3 + ldrb r0, [r2] + lsls r0, 8 + orrs r5, r0 + cmp r7, 0 + beq _08025594 + ldr r0, _08025584 @ =0x0000ffff + cmp r7, r0 + beq _08025594 + ldr r2, _08025588 @ =gHitMarker + ldr r0, [r2] + ldr r1, _0802558C @ =0xfffffbff + ands r0, r1 + str r0, [r2] + ldr r4, _08025590 @ =gCurrentMove + strh r7, [r4] + b _0802565C + .align 2, 0 +_0802556C: .4byte 0x02000000 +_08025570: .4byte gBankAttacker +_08025574: .4byte 0x000160ac +_08025578: .4byte 0x000160ad +_0802557C: .4byte 0x00016100 +_08025580: .4byte 0x00016103 +_08025584: .4byte 0x0000ffff +_08025588: .4byte gHitMarker +_0802558C: .4byte 0xfffffbff +_08025590: .4byte gCurrentMove +_08025594: + cmp r6, 0 + beq _08025644 + cmp r5, 0 + beq _08025618 + ldr r0, _080255C4 @ =0x0000ffff + cmp r6, r0 + beq _08025618 + cmp r5, r0 + beq _08025618 + ldr r2, _080255C8 @ =gHitMarker + ldr r0, [r2] + ldr r1, _080255CC @ =0xfffffbff + ands r0, r1 + str r0, [r2] + bl Random + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + beq _080255D4 + ldr r0, _080255D0 @ =gCurrentMove + strh r6, [r0] + b _080255D8 + .align 2, 0 +_080255C4: .4byte 0x0000ffff +_080255C8: .4byte gHitMarker +_080255CC: .4byte 0xfffffbff +_080255D0: .4byte gCurrentMove +_080255D4: + ldr r0, _08025604 @ =gCurrentMove + strh r5, [r0] +_080255D8: + adds r5, r0, 0 + ldrh r0, [r5] + movs r1, 0 + bl sub_801B5C0 + ldr r1, _08025608 @ =gBankTarget + strb r0, [r1] + ldr r4, _0802560C @ =gBattlescriptCurrInstr + ldr r3, _08025610 @ =gUnknown_081D6BBC + ldr r2, _08025614 @ =gBattleMoves + ldrh r1, [r5] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r3 + ldr r0, [r0] + str r0, [r4] + b _080256C0 + .align 2, 0 +_08025604: .4byte gCurrentMove +_08025608: .4byte gBankTarget +_0802560C: .4byte gBattlescriptCurrInstr +_08025610: .4byte gUnknown_081D6BBC +_08025614: .4byte gBattleMoves +_08025618: + cmp r6, 0 + beq _08025644 + ldr r0, _08025634 @ =0x0000ffff + cmp r6, r0 + beq _08025644 + ldr r2, _08025638 @ =gHitMarker + ldr r0, [r2] + ldr r1, _0802563C @ =0xfffffbff + ands r0, r1 + str r0, [r2] + ldr r4, _08025640 @ =gCurrentMove + strh r6, [r4] + b _0802565C + .align 2, 0 +_08025634: .4byte 0x0000ffff +_08025638: .4byte gHitMarker +_0802563C: .4byte 0xfffffbff +_08025640: .4byte gCurrentMove +_08025644: + cmp r5, 0 + beq _080256A4 + ldr r0, _08025684 @ =0x0000ffff + cmp r5, r0 + beq _080256A4 + ldr r2, _08025688 @ =gHitMarker + ldr r0, [r2] + ldr r1, _0802568C @ =0xfffffbff + ands r0, r1 + str r0, [r2] + ldr r4, _08025690 @ =gCurrentMove + strh r5, [r4] +_0802565C: + ldrh r0, [r4] + movs r1, 0 + bl sub_801B5C0 + ldr r1, _08025694 @ =gBankTarget + strb r0, [r1] + ldr r5, _08025698 @ =gBattlescriptCurrInstr + ldr r3, _0802569C @ =gUnknown_081D6BBC + ldr r2, _080256A0 @ =gBattleMoves + ldrh r1, [r4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r3 + ldr r0, [r0] + str r0, [r5] + b _080256C0 + .align 2, 0 +_08025684: .4byte 0x0000ffff +_08025688: .4byte gHitMarker +_0802568C: .4byte 0xfffffbff +_08025690: .4byte gCurrentMove +_08025694: .4byte gBankTarget +_08025698: .4byte gBattlescriptCurrInstr +_0802569C: .4byte gUnknown_081D6BBC +_080256A0: .4byte gBattleMoves +_080256A4: + ldr r2, _080256C8 @ =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 r1, _080256CC @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_080256C0: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080256C8: .4byte gSpecialStatuses +_080256CC: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8025508 + + thumb_func_start sub_80256D0 +sub_80256D0: @ 80256D0 + push {lr} + ldr r2, _080256F0 @ =gBattleWeather + ldrh r0, [r2] + movs r1, 0x7 + ands r1, r0 + cmp r1, 0 + beq _080256FC + ldr r2, _080256F4 @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _080256F8 @ =gBattleCommunication + movs r0, 0x2 + strb r0, [r1, 0x5] + b _0802570C + .align 2, 0 +_080256F0: .4byte gBattleWeather +_080256F4: .4byte gBattleMoveFlags +_080256F8: .4byte gBattleCommunication +_080256FC: + movs r0, 0x1 + strh r0, [r2] + ldr r0, _08025718 @ =gBattleCommunication + strb r1, [r0, 0x5] + ldr r0, _0802571C @ =gWishFutureKnock + adds r0, 0x28 + movs r1, 0x5 + strb r1, [r0] +_0802570C: + ldr r1, _08025720 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08025718: .4byte gBattleCommunication +_0802571C: .4byte gWishFutureKnock +_08025720: .4byte gBattlescriptCurrInstr + thumb_func_end sub_80256D0 + + thumb_func_start atk7E_setreflect +atk7E_setreflect: @ 8025724 + push {r4-r6,lr} + ldr r5, _08025754 @ =gBankAttacker + ldrb r0, [r5] + bl GetBankIdentity + ldr r6, _08025758 @ =gSideAffecting + movs r4, 0x1 + adds r1, r4, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r6 + ldrh r1, [r1] + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + beq _08025764 + ldr r2, _0802575C @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08025760 @ =gBattleCommunication + movs r0, 0 + b _080257C4 + .align 2, 0 +_08025754: .4byte gBankAttacker +_08025758: .4byte gSideAffecting +_0802575C: .4byte gBattleMoveFlags +_08025760: .4byte gBattleCommunication +_08025764: + ldrb r0, [r5] + bl GetBankIdentity + adds r1, r4, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r6 + ldrh r0, [r1] + movs r2, 0x1 + orrs r0, r2 + strh r0, [r1] + ldrb r0, [r5] + bl GetBankIdentity + ldr r2, _080257B4 @ =gSideTimer + adds r1, r4, 0 + ands r1, r0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x5 + strb r1, [r0] + ldr r0, _080257B8 @ =gBattleTypeFlags + ldrh r1, [r0] + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + beq _080257C0 + movs r0, 0x1 + bl CountAliveMons + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x2 + bne _080257C0 + ldr r0, _080257BC @ =gBattleCommunication + strb r1, [r0, 0x5] + b _080257C6 + .align 2, 0 +_080257B4: .4byte gSideTimer +_080257B8: .4byte gBattleTypeFlags +_080257BC: .4byte gBattleCommunication +_080257C0: + ldr r1, _080257D4 @ =gBattleCommunication + movs r0, 0x1 +_080257C4: + strb r0, [r1, 0x5] +_080257C6: + ldr r1, _080257D8 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080257D4: .4byte gBattleCommunication +_080257D8: .4byte gBattlescriptCurrInstr + thumb_func_end atk7E_setreflect + + thumb_func_start sub_80257DC +sub_80257DC: @ 80257DC + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r7, _0802581C @ =gBattleMoveFlags + ldrb r5, [r7] + movs r0, 0x29 + ands r0, r5 + cmp r0, 0 + bne _0802580E + ldr r0, _08025820 @ =gStatuses3 + mov r9, r0 + ldr r1, _08025824 @ =gBankTarget + mov r8, r1 + ldrb r4, [r1] + lsls r0, r4, 2 + mov r2, r9 + adds r6, r0, r2 + ldr r2, [r6] + movs r0, 0x4 + mov r12, r0 + adds r3, r2, 0 + ands r3, r0 + cmp r3, 0 + beq _0802582C +_0802580E: + movs r0, 0x1 + orrs r0, r5 + strb r0, [r7] + ldr r1, _08025828 @ =gBattleCommunication + movs r0, 0x1 + strb r0, [r1, 0x5] + b _0802587C + .align 2, 0 +_0802581C: .4byte gBattleMoveFlags +_08025820: .4byte gStatuses3 +_08025824: .4byte gBankTarget +_08025828: .4byte gBattleCommunication +_0802582C: + ldr r1, _08025858 @ =gBattleMons + movs r0, 0x58 + muls r0, r4 + adds r1, r0, r1 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0xC + beq _08025848 + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0xC + bne _08025860 +_08025848: + movs r0, 0x1 + orrs r0, r5 + strb r0, [r7] + ldr r1, _0802585C @ =gBattleCommunication + movs r0, 0x2 + strb r0, [r1, 0x5] + b _0802587C + .align 2, 0 +_08025858: .4byte gBattleMons +_0802585C: .4byte gBattleCommunication +_08025860: + ldr r0, _08025890 @ =gBankAttacker + ldrb r0, [r0] + orrs r2, r0 + str r2, [r6] + mov r2, r8 + ldrb r1, [r2] + lsls r1, 2 + add r1, r9 + ldr r0, [r1] + mov r2, r12 + orrs r0, r2 + str r0, [r1] + ldr r0, _08025894 @ =gBattleCommunication + strb r3, [r0, 0x5] +_0802587C: + ldr r1, _08025898 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08025890: .4byte gBankAttacker +_08025894: .4byte gBattleCommunication +_08025898: .4byte gBattlescriptCurrInstr + thumb_func_end sub_80257DC + + thumb_func_start atk80_manipulatedamage +atk80_manipulatedamage: @ 802589C + push {r4,lr} + ldr r1, _080258B4 @ =gBattlescriptCurrInstr + ldr r0, [r1] + ldrb r2, [r0, 0x1] + adds r4, r1, 0 + cmp r2, 0x1 + beq _080258CC + cmp r2, 0x1 + bgt _080258B8 + cmp r2, 0 + beq _080258BE + b _0802590C + .align 2, 0 +_080258B4: .4byte gBattlescriptCurrInstr +_080258B8: + cmp r2, 0x2 + beq _08025904 + b _0802590C +_080258BE: + ldr r1, _080258C8 @ =gBattleMoveDamage + ldr r0, [r1] + negs r0, r0 + b _0802590A + .align 2, 0 +_080258C8: .4byte gBattleMoveDamage +_080258CC: + ldr r3, _080258F8 @ =gBattleMoveDamage + ldr r0, [r3] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + str r0, [r3] + cmp r0, 0 + bne _080258DE + str r2, [r3] +_080258DE: + ldr r2, _080258FC @ =gBattleMons + ldr r0, _08025900 @ =gBankTarget + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrh r0, [r0, 0x2C] + lsrs r1, r0, 1 + ldr r0, [r3] + cmp r1, r0 + bge _0802590C + str r1, [r3] + b _0802590C + .align 2, 0 +_080258F8: .4byte gBattleMoveDamage +_080258FC: .4byte gBattleMons +_08025900: .4byte gBankTarget +_08025904: + ldr r1, _08025918 @ =gBattleMoveDamage + ldr r0, [r1] + lsls r0, 1 +_0802590A: + str r0, [r1] +_0802590C: + ldr r0, [r4] + adds r0, 0x2 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08025918: .4byte gBattleMoveDamage + thumb_func_end atk80_manipulatedamage + + thumb_func_start atk81_setrest +atk81_setrest: @ 802591C + push {r4-r7,lr} + sub sp, 0x4 + ldr r0, _08025974 @ =gBattlescriptCurrInstr + mov r12, r0 + ldr r1, [r0] + ldrb r6, [r1, 0x1] + ldrb r0, [r1, 0x2] + lsls r0, 8 + orrs r6, r0 + ldrb r0, [r1, 0x3] + lsls r0, 16 + orrs r6, r0 + ldrb r0, [r1, 0x4] + lsls r0, 24 + orrs r6, r0 + ldr r5, _08025978 @ =gActiveBank + ldr r2, _0802597C @ =gBankTarget + ldr r0, _08025980 @ =gBankAttacker + ldrb r0, [r0] + strb r0, [r2] + strb r0, [r5] + ldr r4, _08025984 @ =gBattleMoveDamage + ldr r1, _08025988 @ =gBattleMons + ldrb r0, [r2] + movs r3, 0x58 + muls r0, r3 + adds r0, r1 + ldrh r0, [r0, 0x2C] + negs r0, r0 + str r0, [r4] + ldrb r0, [r2] + adds r4, r0, 0 + muls r4, r3 + adds r0, r4, r1 + ldrh r3, [r0, 0x28] + adds r7, r5, 0 + adds r5, r2, 0 + adds r2, r1, 0 + ldrh r0, [r0, 0x2C] + cmp r3, r0 + bne _0802598C + mov r0, r12 + str r6, [r0] + b _080259DC + .align 2, 0 +_08025974: .4byte gBattlescriptCurrInstr +_08025978: .4byte gActiveBank +_0802597C: .4byte gBankTarget +_08025980: .4byte gBankAttacker +_08025984: .4byte gBattleMoveDamage +_08025988: .4byte gBattleMons +_0802598C: + adds r0, r2, 0 + adds r0, 0x4C + adds r0, r4, r0 + ldr r1, [r0] + movs r0, 0xF8 + ands r1, r0 + cmp r1, 0 + beq _080259A8 + ldr r1, _080259A4 @ =gBattleCommunication + movs r0, 0x1 + strb r0, [r1, 0x5] + b _080259AC + .align 2, 0 +_080259A4: .4byte gBattleCommunication +_080259A8: + ldr r0, _080259E4 @ =gBattleCommunication + strb r1, [r0, 0x5] +_080259AC: + ldrb r0, [r5] + movs r3, 0x58 + muls r0, r3 + adds r2, 0x4C + adds r0, r2 + movs r1, 0x3 + str r1, [r0] + ldrb r0, [r7] + muls r0, r3 + adds r0, r2 + str r0, [sp] + movs r0, 0 + movs r1, 0x28 + movs r2, 0 + movs r3, 0x4 + bl EmitSetAttributes + ldrb r0, [r7] + bl MarkBufferBankForExecution + ldr r1, _080259E8 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_080259DC: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080259E4: .4byte gBattleCommunication +_080259E8: .4byte gBattlescriptCurrInstr + thumb_func_end atk81_setrest + + thumb_func_start atk82_jumpifnotfirstturn +atk82_jumpifnotfirstturn: @ 80259EC + push {r4,r5,lr} + ldr r5, _08025A20 @ =gBattlescriptCurrInstr + ldr r4, [r5] + ldrb r3, [r4, 0x1] + ldrb r0, [r4, 0x2] + lsls r0, 8 + orrs r3, r0 + ldrb r0, [r4, 0x3] + lsls r0, 16 + orrs r3, r0 + ldrb r0, [r4, 0x4] + lsls r0, 24 + orrs r3, r0 + ldr r2, _08025A24 @ =gDisableStructs + ldr r0, _08025A28 @ =gBankAttacker + ldrb r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x16] + cmp r0, 0 + beq _08025A2C + adds r0, r4, 0x5 + str r0, [r5] + b _08025A2E + .align 2, 0 +_08025A20: .4byte gBattlescriptCurrInstr +_08025A24: .4byte gDisableStructs +_08025A28: .4byte gBankAttacker +_08025A2C: + str r3, [r5] +_08025A2E: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end atk82_jumpifnotfirstturn + + thumb_func_start sub_8025A34 +sub_8025A34: @ 8025A34 + ldr r1, _08025A40 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + bx lr + .align 2, 0 +_08025A40: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8025A34 + + thumb_func_start sub_8025A44 +sub_8025A44: @ 8025A44 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r3, r0, 24 + movs r2, 0 + ldr r0, _08025A9C @ =gNoOfAllBanks + ldrb r1, [r0] + mov r8, r0 + cmp r2, r1 + bge _08025AB8 + ldr r0, _08025AA0 @ =gBattleMons + mov r12, r0 + movs r0, 0x58 + muls r0, r3 + add r0, r12 + adds r5, r0, 0 + adds r5, 0x20 + ldr r6, _08025AA4 @ =0x02016003 + movs r3, 0 + ldr r7, _08025AA8 @ =gBattleCommunication + adds r4, r1, 0 +_08025A70: + mov r0, r12 + adds r0, 0x50 + adds r0, r3, r0 + ldr r0, [r0] + movs r1, 0x70 + ands r0, r1 + cmp r0, 0 + beq _08025AB0 + ldrb r0, [r5] + cmp r0, 0x2B + beq _08025AB0 + movs r3, 0 + strb r2, [r6] + ldr r1, _08025AAC @ =gBankTarget + ldrb r0, [r1] + cmp r0, 0xFF + beq _08025AD0 + cmp r0, r2 + beq _08025AC4 + movs r0, 0x1 + strb r0, [r7, 0x5] + b _08025AB8 + .align 2, 0 +_08025A9C: .4byte gNoOfAllBanks +_08025AA0: .4byte gBattleMons +_08025AA4: .4byte 0x02016003 +_08025AA8: .4byte gBattleCommunication +_08025AAC: .4byte gBankTarget +_08025AB0: + adds r3, 0x58 + adds r2, 0x1 + cmp r2, r4 + blt _08025A70 +_08025AB8: + mov r1, r8 + ldrb r1, [r1] + cmp r2, r1 + beq _08025AD4 + movs r0, 0x1 + b _08025AD6 +_08025AC4: + ldr r0, _08025ACC @ =gBattleCommunication + strb r3, [r0, 0x5] + b _08025AB8 + .align 2, 0 +_08025ACC: .4byte gBattleCommunication +_08025AD0: + strb r2, [r1] + b _08025AB8 +_08025AD4: + movs r0, 0 +_08025AD6: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8025A44 + + thumb_func_start sub_8025AE0 +sub_8025AE0: @ 8025AE0 + push {r4-r6,lr} + ldr r5, _08025B0C @ =gBattlescriptCurrInstr + ldr r1, [r5] + ldrb r4, [r1, 0x1] + ldrb r0, [r1, 0x2] + lsls r0, 8 + orrs r4, r0 + ldrb r0, [r1, 0x3] + lsls r0, 16 + orrs r4, r0 + ldrb r0, [r1, 0x4] + lsls r0, 24 + orrs r4, r0 + ldr r6, _08025B10 @ =gBankTarget + ldrb r0, [r6] + bl sub_8025A44 + lsls r0, 24 + cmp r0, 0 + beq _08025B14 + str r4, [r5] + b _08025B56 + .align 2, 0 +_08025B0C: .4byte gBattlescriptCurrInstr +_08025B10: .4byte gBankTarget +_08025B14: + ldr r1, _08025B44 @ =gBattleMons + ldrb r3, [r6] + movs r0, 0x58 + muls r0, r3 + adds r0, r1 + adds r0, 0x20 + ldrb r0, [r0] + adds r1, r0, 0 + cmp r1, 0xF + beq _08025B2C + cmp r1, 0x48 + bne _08025B50 +_08025B2C: + ldr r2, _08025B48 @ =gLastUsedAbility + strb r0, [r2] + ldr r1, _08025B4C @ =gBattleCommunication + movs r0, 0x2 + strb r0, [r1, 0x5] + str r4, [r5] + ldrb r1, [r2] + adds r0, r3, 0 + bl sub_81074C4 + b _08025B56 + .align 2, 0 +_08025B44: .4byte gBattleMons +_08025B48: .4byte gLastUsedAbility +_08025B4C: .4byte gBattleCommunication +_08025B50: + ldr r0, [r5] + adds r0, 0x5 + str r0, [r5] +_08025B56: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8025AE0 + + thumb_func_start sub_8025B5C +sub_8025B5C: @ 8025B5C + push {r4,r5,lr} + ldr r5, _08025B84 @ =gDisableStructs + ldr r4, _08025B88 @ =gBankAttacker + ldrb r1, [r4] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r1, r0, r5 + ldrb r0, [r1, 0x9] + cmp r0, 0x3 + bne _08025B94 + ldr r2, _08025B8C @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08025B90 @ =gBattleCommunication + movs r0, 0x1 + strb r0, [r1, 0x5] + b _08025BBE + .align 2, 0 +_08025B84: .4byte gDisableStructs +_08025B88: .4byte gBankAttacker +_08025B8C: .4byte gBattleMoveFlags +_08025B90: .4byte gBattleCommunication +_08025B94: + adds r0, 0x1 + movs r3, 0 + strb r0, [r1, 0x9] + ldr r2, _08025BCC @ =gBattleTextBuff1 + movs r0, 0xFD + strb r0, [r2] + movs r0, 0x1 + strb r0, [r2, 0x1] + strb r0, [r2, 0x2] + strb r0, [r2, 0x3] + ldrb r1, [r4] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r5 + ldrb r0, [r0, 0x9] + strb r0, [r2, 0x4] + movs r0, 0xFF + strb r0, [r2, 0x5] + ldr r0, _08025BD0 @ =gBattleCommunication + strb r3, [r0, 0x5] +_08025BBE: + ldr r1, _08025BD4 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08025BCC: .4byte gBattleTextBuff1 +_08025BD0: .4byte gBattleCommunication +_08025BD4: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8025B5C + + thumb_func_start atk86_stockpiletobasedamage +atk86_stockpiletobasedamage: @ 8025BD8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + ldr r3, _08025C10 @ =gBattlescriptCurrInstr + ldr r1, [r3] + ldrb r2, [r1, 0x1] + ldrb r0, [r1, 0x2] + lsls r0, 8 + orrs r2, r0 + ldrb r0, [r1, 0x3] + lsls r0, 16 + orrs r2, r0 + ldrb r0, [r1, 0x4] + lsls r0, 24 + orrs r2, r0 + ldr r7, _08025C14 @ =gDisableStructs + ldr r6, _08025C18 @ =gBankAttacker + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r7 + ldrb r0, [r0, 0x9] + cmp r0, 0 + bne _08025C1C + str r2, [r3] + b _08025CC2 + .align 2, 0 +_08025C10: .4byte gBattlescriptCurrInstr +_08025C14: .4byte gDisableStructs +_08025C18: .4byte gBankAttacker +_08025C1C: + ldr r0, _08025CD0 @ =gBattleCommunication + ldrb r0, [r0, 0x6] + cmp r0, 0x1 + beq _08025CA8 + ldr r0, _08025CD4 @ =gBattleMoveDamage + mov r8, r0 + ldr r4, _08025CD8 @ =gSideAffecting + ldr r5, _08025CDC @ =gBankTarget + ldrb r0, [r5] + bl GetBankIdentity + movs r1, 0x1 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + ldrh r3, [r1] + ldrb r0, [r6] + movs r4, 0x58 + muls r0, r4 + ldr r2, _08025CE0 @ =gBattleMons + adds r0, r2 + ldrb r1, [r5] + muls r1, r4 + adds r1, r2 + ldr r2, _08025CE4 @ =gCurrentMove + ldrh r2, [r2] + movs r4, 0 + str r4, [sp] + str r4, [sp, 0x4] + ldrb r4, [r6] + str r4, [sp, 0x8] + ldrb r4, [r5] + str r4, [sp, 0xC] + bl CalculateBaseDamage + ldrb r2, [r6] + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + adds r1, r7 + ldrb r1, [r1, 0x9] + adds r3, r0, 0 + muls r3, r1 + mov r1, r8 + str r3, [r1] + ldr r2, _08025CE8 @ =0x02000000 + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r7 + ldrb r0, [r0, 0x9] + ldr r1, _08025CEC @ =0x00016002 + adds r2, r1 + strb r0, [r2] + ldr r1, _08025CF0 @ =gProtectStructs + ldrb r0, [r6] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 28 + cmp r0, 0 + bge _08025CA8 + lsls r0, r3, 4 + subs r0, r3 + movs r1, 0xA + bl __divsi3 + mov r1, r8 + str r0, [r1] +_08025CA8: + ldr r2, _08025CF4 @ =gDisableStructs + ldr r0, _08025CF8 @ =gBankAttacker + ldrb r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0 + strb r1, [r0, 0x9] + ldr r1, _08025CFC @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_08025CC2: + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08025CD0: .4byte gBattleCommunication +_08025CD4: .4byte gBattleMoveDamage +_08025CD8: .4byte gSideAffecting +_08025CDC: .4byte gBankTarget +_08025CE0: .4byte gBattleMons +_08025CE4: .4byte gCurrentMove +_08025CE8: .4byte 0x02000000 +_08025CEC: .4byte 0x00016002 +_08025CF0: .4byte gProtectStructs +_08025CF4: .4byte gDisableStructs +_08025CF8: .4byte gBankAttacker +_08025CFC: .4byte gBattlescriptCurrInstr + thumb_func_end atk86_stockpiletobasedamage + + thumb_func_start sub_8025D00 +sub_8025D00: @ 8025D00 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r7, _08025D40 @ =gBattlescriptCurrInstr + ldr r1, [r7] + ldrb r2, [r1, 0x1] + ldrb r0, [r1, 0x2] + lsls r0, 8 + orrs r2, r0 + ldrb r0, [r1, 0x3] + lsls r0, 16 + orrs r2, r0 + ldrb r0, [r1, 0x4] + lsls r0, 24 + orrs r2, r0 + ldr r0, _08025D44 @ =gDisableStructs + mov r8, r0 + ldr r6, _08025D48 @ =gBankAttacker + ldrb r3, [r6] + lsls r0, r3, 3 + subs r0, r3 + lsls r0, 2 + mov r1, r8 + adds r4, r0, r1 + ldrb r1, [r4, 0x9] + cmp r1, 0 + bne _08025D50 + str r2, [r7] + ldr r0, _08025D4C @ =gBattleCommunication + strb r1, [r0, 0x5] + b _08025DD0 + .align 2, 0 +_08025D40: .4byte gBattlescriptCurrInstr +_08025D44: .4byte gDisableStructs +_08025D48: .4byte gBankAttacker +_08025D4C: .4byte gBattleCommunication +_08025D50: + ldr r1, _08025D74 @ =gBattleMons + movs r0, 0x58 + muls r0, r3 + adds r1, r0, r1 + ldrh r0, [r1, 0x2C] + ldrh r3, [r1, 0x28] + cmp r0, r3 + bne _08025D80 + movs r0, 0 + strb r0, [r4, 0x9] + str r2, [r7] + ldr r1, _08025D78 @ =gBankTarget + ldrb r0, [r6] + strb r0, [r1] + ldr r1, _08025D7C @ =gBattleCommunication + movs r0, 0x1 + strb r0, [r1, 0x5] + b _08025DD0 + .align 2, 0 +_08025D74: .4byte gBattleMons +_08025D78: .4byte gBankTarget +_08025D7C: .4byte gBattleCommunication +_08025D80: + ldr r5, _08025DDC @ =gBattleMoveDamage + ldrh r0, [r1, 0x2C] + ldrb r1, [r4, 0x9] + movs r2, 0x3 + subs r2, r1 + movs r4, 0x1 + adds r1, r4, 0 + lsls r1, r2 + bl __divsi3 + str r0, [r5] + cmp r0, 0 + bne _08025D9C + str r4, [r5] +_08025D9C: + ldr r0, [r5] + negs r0, r0 + str r0, [r5] + ldr r2, _08025DE0 @ =0x02000000 + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r8 + ldrb r0, [r0, 0x9] + ldr r1, _08025DE4 @ =0x00016002 + adds r2, r1 + movs r3, 0 + strb r0, [r2] + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r8 + strb r3, [r0, 0x9] + ldr r0, [r7] + adds r0, 0x5 + str r0, [r7] + ldr r1, _08025DE8 @ =gBankTarget + ldrb r0, [r6] + strb r0, [r1] +_08025DD0: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08025DDC: .4byte gBattleMoveDamage +_08025DE0: .4byte 0x02000000 +_08025DE4: .4byte 0x00016002 +_08025DE8: .4byte gBankTarget + thumb_func_end sub_8025D00 + + thumb_func_start atk88_negativedamage +atk88_negativedamage: @ 8025DEC + push {lr} + ldr r2, _08025E14 @ =gBattleMoveDamage + ldr r0, _08025E18 @ =gHP_dealt + ldr r0, [r0] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + negs r0, r0 + str r0, [r2] + cmp r0, 0 + bne _08025E08 + movs r0, 0x1 + negs r0, r0 + str r0, [r2] +_08025E08: + ldr r1, _08025E1C @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08025E14: .4byte gBattleMoveDamage +_08025E18: .4byte gHP_dealt +_08025E1C: .4byte gBattlescriptCurrInstr + thumb_func_end atk88_negativedamage + + thumb_func_start sub_8025E20 +sub_8025E20: @ 8025E20 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r8, r3 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 24 + lsrs r5, r2, 24 + movs r0, 0 + mov r9, r0 + mov r10, r0 + movs r0, 0x40 + ands r0, r5 + cmp r0, 0 + beq _08025E54 + ldr r0, _08025E4C @ =gActiveBank + ldr r1, _08025E50 @ =gBankAttacker + b _08025E58 + .align 2, 0 +_08025E4C: .4byte gActiveBank +_08025E50: .4byte gBankAttacker +_08025E54: + ldr r0, _08025EF8 @ =gActiveBank + ldr r1, _08025EFC @ =gBankTarget +_08025E58: + ldrb r1, [r1] + strb r1, [r0] + movs r0, 0xBF + ands r5, r0 + movs r0, 0x80 + ands r0, r5 + cmp r0, 0 + beq _08025E72 + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 +_08025E72: + movs r0, 0x7F + ands r5, r0 + movs r0, 0x20 + ands r0, r5 + cmp r0, 0 + beq _08025E88 + mov r0, r10 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 +_08025E88: + movs r0, 0xDF + ands r5, r0 + ldr r1, _08025F00 @ =gBattleTextBuff1 + movs r4, 0 + movs r2, 0xFD + strb r2, [r1] + movs r0, 0x5 + strb r0, [r1, 0x1] + strb r7, [r1, 0x2] + movs r3, 0x1 + negs r3, r3 + mov r12, r3 + movs r0, 0xFF + strb r0, [r1, 0x3] + lsls r0, r6, 24 + cmp r0, 0 + blt _08025EAC + b _080261B0 +_08025EAC: + ldr r4, _08025F04 @ =gSideTimer + ldr r1, _08025EF8 @ =gActiveBank + ldrb r0, [r1] + bl GetBankIdentity + movs r1, 0x1 + ands r1, r0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x2] + cmp r0, 0 + beq _08025F54 + mov r2, r9 + cmp r2, 0 + bne _08025F54 + ldr r0, _08025F08 @ =gCurrentMove + ldrh r0, [r0] + cmp r0, 0xAE + beq _08025F84 + cmp r5, 0x1 + bne _08025F74 + ldr r4, _08025F0C @ =gSpecialStatuses + ldr r3, _08025EF8 @ =gActiveBank + ldrb r0, [r3] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r0, [r1] + lsls r0, 31 + cmp r0, 0 + beq _08025F14 + ldr r0, _08025F10 @ =gBattlescriptCurrInstr + mov r4, r8 + str r4, [r0] + b _08025F74 + .align 2, 0 +_08025EF8: .4byte gActiveBank +_08025EFC: .4byte gBankTarget +_08025F00: .4byte gBattleTextBuff1 +_08025F04: .4byte gSideTimer +_08025F08: .4byte gCurrentMove +_08025F0C: .4byte gSpecialStatuses +_08025F10: .4byte gBattlescriptCurrInstr +_08025F14: + mov r0, r8 + bl b_movescr_stack_push + ldr r0, _08025F40 @ =0x02000000 + ldr r6, _08025F44 @ =gActiveBank + ldrb r1, [r6] + ldr r2, _08025F48 @ =0x00016003 + adds r0, r2 + strb r1, [r0] + ldr r1, _08025F4C @ =gBattlescriptCurrInstr + ldr r0, _08025F50 @ =gUnknown_081D9128 + str r0, [r1] + ldrb r1, [r6] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r0] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0] + b _08025F74 + .align 2, 0 +_08025F40: .4byte 0x02000000 +_08025F44: .4byte gActiveBank +_08025F48: .4byte 0x00016003 +_08025F4C: .4byte gBattlescriptCurrInstr +_08025F50: .4byte gUnknown_081D9128 +_08025F54: + ldr r0, _08025F78 @ =gCurrentMove + ldrh r0, [r0] + cmp r0, 0xAE + beq _08025F84 + mov r3, r10 + cmp r3, 0x1 + beq _08025F84 + movs r0, 0 + bl sub_801C108 + lsls r0, 24 + cmp r0, 0 + beq _08025F84 + ldr r1, _08025F7C @ =gBattlescriptCurrInstr + ldr r0, _08025F80 @ =BattleScript_1D83D6 + str r0, [r1] +_08025F74: + movs r0, 0x1 + b _080262A4 + .align 2, 0 +_08025F78: .4byte gCurrentMove +_08025F7C: .4byte gBattlescriptCurrInstr +_08025F80: .4byte BattleScript_1D83D6 +_08025F84: + ldr r2, _08025FCC @ =gBattleMons + ldr r1, _08025FD0 @ =gActiveBank + ldrb r3, [r1] + movs r4, 0x58 + adds r0, r3, 0 + muls r0, r4 + adds r0, r2 + adds r0, 0x20 + ldrb r0, [r0] + mov r10, r2 + cmp r0, 0x1D + beq _08025FA0 + cmp r0, 0x49 + bne _08026040 +_08025FA0: + mov r0, r9 + cmp r0, 0 + bne _08026040 + ldr r0, _08025FD4 @ =gCurrentMove + ldrh r0, [r0] + cmp r0, 0xAE + beq _08026040 + cmp r5, 0x1 + bne _08025F74 + ldr r4, _08025FD8 @ =gSpecialStatuses + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + beq _08025FE0 + ldr r0, _08025FDC @ =gBattlescriptCurrInstr + mov r1, r8 + str r1, [r0] + b _08025F74 + .align 2, 0 +_08025FCC: .4byte gBattleMons +_08025FD0: .4byte gActiveBank +_08025FD4: .4byte gCurrentMove +_08025FD8: .4byte gSpecialStatuses +_08025FDC: .4byte gBattlescriptCurrInstr +_08025FE0: + mov r0, r8 + bl b_movescr_stack_push + ldr r0, _08026028 @ =0x02000000 + ldr r2, _0802602C @ =gActiveBank + ldrb r1, [r2] + ldr r3, _08026030 @ =0x00016003 + adds r0, r3 + strb r1, [r0] + ldr r1, _08026034 @ =gBattlescriptCurrInstr + ldr r0, _08026038 @ =gUnknown_081D989B + str r0, [r1] + ldr r1, _0802603C @ =gLastUsedAbility + ldrb r0, [r2] + movs r6, 0x58 + muls r0, r6 + add r0, r10 + adds r0, 0x20 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r2] + ldrb r1, [r1] + bl sub_81074C4 + ldr r0, _0802602C @ =gActiveBank + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r0] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0] + b _08025F74 + .align 2, 0 +_08026028: .4byte 0x02000000 +_0802602C: .4byte gActiveBank +_08026030: .4byte 0x00016003 +_08026034: .4byte gBattlescriptCurrInstr +_08026038: .4byte gUnknown_081D989B +_0802603C: .4byte gLastUsedAbility +_08026040: + ldr r1, _08026090 @ =gActiveBank + ldrb r0, [r1] + movs r4, 0x58 + muls r0, r4 + add r0, r10 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x33 + bne _080260A8 + mov r2, r9 + cmp r2, 0 + bne _080260A8 + cmp r7, 0x6 + bne _080260A8 + cmp r5, 0x1 + bne _08025F74 + mov r0, r8 + bl b_movescr_stack_push + ldr r0, _08026094 @ =0x02000000 + ldr r3, _08026090 @ =gActiveBank + ldrb r1, [r3] + ldr r6, _08026098 @ =0x00016003 + adds r0, r6 + strb r1, [r0] + ldr r1, _0802609C @ =gBattlescriptCurrInstr + ldr r0, _080260A0 @ =gUnknown_081D9903 + str r0, [r1] + ldr r1, _080260A4 @ =gLastUsedAbility + ldrb r0, [r3] + muls r0, r4 + add r0, r10 + adds r0, 0x20 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r3] + ldrb r1, [r1] + bl sub_81074C4 + b _08025F74 + .align 2, 0 +_08026090: .4byte gActiveBank +_08026094: .4byte 0x02000000 +_08026098: .4byte 0x00016003 +_0802609C: .4byte gBattlescriptCurrInstr +_080260A0: .4byte gUnknown_081D9903 +_080260A4: .4byte gLastUsedAbility +_080260A8: + ldr r1, _080260FC @ =gActiveBank + ldrb r0, [r1] + movs r4, 0x58 + muls r0, r4 + add r0, r10 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x34 + bne _08026114 + mov r2, r9 + cmp r2, 0 + bne _08026114 + cmp r7, 0x1 + bne _08026114 + cmp r5, 0x1 + beq _080260CA + b _08025F74 +_080260CA: + mov r0, r8 + bl b_movescr_stack_push + ldr r0, _08026100 @ =0x02000000 + ldr r3, _080260FC @ =gActiveBank + ldrb r1, [r3] + ldr r6, _08026104 @ =0x00016003 + adds r0, r6 + strb r1, [r0] + ldr r1, _08026108 @ =gBattlescriptCurrInstr + ldr r0, _0802610C @ =gUnknown_081D9903 + str r0, [r1] + ldr r1, _08026110 @ =gLastUsedAbility + ldrb r0, [r3] + muls r0, r4 + add r0, r10 + adds r0, 0x20 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r3] + ldrb r1, [r1] + bl sub_81074C4 + b _08025F74 + .align 2, 0 +_080260FC: .4byte gActiveBank +_08026100: .4byte 0x02000000 +_08026104: .4byte 0x00016003 +_08026108: .4byte gBattlescriptCurrInstr +_0802610C: .4byte gUnknown_081D9903 +_08026110: .4byte gLastUsedAbility +_08026114: + ldr r0, _080261A0 @ =gActiveBank + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + add r0, r10 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x13 + bne _0802612C + cmp r5, 0 + bne _0802612C + b _08025F74 +_0802612C: + lsls r0, r6, 24 + asrs r0, 28 + movs r1, 0x7 + ands r0, r1 + negs r0, r0 + lsls r0, 24 + ldr r3, _080261A4 @ =gBattleTextBuff2 + movs r4, 0 + movs r1, 0xFD + strb r1, [r3] + movs r2, 0x1 + lsrs r6, r0, 24 + asrs r0, 24 + subs r1, 0xFF + cmp r0, r1 + bne _08026156 + strb r4, [r3, 0x1] + movs r0, 0xD3 + strb r0, [r3, 0x2] + strb r4, [r3, 0x3] + movs r2, 0x4 +_08026156: + adds r0, r2, r3 + strb r4, [r0] + adds r2, 0x1 + adds r1, r2, r3 + movs r0, 0xD4 + strb r0, [r1] + adds r2, 0x1 + adds r0, r2, r3 + strb r4, [r0] + adds r2, 0x1 + adds r1, r2, r3 + movs r0, 0xFF + strb r0, [r1] + ldr r1, _080261A0 @ =gActiveBank + ldrb r2, [r1] + movs r0, 0x58 + muls r0, r2 + adds r0, r7, r0 + mov r1, r10 + adds r1, 0x18 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + cmp r0, 0 + beq _08026206 + movs r1, 0 + ldr r0, _080261A8 @ =gBankTarget + ldrb r0, [r0] + ldr r3, _080261AC @ =gBattleCommunication + mov r8, r3 + cmp r0, r2 + bne _0802619A + movs r1, 0x1 +_0802619A: + mov r4, r8 + strb r1, [r4, 0x5] + b _08026234 + .align 2, 0 +_080261A0: .4byte gActiveBank +_080261A4: .4byte gBattleTextBuff2 +_080261A8: .4byte gBankTarget +_080261AC: .4byte gBattleCommunication +_080261B0: + asrs r6, r0, 28 + movs r0, 0x7 + ands r6, r0 + ldr r3, _08026210 @ =gBattleTextBuff2 + strb r2, [r3] + movs r2, 0x1 + cmp r6, 0x2 + bne _080261CA + strb r4, [r3, 0x1] + movs r0, 0xD1 + strb r0, [r3, 0x2] + strb r4, [r3, 0x3] + movs r2, 0x4 +_080261CA: + adds r0, r2, r3 + strb r4, [r0] + adds r2, 0x1 + adds r1, r2, r3 + movs r0, 0xD2 + strb r0, [r1] + adds r2, 0x1 + adds r0, r2, r3 + strb r4, [r0] + adds r2, 0x1 + adds r1, r2, r3 + ldrb r0, [r1] + mov r2, r12 + orrs r0, r2 + strb r0, [r1] + ldr r2, _08026214 @ =gBattleMons + ldr r4, _08026218 @ =gActiveBank + ldrb r3, [r4] + movs r0, 0x58 + muls r0, r3 + adds r0, r7, r0 + adds r1, r2, 0 + adds r1, 0x18 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + mov r10, r2 + cmp r0, 0xC + bne _08026220 +_08026206: + ldr r1, _0802621C @ =gBattleCommunication + movs r0, 0x2 + strb r0, [r1, 0x5] + mov r8, r1 + b _08026234 + .align 2, 0 +_08026210: .4byte gBattleTextBuff2 +_08026214: .4byte gBattleMons +_08026218: .4byte gActiveBank +_0802621C: .4byte gBattleCommunication +_08026220: + movs r1, 0 + ldr r0, _080262B4 @ =gBankTarget + ldrb r0, [r0] + ldr r2, _080262B8 @ =gBattleCommunication + mov r8, r2 + cmp r0, r3 + bne _08026230 + movs r1, 0x1 +_08026230: + mov r3, r8 + strb r1, [r3, 0x5] +_08026234: + ldr r2, _080262BC @ =gActiveBank + ldrb r0, [r2] + movs r4, 0x58 + adds r1, r0, 0 + muls r1, r4 + adds r1, r7, r1 + mov r3, r10 + adds r3, 0x18 + adds r1, r3 + lsls r0, r6, 24 + asrs r0, 24 + ldrb r6, [r1] + adds r0, r6 + strb r0, [r1] + ldrb r0, [r2] + muls r0, r4 + adds r0, r7, r0 + adds r1, r0, r3 + movs r0, 0 + ldrsb r0, [r1, r0] + cmp r0, 0 + bge _08026264 + movs r0, 0 + strb r0, [r1] +_08026264: + ldr r1, _080262BC @ =gActiveBank + ldrb r0, [r1] + muls r0, r4 + adds r0, r7, r0 + adds r1, r0, r3 + movs r0, 0 + ldrsb r0, [r1, r0] + cmp r0, 0xC + ble _0802627A + movs r0, 0xC + strb r0, [r1] +_0802627A: + mov r2, r8 + ldrb r0, [r2, 0x5] + cmp r0, 0x2 + bne _080262A2 + movs r3, 0x1 + ands r3, r5 + cmp r3, 0 + beq _08026294 + ldr r0, _080262C0 @ =gBattleMoveFlags + ldrb r1, [r0] + movs r2, 0x1 + orrs r1, r2 + strb r1, [r0] +_08026294: + mov r4, r8 + ldrb r0, [r4, 0x5] + cmp r0, 0x2 + bne _080262A2 + cmp r3, 0 + bne _080262A2 + b _08025F74 +_080262A2: + movs r0, 0 +_080262A4: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080262B4: .4byte gBankTarget +_080262B8: .4byte gBattleCommunication +_080262BC: .4byte gActiveBank +_080262C0: .4byte gBattleMoveFlags + thumb_func_end sub_8025E20 + + thumb_func_start atk89_statbuffchange +atk89_statbuffchange: @ 80262C4 + push {r4,r5,lr} + ldr r5, _0802630C @ =gBattlescriptCurrInstr + ldr r2, [r5] + ldrb r3, [r2, 0x2] + ldrb r0, [r2, 0x3] + lsls r0, 8 + orrs r3, r0 + ldrb r0, [r2, 0x4] + lsls r0, 16 + orrs r3, r0 + ldrb r0, [r2, 0x5] + lsls r0, 24 + orrs r3, r0 + ldr r0, _08026310 @ =0x02000000 + ldr r1, _08026314 @ =0x0001601e + adds r0, r1 + ldrb r4, [r0] + movs r0, 0xF0 + ands r0, r4 + lsls r0, 24 + asrs r0, 24 + movs r1, 0xF + ands r1, r4 + ldrb r2, [r2, 0x1] + bl sub_8025E20 + lsls r0, 24 + cmp r0, 0 + bne _08026304 + ldr r0, [r5] + adds r0, 0x6 + str r0, [r5] +_08026304: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0802630C: .4byte gBattlescriptCurrInstr +_08026310: .4byte 0x02000000 +_08026314: .4byte 0x0001601e + thumb_func_end atk89_statbuffchange + + thumb_func_start atk8A_normalisebuffs +atk8A_normalisebuffs: @ 8026318 + push {r4-r7,lr} + movs r2, 0 + ldr r0, _08026360 @ =gNoOfAllBanks + ldrb r1, [r0] + ldr r0, _08026364 @ =gBattlescriptCurrInstr + mov r12, r0 + cmp r2, r1 + bge _08026350 + ldr r0, _08026368 @ =gBattleMons + movs r4, 0x6 + adds r5, r1, 0 + movs r7, 0x58 + adds r6, r0, 0 + adds r6, 0x18 +_08026334: + adds r3, r2, 0x1 + movs r1, 0x7 + adds r0, r2, 0 + muls r0, r7 + adds r0, r6 + adds r0, 0x7 +_08026340: + strb r4, [r0] + subs r0, 0x1 + subs r1, 0x1 + cmp r1, 0 + bge _08026340 + adds r2, r3, 0 + cmp r2, r5 + blt _08026334 +_08026350: + mov r1, r12 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08026360: .4byte gNoOfAllBanks +_08026364: .4byte gBattlescriptCurrInstr +_08026368: .4byte gBattleMons + thumb_func_end atk8A_normalisebuffs + + thumb_func_start atk8B_setbide +atk8B_setbide: @ 802636C + push {r4,r5,lr} + ldr r4, _080263C4 @ =gBattleMons + ldr r3, _080263C8 @ =gBankAttacker + ldrb r0, [r3] + movs r5, 0x58 + adds r2, r0, 0 + muls r2, r5 + adds r4, 0x50 + adds r2, r4 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 5 + orrs r0, r1 + str r0, [r2] + ldr r1, _080263CC @ =gLockedMove + ldrb r0, [r3] + lsls r0, 1 + adds r0, r1 + ldr r1, _080263D0 @ =gCurrentMove + ldrh r1, [r1] + movs r2, 0 + strh r1, [r0] + ldr r1, _080263D4 @ =gTakenDmg + ldrb r0, [r3] + lsls r0, 2 + adds r0, r1 + str r2, [r0] + ldrb r0, [r3] + adds r1, r0, 0 + muls r1, r5 + adds r1, r4 + ldr r0, [r1] + movs r2, 0x80 + lsls r2, 2 + orrs r0, r2 + str r0, [r1] + ldr r1, _080263D8 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080263C4: .4byte gBattleMons +_080263C8: .4byte gBankAttacker +_080263CC: .4byte gLockedMove +_080263D0: .4byte gCurrentMove +_080263D4: .4byte gTakenDmg +_080263D8: .4byte gBattlescriptCurrInstr + thumb_func_end atk8B_setbide + + thumb_func_start atk8C_confuseifrepeatingattackends +atk8C_confuseifrepeatingattackends: @ 80263DC + push {lr} + ldr r1, _0802640C @ =gBattleMons + ldr r0, _08026410 @ =gBankAttacker + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r0, [r0] + movs r1, 0xC0 + lsls r1, 4 + ands r0, r1 + cmp r0, 0 + bne _080263FE + ldr r1, _08026414 @ =gBattleCommunication + movs r0, 0x75 + strb r0, [r1, 0x3] +_080263FE: + ldr r1, _08026418 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0802640C: .4byte gBattleMons +_08026410: .4byte gBankAttacker +_08026414: .4byte gBattleCommunication +_08026418: .4byte gBattlescriptCurrInstr + thumb_func_end atk8C_confuseifrepeatingattackends + + thumb_func_start atk8D_setloopcounter +atk8D_setloopcounter: @ 802641C + push {r4,r5,lr} + ldr r0, _08026430 @ =gBattlescriptCurrInstr + ldr r0, [r0] + ldrb r1, [r0, 0x1] + cmp r1, 0 + beq _08026438 + ldr r0, _08026434 @ =gMultiHitCounter + strb r1, [r0] + b _08026452 + .align 2, 0 +_08026430: .4byte gBattlescriptCurrInstr +_08026434: .4byte gMultiHitCounter +_08026438: + ldr r4, _08026460 @ =gMultiHitCounter + bl Random + movs r5, 0x3 + ands r0, r5 + strb r0, [r4] + cmp r0, 0x1 + bls _0802644E + bl Random + ands r0, r5 +_0802644E: + adds r0, 0x2 + strb r0, [r4] +_08026452: + ldr r1, _08026464 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08026460: .4byte gMultiHitCounter +_08026464: .4byte gBattlescriptCurrInstr + thumb_func_end atk8D_setloopcounter + + thumb_func_start sub_8026468 +sub_8026468: @ 8026468 + push {r4,lr} + ldr r1, _080264A8 @ =0x02000000 + ldr r0, _080264AC @ =0x000160e0 + adds r2, r1, r0 + movs r3, 0 + movs r0, 0xFD + strb r0, [r2] + ldr r2, _080264B0 @ =0x000160e1 + adds r0, r1, r2 + movs r2, 0x1 + strb r2, [r0] + ldr r4, _080264B4 @ =0x000160e2 + adds r0, r1, r4 + strb r2, [r0] + adds r4, 0x1 + adds r0, r1, r4 + strb r2, [r0] + ldr r2, _080264B8 @ =0x000160e4 + adds r0, r1, r2 + strb r3, [r0] + adds r4, 0x2 + adds r1, r4 + movs r0, 0xFF + strb r0, [r1] + ldr r1, _080264BC @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080264A8: .4byte 0x02000000 +_080264AC: .4byte 0x000160e0 +_080264B0: .4byte 0x000160e1 +_080264B4: .4byte 0x000160e2 +_080264B8: .4byte 0x000160e4 +_080264BC: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8026468 + + thumb_func_start sub_80264C0 +sub_80264C0: @ 80264C0 + push {r4-r7,lr} + ldr r6, _080264F4 @ =gBattleMons + ldr r7, _080264F8 @ =gBankAttacker + ldrb r0, [r7] + movs r5, 0x58 + adds r1, r0, 0 + muls r1, r5 + adds r1, r6 + adds r1, 0x2A + ldr r4, _080264FC @ =gBankTarget + ldrb r3, [r4] + adds r0, r3, 0 + muls r0, r5 + adds r0, r6 + adds r0, 0x2A + ldrb r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + bcc _0802650C + ldr r0, _08026500 @ =0x02000000 + ldr r2, _08026504 @ =0x00016064 + adds r1, r3, r2 + adds r1, r0 + ldr r2, _08026508 @ =gBattlePartyID + lsls r0, r3, 1 + b _08026568 + .align 2, 0 +_080264F4: .4byte gBattleMons +_080264F8: .4byte gBankAttacker +_080264FC: .4byte gBankTarget +_08026500: .4byte 0x02000000 +_08026504: .4byte 0x00016064 +_08026508: .4byte gBattlePartyID +_0802650C: + bl Random + movs r3, 0xFF + ands r3, r0 + ldrb r0, [r7] + muls r0, r5 + adds r0, r6 + adds r0, 0x2A + ldrb r2, [r0] + ldrb r4, [r4] + adds r0, r4, 0 + muls r0, r5 + adds r0, r6 + adds r0, 0x2A + ldrb r1, [r0] + adds r2, r1 + adds r0, r3, 0 + muls r0, r2 + asrs r0, 8 + adds r0, 0x1 + lsrs r1, 2 + cmp r0, r1 + bhi _0802655C + ldr r3, _08026558 @ =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] + movs r0, 0 + b _08026576 + .align 2, 0 +_08026558: .4byte gBattlescriptCurrInstr +_0802655C: + ldr r0, _0802657C @ =0x02000000 + ldr r2, _08026580 @ =0x00016064 + adds r1, r4, r2 + adds r1, r0 + ldr r2, _08026584 @ =gBattlePartyID + lsls r0, r4, 1 +_08026568: + adds r0, r2 + ldrh r0, [r0] + strb r0, [r1] + ldr r1, _08026588 @ =gBattlescriptCurrInstr + ldr r0, _0802658C @ =gUnknown_081D90FC + str r0, [r1] + movs r0, 0x1 +_08026576: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0802657C: .4byte 0x02000000 +_08026580: .4byte 0x00016064 +_08026584: .4byte gBattlePartyID +_08026588: .4byte gBattlescriptCurrInstr +_0802658C: .4byte gUnknown_081D90FC + thumb_func_end sub_80264C0 + + thumb_func_start sub_8026590 +sub_8026590: @ 8026590 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r4, _08026628 @ =gBattleTypeFlags + ldrh r1, [r4] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + bne _080265A4 + b _0802687C +_080265A4: + ldr r5, _0802662C @ =gBankTarget + ldrb r0, [r5] + bl GetBankSide + lsls r0, 24 + ldr r1, _08026630 @ =gEnemyParty + mov r8, r1 + cmp r0, 0 + bne _080265BA + ldr r2, _08026634 @ =gPlayerParty + mov r8, r2 +_080265BA: + ldrh r1, [r4] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08026638 + movs r7, 0 + movs r6, 0 + ldrb r0, [r5] + bl sub_803FC34 + lsls r0, 24 + lsrs r0, 24 + bl sub_803FBFC + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bne _080265E0 + movs r6, 0x3 +_080265E0: + adds r5, r6, 0 + adds r0, r5, 0x3 + cmp r5, r0 + bge _08026678 +_080265E8: + movs r0, 0x64 + muls r0, r5 + mov r1, r8 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + bl GetMonData + cmp r0, 0 + beq _0802661A + adds r0, r4, 0 + movs r1, 0x2D + bl GetMonData + cmp r0, 0 + bne _0802661A + adds r0, r4, 0 + movs r1, 0x39 + bl GetMonData + cmp r0, 0 + beq _0802661A + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 +_0802661A: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r6, 0x3 + cmp r5, r0 + blt _080265E8 + b _08026678 + .align 2, 0 +_08026628: .4byte gBattleTypeFlags +_0802662C: .4byte gBankTarget +_08026630: .4byte gEnemyParty +_08026634: .4byte gPlayerParty +_08026638: + movs r7, 0 + movs r5, 0 +_0802663C: + movs r0, 0x64 + muls r0, r5 + mov r2, r8 + adds r4, r2, r0 + adds r0, r4, 0 + movs r1, 0xB + bl GetMonData + cmp r0, 0 + beq _0802666E + adds r0, r4, 0 + movs r1, 0x2D + bl GetMonData + cmp r0, 0 + bne _0802666E + adds r0, r4, 0 + movs r1, 0x39 + bl GetMonData + cmp r0, 0 + beq _0802666E + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 +_0802666E: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x5 + bls _0802663C +_08026678: + cmp r7, 0x1 + bhi _08026688 + ldr r0, _080266BC @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x41 + ands r0, r1 + cmp r0, 0x1 + bne _080266A0 +_08026688: + cmp r7, 0x2 + bhi _080266C4 + ldr r0, _080266BC @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080266C4 + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _080266C4 +_080266A0: + ldr r3, _080266C0 @ =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 _08026880 + .align 2, 0 +_080266BC: .4byte gBattleTypeFlags +_080266C0: .4byte gBattlescriptCurrInstr +_080266C4: + bl sub_80264C0 + lsls r0, 24 + cmp r0, 0 + bne _080266D0 + b _08026880 +_080266D0: + ldr r0, _08026710 @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08026774 +_080266DC: + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x3 + bl __umodsi3 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _08026714 @ =gBankTarget + ldrb r0, [r0] + bl sub_803FC34 + lsls r0, 24 + lsrs r0, 24 + bl sub_803FBFC + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bne _08026718 + adds r0, r6, 0x3 + lsls r0, 24 + lsrs r5, r0, 24 + b _0802671A + .align 2, 0 +_08026710: .4byte gBattleTypeFlags +_08026714: .4byte gBankTarget +_08026718: + adds r5, r6, 0 +_0802671A: + ldr r4, _0802676C @ =gBattlePartyID + ldr r0, _08026770 @ =gBankTarget + ldrb r2, [r0] + lsls r1, r2, 1 + adds r1, r4 + lsls r0, r5, 16 + lsrs r3, r0, 16 + ldrh r1, [r1] + cmp r3, r1 + beq _080266DC + movs r0, 0x2 + eors r2, r0 + lsls r0, r2, 1 + adds r0, r4 + ldrh r0, [r0] + cmp r3, r0 + beq _080266DC + movs r0, 0x64 + muls r0, r5 + mov r1, r8 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + bl GetMonData + cmp r0, 0 + beq _080266DC + adds r0, r4, 0 + movs r1, 0x2D + bl GetMonData + cmp r0, 0x1 + beq _080266DC + adds r0, r4, 0 + movs r1, 0x39 + bl GetMonData + cmp r0, 0 + beq _080266DC + b _08026832 + .align 2, 0 +_0802676C: .4byte gBattlePartyID +_08026770: .4byte gBankTarget +_08026774: + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080267E4 + ldr r6, _080267DC @ =gBattlePartyID +_0802677E: + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x6 + bl __umodsi3 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _080267E0 @ =gBankTarget + ldrb r1, [r0] + lsls r0, r1, 1 + adds r0, r6 + adds r2, r5, 0 + ldrh r0, [r0] + cmp r2, r0 + beq _0802677E + movs r0, 0x2 + eors r1, r0 + lsls r0, r1, 1 + adds r0, r6 + ldrh r0, [r0] + cmp r2, r0 + beq _0802677E + movs r0, 0x64 + muls r0, r5 + mov r2, r8 + adds r4, r2, r0 + adds r0, r4, 0 + movs r1, 0xB + bl GetMonData + cmp r0, 0 + beq _0802677E + adds r0, r4, 0 + movs r1, 0x2D + bl GetMonData + cmp r0, 0x1 + beq _0802677E + adds r0, r4, 0 + movs r1, 0x39 + bl GetMonData + cmp r0, 0 + beq _0802677E + b _08026832 + .align 2, 0 +_080267DC: .4byte gBattlePartyID +_080267E0: .4byte gBankTarget +_080267E4: + ldr r6, _0802686C @ =gBattlePartyID +_080267E6: + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x6 + bl __umodsi3 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _08026870 @ =gBankTarget + ldrb r0, [r0] + lsls r0, 1 + adds r0, r6 + ldrh r0, [r0] + cmp r5, r0 + beq _080267E6 + movs r0, 0x64 + muls r0, r5 + mov r1, r8 + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + bl GetMonData + cmp r0, 0 + beq _080267E6 + adds r0, r4, 0 + movs r1, 0x2D + bl GetMonData + cmp r0, 0x1 + beq _080267E6 + adds r0, r4, 0 + movs r1, 0x39 + bl GetMonData + cmp r0, 0 + beq _080267E6 +_08026832: + ldr r0, _08026874 @ =0x02000000 + ldr r4, _08026870 @ =gBankTarget + ldrb r1, [r4] + ldr r2, _08026878 @ =0x00016068 + adds r1, r2 + adds r1, r0 + strb r5, [r1] + bl IsLinkDoubleBattle + lsls r0, 24 + cmp r0, 0 + bne _08026850 + ldrb r0, [r4] + bl sub_8012258 +_08026850: + ldrb r0, [r4] + adds r1, r5, 0 + movs r2, 0 + bl sub_8094B6C + ldrb r1, [r4] + movs r0, 0x2 + eors r0, r1 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_8094B6C + b _08026880 + .align 2, 0 +_0802686C: .4byte gBattlePartyID +_08026870: .4byte gBankTarget +_08026874: .4byte 0x02000000 +_08026878: .4byte 0x00016068 +_0802687C: + bl sub_80264C0 +_08026880: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8026590 + + thumb_func_start sub_802688C +sub_802688C: @ 802688C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r6, 0 + ldr r2, _08026920 @ =gBattleMons + ldr r3, _08026924 @ =gBankAttacker + ldrb r1, [r3] + movs r0, 0x58 + muls r0, r1 + adds r1, r2, 0 + adds r1, 0xC + adds r0, r1 + ldrh r0, [r0] + mov r8, r2 + cmp r0, 0 + beq _080268CE + movs r5, 0x58 + adds r2, r1, 0 +_080268B4: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x3 + bhi _080268CE + lsls r1, r6, 1 + ldrb r0, [r3] + muls r0, r5 + adds r1, r0 + adds r1, r2 + ldrh r0, [r1] + cmp r0, 0 + bne _080268B4 +_080268CE: + movs r3, 0 + cmp r3, r6 + bcs _08026950 + ldr r0, _08026928 @ =gBattleMoves + mov r10, r0 + ldr r5, _08026920 @ =gBattleMons + mov r12, r5 + ldr r7, _08026924 @ =gBankAttacker + ldrb r0, [r7] + movs r4, 0x58 + adds r5, r0, 0 + muls r5, r4 + movs r0, 0xC + add r0, r12 + mov r9, r0 +_080268EC: + lsls r0, r3, 1 + adds r0, r5 + add r0, r9 + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + add r0, r10 + ldrb r2, [r0, 0x2] + cmp r2, 0x9 + bne _0802692E + mov r0, r8 + adds r1, r5, r0 + adds r0, r1, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0x7 + beq _0802691A + adds r0, r1, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0x7 + bne _0802692C +_0802691A: + movs r2, 0x7 + b _0802692E + .align 2, 0 +_08026920: .4byte gBattleMons +_08026924: .4byte gBankAttacker +_08026928: .4byte gBattleMoves +_0802692C: + movs r2, 0 +_0802692E: + ldrb r0, [r7] + muls r0, r4 + add r0, r12 + adds r1, r0, 0 + adds r1, 0x21 + ldrb r1, [r1] + cmp r2, r1 + beq _08026946 + adds r0, 0x22 + ldrb r0, [r0] + cmp r2, r0 + bne _08026950 +_08026946: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, r6 + bcc _080268EC +_08026950: + cmp r3, r6 + bne _08026974 + ldr r3, _08026970 @ =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 _08026A18 + .align 2, 0 +_08026970: .4byte gBattlescriptCurrInstr +_08026974: + movs r7, 0x3 + ldr r5, _080269CC @ =gBattleMoves + mov r9, r5 +_0802697A: + bl Random + adds r3, r0, 0 + ands r3, r7 + cmp r3, r6 + bcs _0802697A + ldr r4, _080269D0 @ =gBattleMons + lsls r1, r3, 1 + ldr r3, _080269D4 @ =gBankAttacker + ldrb r2, [r3] + movs r0, 0x58 + adds r5, r2, 0 + muls r5, r0 + adds r1, r5 + adds r0, r4, 0 + adds r0, 0xC + adds r1, r0 + ldrh r1, [r1] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + add r0, r9 + ldrb r2, [r0, 0x2] + mov r8, r4 + adds r4, r3, 0 + cmp r2, 0x9 + bne _080269DA + mov r0, r8 + adds r2, r5, r0 + adds r0, r2, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0x7 + beq _080269C8 + adds r0, r2, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0x7 + bne _080269D8 +_080269C8: + movs r2, 0x7 + b _080269DA + .align 2, 0 +_080269CC: .4byte gBattleMoves +_080269D0: .4byte gBattleMons +_080269D4: .4byte gBankAttacker +_080269D8: + movs r2, 0 +_080269DA: + ldrb r0, [r4] + movs r3, 0x58 + muls r0, r3 + add r0, r8 + adds r1, r0, 0 + adds r1, 0x21 + ldrb r5, [r1] + cmp r2, r5 + beq _0802697A + adds r0, 0x22 + ldrb r0, [r0] + cmp r2, r0 + beq _0802697A + strb r2, [r1] + ldrb r0, [r4] + muls r0, r3 + add r0, r8 + adds r0, 0x22 + strb r2, [r0] + ldr r1, _08026A28 @ =gBattleTextBuff1 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x3 + strb r0, [r1, 0x1] + strb r2, [r1, 0x2] + movs r0, 0xFF + strb r0, [r1, 0x3] + ldr r1, _08026A2C @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_08026A18: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08026A28: .4byte gBattleTextBuff1 +_08026A2C: .4byte gBattlescriptCurrInstr + thumb_func_end sub_802688C + + thumb_func_start atk91_givemoney +atk91_givemoney: @ 8026A30 + push {r4,lr} + ldr r0, _08026A8C @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08026AAC + ldr r4, _08026A90 @ =gPaydayMoney + ldrh r0, [r4] + cmp r0, 0 + beq _08026AAC + ldr r0, _08026A94 @ =gSaveBlock1 + 0x490 + ldrh r2, [r4] + ldr r1, _08026A98 @ =0x02000000 + ldr r3, _08026A9C @ =0x00016056 + adds r1, r3 + ldrb r1, [r1] + muls r1, r2 + bl sub_80B79B8 + ldr r1, _08026AA0 @ =gBattleTextBuff1 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x1 + strb r0, [r1, 0x1] + movs r0, 0x2 + strb r0, [r1, 0x2] + movs r0, 0x5 + strb r0, [r1, 0x3] + ldrh r2, [r4] + strb r2, [r1, 0x4] + movs r0, 0xFF + lsls r0, 8 + ands r0, r2 + lsrs r0, 8 + strb r0, [r1, 0x5] + movs r0, 0xFF + strb r0, [r1, 0x6] + ldr r4, _08026AA4 @ =gBattlescriptCurrInstr + ldr r0, [r4] + adds r0, 0x1 + bl b_movescr_stack_push + ldr r0, _08026AA8 @ =gUnknown_081D95DB + str r0, [r4] + b _08026AB4 + .align 2, 0 +_08026A8C: .4byte gBattleTypeFlags +_08026A90: .4byte gPaydayMoney +_08026A94: .4byte gSaveBlock1 + 0x490 +_08026A98: .4byte 0x02000000 +_08026A9C: .4byte 0x00016056 +_08026AA0: .4byte gBattleTextBuff1 +_08026AA4: .4byte gBattlescriptCurrInstr +_08026AA8: .4byte gUnknown_081D95DB +_08026AAC: + ldr r1, _08026ABC @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_08026AB4: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08026ABC: .4byte gBattlescriptCurrInstr + thumb_func_end atk91_givemoney + + thumb_func_start atk92_setlightscreen +atk92_setlightscreen: @ 8026AC0 + push {r4-r6,lr} + ldr r4, _08026AF0 @ =gBankAttacker + ldrb r0, [r4] + bl GetBankIdentity + ldr r6, _08026AF4 @ =gSideAffecting + movs r5, 0x1 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r6 + ldrh r1, [r1] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08026B00 + ldr r2, _08026AF8 @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08026AFC @ =gBattleCommunication + movs r0, 0 + b _08026B60 + .align 2, 0 +_08026AF0: .4byte gBankAttacker +_08026AF4: .4byte gSideAffecting +_08026AF8: .4byte gBattleMoveFlags +_08026AFC: .4byte gBattleCommunication +_08026B00: + ldrb r0, [r4] + bl GetBankIdentity + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r6 + ldrh r0, [r1] + movs r2, 0x2 + orrs r0, r2 + strh r0, [r1] + ldrb r0, [r4] + bl GetBankIdentity + ldr r2, _08026B50 @ =gSideTimer + adds r1, r5, 0 + ands r1, r0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x5 + strb r1, [r0, 0x1] + ldr r0, _08026B54 @ =gBattleTypeFlags + ldrh r1, [r0] + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _08026B5C + movs r0, 0x1 + bl CountAliveMons + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _08026B5C + ldr r1, _08026B58 @ =gBattleCommunication + movs r0, 0x4 + b _08026B60 + .align 2, 0 +_08026B50: .4byte gSideTimer +_08026B54: .4byte gBattleTypeFlags +_08026B58: .4byte gBattleCommunication +_08026B5C: + ldr r1, _08026B70 @ =gBattleCommunication + movs r0, 0x3 +_08026B60: + strb r0, [r1, 0x5] + ldr r1, _08026B74 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08026B70: .4byte gBattleCommunication +_08026B74: .4byte gBattlescriptCurrInstr + thumb_func_end atk92_setlightscreen + + thumb_func_start sub_8026B78 +sub_8026B78: @ 8026B78 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r7, _08026BA8 @ =gBattleMons + ldr r6, _08026BAC @ =gBankTarget + ldrb r2, [r6] + movs r5, 0x58 + adds r0, r2, 0 + muls r0, r5 + adds r1, r0, r7 + ldrh r0, [r1, 0x2E] + cmp r0, 0xAF + bne _08026BB4 + ldr r1, _08026BB0 @ =gEnigmaBerries + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r0, r1 + ldrb r4, [r0, 0x7] + ldrb r6, [r0, 0x1A] + b _08026BCE + .align 2, 0 +_08026BA8: .4byte gBattleMons +_08026BAC: .4byte gBankTarget +_08026BB0: .4byte gEnigmaBerries +_08026BB4: + ldrh r0, [r1, 0x2E] + bl ItemId_GetHoldEffect + lsls r0, 24 + lsrs r4, r0, 24 + ldrb r0, [r6] + muls r0, r5 + adds r0, r7 + ldrh r0, [r0, 0x2E] + bl ItemId_GetHoldEffectParam + lsls r0, 24 + lsrs r6, r0, 24 +_08026BCE: + ldr r1, _08026C4C @ =gStringBank + ldr r5, _08026C50 @ =gBankTarget + ldrb r0, [r5] + strb r0, [r1] + cmp r4, 0x27 + bne _08026C0C + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + cmp r0, r6 + bcs _08026C0C + ldrb r0, [r5] + movs r1, 0x27 + bl sub_81074F8 + ldr r2, _08026C54 @ =gSpecialStatuses + ldrb r1, [r5] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strb r1, [r0] +_08026C0C: + ldr r0, _08026C58 @ =gBattleMons + mov r8, r0 + ldr r1, _08026C50 @ =gBankTarget + ldrb r2, [r1] + movs r6, 0x58 + adds r0, r2, 0 + muls r0, r6 + mov r3, r8 + adds r5, r0, r3 + adds r0, r5, 0 + adds r0, 0x20 + ldrb r3, [r0] + mov r10, r8 + cmp r3, 0x5 + bne _08026C6C + ldr r2, _08026C5C @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r0, _08026C60 @ =gLastUsedAbility + strb r3, [r0] + ldr r1, _08026C64 @ =gBattlescriptCurrInstr + ldr r0, _08026C68 @ =gUnknown_081D9826 + str r0, [r1] + ldr r1, _08026C50 @ =gBankTarget + ldrb r0, [r1] + movs r1, 0x5 + bl sub_81074C4 + b _08026E40 + .align 2, 0 +_08026C4C: .4byte gStringBank +_08026C50: .4byte gBankTarget +_08026C54: .4byte gSpecialStatuses +_08026C58: .4byte gBattleMons +_08026C5C: .4byte gBattleMoveFlags +_08026C60: .4byte gLastUsedAbility +_08026C64: .4byte gBattlescriptCurrInstr +_08026C68: .4byte gUnknown_081D9826 +_08026C6C: + ldr r1, _08026CE0 @ =gStatuses3 + lsls r0, r2, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x18 + ands r0, r1 + cmp r0, 0 + bne _08026CF4 + ldr r1, _08026CE4 @ =gBattleMoves + ldr r0, _08026CE8 @ =gCurrentMove + ldrh r0, [r0] + lsls r2, r0, 1 + adds r2, r0 + lsls r2, 2 + adds r2, r1 + ldr r7, _08026CEC @ =gBankAttacker + ldrb r0, [r7] + muls r0, r6 + add r0, r10 + adds r0, 0x2A + ldrb r0, [r0] + adds r1, r5, 0 + adds r1, 0x2A + ldrb r1, [r1] + subs r0, r1 + ldrb r2, [r2, 0x3] + adds r0, r2 + lsls r0, 16 + lsrs r4, r0, 16 + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + adds r0, 0x1 + cmp r0, r4 + bge _08026CDC + ldrb r0, [r7] + adds r1, r0, 0 + muls r1, r6 + add r1, r10 + adds r1, 0x2A + ldr r2, _08026CF0 @ =gBankTarget + ldrb r0, [r2] + muls r0, r6 + add r0, r10 + adds r0, 0x2A + ldrb r1, [r1] + movs r4, 0x1 + ldrb r0, [r0] + cmp r1, r0 + bcs _08026D20 +_08026CDC: + mov r10, r8 + b _08026DE0 + .align 2, 0 +_08026CE0: .4byte gStatuses3 +_08026CE4: .4byte gBattleMoves +_08026CE8: .4byte gCurrentMove +_08026CEC: .4byte gBankAttacker +_08026CF0: .4byte gBankTarget +_08026CF4: + ldr r0, _08026D4C @ =gDisableStructs + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + adds r1, r0 + ldr r2, _08026D50 @ =gBankAttacker + ldrb r0, [r1, 0x15] + movs r4, 0 + ldrb r3, [r2] + cmp r0, r3 + bne _08026D20 + ldrb r0, [r2] + muls r0, r6 + add r0, r10 + adds r0, 0x2A + adds r1, r5, 0 + adds r1, 0x2A + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bcc _08026D20 + movs r4, 0x1 +_08026D20: + cmp r4, 0 + beq _08026DE0 + ldr r0, _08026D54 @ =gProtectStructs + ldr r1, _08026D58 @ =gBankTarget + ldrb r2, [r1] + lsls r1, r2, 4 + adds r1, r0 + ldrb r0, [r1] + lsls r0, 30 + cmp r0, 0 + bge _08026D64 + ldr r1, _08026D5C @ =gBattleMoveDamage + movs r0, 0x58 + muls r0, r2 + add r0, r10 + ldrh r0, [r0, 0x28] + subs r0, 0x1 + str r0, [r1] + ldr r2, _08026D60 @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x40 + b _08026DC6 + .align 2, 0 +_08026D4C: .4byte gDisableStructs +_08026D50: .4byte gBankAttacker +_08026D54: .4byte gProtectStructs +_08026D58: .4byte gBankTarget +_08026D5C: .4byte gBattleMoveDamage +_08026D60: .4byte gBattleMoveFlags +_08026D64: + ldr r0, _08026DA0 @ =gSpecialStatuses + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 2 + adds r1, r0 + ldrb r0, [r1] + lsrs r0, 7 + cmp r0, 0 + beq _08026DB4 + ldr r1, _08026DA4 @ =gBattleMoveDamage + movs r3, 0x58 + adds r0, r2, 0 + muls r0, r3 + add r0, r10 + ldrh r0, [r0, 0x28] + subs r0, 0x1 + str r0, [r1] + ldr r2, _08026DA8 @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08026DAC @ =gLastUsedItem + ldr r2, _08026DB0 @ =gBankTarget + ldrb r0, [r2] + muls r0, r3 + add r0, r10 + ldrh r0, [r0, 0x2E] + strh r0, [r1] + b _08026DCA + .align 2, 0 +_08026DA0: .4byte gSpecialStatuses +_08026DA4: .4byte gBattleMoveDamage +_08026DA8: .4byte gBattleMoveFlags +_08026DAC: .4byte gLastUsedItem +_08026DB0: .4byte gBankTarget +_08026DB4: + ldr r1, _08026DD4 @ =gBattleMoveDamage + movs r0, 0x58 + muls r0, r2 + add r0, r10 + ldrh r0, [r0, 0x28] + str r0, [r1] + ldr r2, _08026DD8 @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x10 +_08026DC6: + orrs r0, r1 + strb r0, [r2] +_08026DCA: + ldr r1, _08026DDC @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _08026E40 + .align 2, 0 +_08026DD4: .4byte gBattleMoveDamage +_08026DD8: .4byte gBattleMoveFlags +_08026DDC: .4byte gBattlescriptCurrInstr +_08026DE0: + ldr r2, _08026E10 @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r0, _08026E14 @ =gBankAttacker + ldrb r0, [r0] + movs r2, 0x58 + adds r1, r0, 0 + muls r1, r2 + add r1, r10 + adds r1, 0x2A + ldr r3, _08026E18 @ =gBankTarget + ldrb r0, [r3] + muls r0, r2 + add r0, r10 + adds r0, 0x2A + ldrb r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + bcc _08026E20 + ldr r1, _08026E1C @ =gBattleCommunication + movs r0, 0 + b _08026E24 + .align 2, 0 +_08026E10: .4byte gBattleMoveFlags +_08026E14: .4byte gBankAttacker +_08026E18: .4byte gBankTarget +_08026E1C: .4byte gBattleCommunication +_08026E20: + ldr r1, _08026E50 @ =gBattleCommunication + movs r0, 0x1 +_08026E24: + strb r0, [r1, 0x5] + ldr r3, _08026E54 @ =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] +_08026E40: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08026E50: .4byte gBattleCommunication +_08026E54: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8026B78 + + thumb_func_start atk94_gethalfcurrentenemyhp +atk94_gethalfcurrentenemyhp: @ 8026E58 + push {lr} + ldr r3, _08026E84 @ =gBattleMoveDamage + ldr r2, _08026E88 @ =gBattleMons + ldr r0, _08026E8C @ =gBankTarget + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrh r0, [r0, 0x28] + lsrs r0, 1 + str r0, [r3] + cmp r0, 0 + bne _08026E76 + movs r0, 0x1 + str r0, [r3] +_08026E76: + ldr r1, _08026E90 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08026E84: .4byte gBattleMoveDamage +_08026E88: .4byte gBattleMons +_08026E8C: .4byte gBankTarget +_08026E90: .4byte gBattlescriptCurrInstr + thumb_func_end atk94_gethalfcurrentenemyhp + + thumb_func_start sub_8026E94 +sub_8026E94: @ 8026E94 + push {lr} + ldr r2, _08026EB4 @ =gBattleWeather + ldrh r1, [r2] + movs r0, 0x18 + ands r0, r1 + cmp r0, 0 + beq _08026EC0 + ldr r2, _08026EB8 @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08026EBC @ =gBattleCommunication + movs r0, 0x2 + strb r0, [r1, 0x5] + b _08026ED2 + .align 2, 0 +_08026EB4: .4byte gBattleWeather +_08026EB8: .4byte gBattleMoveFlags +_08026EBC: .4byte gBattleCommunication +_08026EC0: + movs r0, 0x8 + strh r0, [r2] + ldr r1, _08026EE0 @ =gBattleCommunication + movs r0, 0x3 + strb r0, [r1, 0x5] + ldr r0, _08026EE4 @ =gWishFutureKnock + adds r0, 0x28 + movs r1, 0x5 + strb r1, [r0] +_08026ED2: + ldr r1, _08026EE8 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08026EE0: .4byte gBattleCommunication +_08026EE4: .4byte gWishFutureKnock +_08026EE8: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8026E94 + + thumb_func_start sub_8026EEC +sub_8026EEC: @ 8026EEC + push {r4,r5,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 + beq _08026F0A + b _0802701C +_08026F0A: + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0x4D + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + cmp r0, 0 + beq _08026F20 + b _0802701C +_08026F20: + ldr r2, _08026F94 @ =gBattleWeather + ldrh r1, [r2] + movs r0, 0x18 + ands r0, r1 + adds r4, r2, 0 + ldr r5, _08026F98 @ =gBankAttacker + cmp r0, 0 + beq _08026FAE + ldr r0, _08026F9C @ =gBattleMons + ldrb r2, [r5] + movs r1, 0x58 + muls r1, r2 + adds r3, r1, r0 + adds r0, r3, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0x5 + beq _08026FA8 + cmp r0, 0x8 + beq _08026FA8 + cmp r0, 0x4 + beq _08026FA8 + adds r0, r3, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0x5 + beq _08026FA8 + cmp r0, 0x8 + beq _08026FA8 + cmp r0, 0x4 + beq _08026FA8 + adds r0, r3, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x8 + beq _08026FA8 + ldr r0, _08026FA0 @ =gStatuses3 + lsls r1, r2, 2 + adds r1, r0 + ldr r1, [r1] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08026FA8 + movs r0, 0x80 + lsls r0, 11 + ands r1, r0 + cmp r1, 0 + bne _08026FA8 + ldr r1, _08026FA4 @ =gBattleMoveDamage + ldrh r0, [r3, 0x2C] + lsrs r0, 4 + str r0, [r1] + cmp r0, 0 + bne _08026FAE + movs r0, 0x1 + b _08026FAC + .align 2, 0 +_08026F94: .4byte gBattleWeather +_08026F98: .4byte gBankAttacker +_08026F9C: .4byte gBattleMons +_08026FA0: .4byte gStatuses3 +_08026FA4: .4byte gBattleMoveDamage +_08026FA8: + ldr r1, _08027004 @ =gBattleMoveDamage + movs r0, 0 +_08026FAC: + str r0, [r1] +_08026FAE: + ldrh r1, [r4] + movs r4, 0x80 + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + beq _08027024 + ldr r1, _08027008 @ =gBattleMons + ldrb r3, [r5] + movs r0, 0x58 + muls r0, r3 + adds r2, r0, r1 + adds r0, r2, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0xF + beq _08027010 + adds r0, r2, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0xF + beq _08027010 + ldr r0, _0802700C @ =gStatuses3 + lsls r1, r3, 2 + adds r1, r0 + ldr r1, [r1] + adds r0, r1, 0 + ands r0, r4 + cmp r0, 0 + bne _08027010 + movs r0, 0x80 + lsls r0, 11 + ands r1, r0 + cmp r1, 0 + bne _08027010 + ldr r1, _08027004 @ =gBattleMoveDamage + ldrh r0, [r2, 0x2C] + lsrs r0, 4 + str r0, [r1] + cmp r0, 0 + bne _08027024 + movs r0, 0x1 + str r0, [r1] + b _08027024 + .align 2, 0 +_08027004: .4byte gBattleMoveDamage +_08027008: .4byte gBattleMons +_0802700C: .4byte gStatuses3 +_08027010: + ldr r1, _08027018 @ =gBattleMoveDamage + movs r0, 0 + str r0, [r1] + b _08027024 + .align 2, 0 +_08027018: .4byte gBattleMoveDamage +_0802701C: + ldr r1, _08027050 @ =gBattleMoveDamage + movs r0, 0 + str r0, [r1] + ldr r5, _08027054 @ =gBankAttacker +_08027024: + ldr r0, _08027058 @ =gAbsentBankFlags + ldrb r1, [r0] + ldr r2, _0802705C @ =gBitTable + ldrb r0, [r5] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + beq _0802703E + ldr r1, _08027050 @ =gBattleMoveDamage + movs r0, 0 + str r0, [r1] +_0802703E: + ldr r1, _08027060 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08027050: .4byte gBattleMoveDamage +_08027054: .4byte gBankAttacker +_08027058: .4byte gAbsentBankFlags +_0802705C: .4byte gBitTable +_08027060: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8026EEC + + thumb_func_start sub_8027064 +sub_8027064: @ 8027064 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, _08027090 @ =gBankAttacker + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _0802709C + ldr r1, _08027094 @ =gBattlePartyID + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08027098 @ =gPlayerParty + b _080270AC + .align 2, 0 +_08027090: .4byte gBankAttacker +_08027094: .4byte gBattlePartyID +_08027098: .4byte gPlayerParty +_0802709C: + ldr r1, _080270D0 @ =gBattlePartyID + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _080270D4 @ =gEnemyParty +_080270AC: + adds r5, r1, r0 + ldr r4, _080270D8 @ =gBankTarget + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080270E0 + ldr r1, _080270D0 @ =gBattlePartyID + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _080270DC @ =gPlayerParty + b _080270F0 + .align 2, 0 +_080270D0: .4byte gBattlePartyID +_080270D4: .4byte gEnemyParty +_080270D8: .4byte gBankTarget +_080270DC: .4byte gPlayerParty +_080270E0: + ldr r1, _0802714C @ =gBattlePartyID + ldrb r0, [r4] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r1, r0 + ldr r0, _08027150 @ =gEnemyParty +_080270F0: + adds r4, r1, r0 + adds r0, r5, 0 + movs r1, 0xB + bl GetMonData + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 + adds r0, r5, 0 + movs r1, 0 + bl GetMonData + mov r9, r0 + adds r0, r4, 0 + movs r1, 0xB + bl GetMonData + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + adds r0, r4, 0 + movs r1, 0 + bl GetMonData + adds r7, r0, 0 + ldr r5, _08027154 @ =gBankTarget + ldrb r0, [r5] + movs r6, 0x58 + muls r0, r6 + ldr r1, _08027158 @ =gBattleMons + adds r0, r1 + adds r0, 0x20 + ldrb r2, [r0] + cmp r2, 0xC + bne _08027168 + ldr r1, _0802715C @ =gBattlescriptCurrInstr + ldr r0, _08027160 @ =gUnknown_081D98C9 + str r0, [r1] + ldr r0, _08027164 @ =gLastUsedAbility + strb r2, [r0] + ldrb r0, [r5] + movs r1, 0xC + bl sub_81074C4 + b _0802721C + .align 2, 0 +_0802714C: .4byte gBattlePartyID +_08027150: .4byte gEnemyParty +_08027154: .4byte gBankTarget +_08027158: .4byte gBattleMons +_0802715C: .4byte gBattlescriptCurrInstr +_08027160: .4byte gUnknown_081D98C9 +_08027164: .4byte gLastUsedAbility +_08027168: + mov r0, r10 + mov r1, r9 + bl GetGenderFromSpeciesAndPersonality + adds r4, r0, 0 + mov r0, r8 + adds r1, r7, 0 + bl GetGenderFromSpeciesAndPersonality + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + beq _080271CA + ldr r1, _080271E8 @ =gStatuses3 + ldrb r2, [r5] + lsls r0, r2, 2 + adds r0, r1 + ldr r0, [r0] + ldr r1, _080271EC @ =0x000400c0 + ands r0, r1 + cmp r0, 0 + bne _080271CA + adds r0, r2, 0 + muls r0, r6 + ldr r4, _080271F0 @ =gBattleMons + adds r4, 0x50 + adds r0, r4 + ldr r0, [r0] + movs r1, 0xF0 + lsls r1, 12 + ands r0, r1 + cmp r0, 0 + bne _080271CA + mov r0, r10 + mov r1, r9 + bl GetGenderFromSpeciesAndPersonality + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _080271CA + mov r0, r8 + adds r1, r7, 0 + bl GetGenderFromSpeciesAndPersonality + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _080271F8 +_080271CA: + ldr r3, _080271F4 @ =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 _0802721C + .align 2, 0 +_080271E8: .4byte gStatuses3 +_080271EC: .4byte 0x000400c0 +_080271F0: .4byte gBattleMons +_080271F4: .4byte gBattlescriptCurrInstr +_080271F8: + ldrb r0, [r5] + adds r2, r0, 0 + muls r2, r6 + adds r2, r4 + ldr r1, _0802722C @ =gBitTable + ldr r0, _08027230 @ =gBankAttacker + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + lsls r1, 16 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + ldr r1, _08027234 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802721C: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802722C: .4byte gBitTable +_08027230: .4byte gBankAttacker +_08027234: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8027064 + + thumb_func_start sub_8027238 +sub_8027238: @ 8027238 + push {r4-r7,lr} + ldr r0, _08027280 @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + bne _08027324 + ldr r5, _08027284 @ =gBattlescriptCurrInstr + ldr r1, [r5] + ldrb r0, [r1, 0x1] + cmp r0, 0x4 + beq _08027290 + bl sub_8015150 + ldr r4, _08027288 @ =gActiveBank + strb r0, [r4] + ldr r3, _0802728C @ =gBattleMons + ldrb r1, [r4] + movs r0, 0x58 + adds r2, r1, 0 + muls r2, r0 + adds r0, r3, 0 + adds r0, 0x4C + adds r0, r2, r0 + ldr r1, [r0] + adds r3, 0x50 + adds r2, r3 + ldr r2, [r2] + movs r0, 0 + bl EmitStatusIconUpdate + ldrb r0, [r4] + bl MarkBufferBankForExecution + ldr r0, [r5] + adds r0, 0x2 + str r0, [r5] + b _08027324 + .align 2, 0 +_08027280: .4byte gBattleExecBuffer +_08027284: .4byte gBattlescriptCurrInstr +_08027288: .4byte gActiveBank +_0802728C: .4byte gBattleMons +_08027290: + ldr r4, _0802732C @ =gActiveBank + ldr r5, _08027330 @ =gBankAttacker + ldrb r0, [r5] + strb r0, [r4] + ldr r6, _08027334 @ =gAbsentBankFlags + ldrb r1, [r6] + ldr r7, _08027338 @ =gBitTable + ldrb r2, [r4] + lsls r0, r2, 2 + adds r0, r7 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _080272CC + ldr r3, _0802733C @ =gBattleMons + movs r0, 0x58 + muls r2, r0 + adds r0, r3, 0 + adds r0, 0x4C + adds r0, r2, r0 + ldr r1, [r0] + adds r3, 0x50 + adds r2, r3 + ldr r2, [r2] + movs r0, 0 + bl EmitStatusIconUpdate + ldrb r0, [r4] + bl MarkBufferBankForExecution +_080272CC: + ldr r0, _08027340 @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0802731C + ldrb r0, [r5] + bl GetBankIdentity + movs r1, 0x2 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + bl GetBankByPlayerAI + strb r0, [r4] + ldrb r1, [r6] + ldrb r2, [r4] + lsls r0, r2, 2 + adds r0, r7 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _0802731C + ldr r3, _0802733C @ =gBattleMons + movs r0, 0x58 + muls r2, r0 + adds r0, r3, 0 + adds r0, 0x4C + adds r0, r2, r0 + ldr r1, [r0] + adds r3, 0x50 + adds r2, r3 + ldr r2, [r2] + movs r0, 0 + bl EmitStatusIconUpdate + ldrb r0, [r4] + bl MarkBufferBankForExecution +_0802731C: + ldr r1, _08027344 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x2 + str r0, [r1] +_08027324: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802732C: .4byte gActiveBank +_08027330: .4byte gBankAttacker +_08027334: .4byte gAbsentBankFlags +_08027338: .4byte gBitTable +_0802733C: .4byte gBattleMons +_08027340: .4byte gBattleTypeFlags +_08027344: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8027238 + + thumb_func_start sub_8027348 +sub_8027348: @ 8027348 + push {r4-r6,lr} + ldr r6, _08027378 @ =gSideTimer + ldr r4, _0802737C @ =gBankAttacker + ldrb r0, [r4] + bl GetBankIdentity + movs r5, 0x1 + adds r1, r5, 0 + ands r1, r0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrb r0, [r0, 0x2] + cmp r0, 0 + beq _08027388 + ldr r2, _08027380 @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r2] + ldr r0, _08027384 @ =gBattleCommunication + strb r5, [r0, 0x5] + b _080273C0 + .align 2, 0 +_08027378: .4byte gSideTimer +_0802737C: .4byte gBankAttacker +_08027380: .4byte gBattleMoveFlags +_08027384: .4byte gBattleCommunication +_08027388: + ldrb r0, [r4] + bl GetBankIdentity + adds r1, r5, 0 + ands r1, r0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + movs r1, 0x5 + strb r1, [r0, 0x2] + ldrb r0, [r4] + bl GetBankIdentity + ldr r2, _080273D0 @ =gSideAffecting + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r2 + ldrh r2, [r1] + movs r3, 0x80 + lsls r3, 1 + adds r0, r3, 0 + movs r3, 0 + orrs r0, r2 + strh r0, [r1] + ldr r0, _080273D4 @ =gBattleCommunication + strb r3, [r0, 0x5] +_080273C0: + ldr r1, _080273D8 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080273D0: .4byte gSideAffecting +_080273D4: .4byte gBattleCommunication +_080273D8: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8027348 + + thumb_func_start atk9A_setincreasedcriticalchance +atk9A_setincreasedcriticalchance: @ 80273DC + push {lr} + ldr r1, _0802740C @ =gBattleMons + ldr r0, _08027410 @ =gBankAttacker + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r0, r1 + ldr r1, [r0] + movs r3, 0x80 + lsls r3, 13 + adds r2, r1, 0 + ands r2, r3 + cmp r2, 0 + beq _0802741C + ldr r2, _08027414 @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08027418 @ =gBattleCommunication + movs r0, 0x1 + strb r0, [r1, 0x5] + b _08027424 + .align 2, 0 +_0802740C: .4byte gBattleMons +_08027410: .4byte gBankAttacker +_08027414: .4byte gBattleMoveFlags +_08027418: .4byte gBattleCommunication +_0802741C: + orrs r1, r3 + str r1, [r0] + ldr r0, _08027430 @ =gBattleCommunication + strb r2, [r0, 0x5] +_08027424: + ldr r1, _08027434 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08027430: .4byte gBattleCommunication +_08027434: .4byte gBattlescriptCurrInstr + thumb_func_end atk9A_setincreasedcriticalchance + + thumb_func_start atk9B_transformdataexecution +atk9B_transformdataexecution: @ 8027438 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r1, _08027490 @ =gUnknown_02024BE8 + ldr r2, _08027494 @ =0x0000ffff + adds r0, r2, 0 + strh r0, [r1] + ldr r1, _08027498 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + ldr r7, _0802749C @ =gBattleMons + ldr r0, _080274A0 @ =gBankTarget + mov r12, r0 + ldrb r1, [r0] + movs r6, 0x58 + adds r0, r1, 0 + muls r0, r6 + adds r5, r7, 0 + adds r5, 0x50 + adds r0, r5 + ldr r0, [r0] + movs r4, 0x80 + lsls r4, 14 + ands r0, r4 + cmp r0, 0 + bne _0802747E + ldr r0, _080274A4 @ =gStatuses3 + lsls r1, 2 + adds r1, r0 + ldr r2, [r1] + ldr r0, _080274A8 @ =0x000400c0 + ands r2, r0 + cmp r2, 0 + beq _080274B4 +_0802747E: + ldr r2, _080274AC @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r2] + ldr r1, _080274B0 @ =gBattleCommunication + movs r0, 0x1 + b _080275C8 + .align 2, 0 +_08027490: .4byte gUnknown_02024BE8 +_08027494: .4byte 0x0000ffff +_08027498: .4byte gBattlescriptCurrInstr +_0802749C: .4byte gBattleMons +_080274A0: .4byte gBankTarget +_080274A4: .4byte gStatuses3 +_080274A8: .4byte 0x000400c0 +_080274AC: .4byte gBattleMoveFlags +_080274B0: .4byte gBattleCommunication +_080274B4: + ldr r3, _08027588 @ =gBankAttacker + ldrb r0, [r3] + adds r1, r0, 0 + muls r1, r6 + adds r1, r5 + ldr r0, [r1] + orrs r0, r4 + str r0, [r1] + ldr r4, _0802758C @ =gDisableStructs + ldrb r1, [r3] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r4 + strh r2, [r0, 0x4] + ldrb r0, [r3] + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r2, [r1, 0xB] + movs r0, 0x10 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0xB] + ldrb r1, [r3] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r4 + mov r2, r12 + ldrb r1, [r2] + muls r1, r6 + adds r2, r7, 0 + adds r2, 0x48 + adds r1, r2 + ldr r1, [r1] + str r1, [r0] + ldrb r0, [r3] + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r1, r4 + ldrb r2, [r1, 0x18] + movs r0, 0xF + ands r0, r2 + strb r0, [r1, 0x18] + ldr r1, _08027590 @ =gBattleTextBuff1 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x6 + strb r0, [r1, 0x1] + mov r2, r12 + ldrb r0, [r2] + muls r0, r6 + adds r0, r7 + ldrh r0, [r0] + strb r0, [r1, 0x2] + ldrb r0, [r2] + muls r0, r6 + adds r0, r7 + ldrh r0, [r0] + lsrs r0, 8 + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldrb r0, [r3] + muls r0, r6 + adds r5, r0, r7 + ldrb r0, [r2] + muls r0, r6 + adds r2, r0, r7 + movs r4, 0 + adds r6, r3, 0 + ldr r0, _08027594 @ =gActiveBank + mov r8, r0 +_0802754C: + adds r0, r5, r4 + adds r1, r2, r4 + ldrb r1, [r1] + strb r1, [r0] + adds r4, 0x1 + cmp r4, 0x23 + bls _0802754C + movs r4, 0 + ldr r7, _08027598 @ =gBattleMoves + ldr r3, _0802759C @ =gUnknown_02024A8C + adds r5, r3, 0 + adds r5, 0x18 +_08027564: + lsls r1, r4, 1 + ldrb r2, [r6] + movs r0, 0x58 + muls r2, r0 + adds r1, r2 + adds r1, r3 + ldrh r1, [r1] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r7 + ldrb r1, [r0, 0x4] + cmp r1, 0x4 + bhi _080275A0 + adds r0, r4, r2 + adds r0, r5 + b _080275A6 + .align 2, 0 +_08027588: .4byte gBankAttacker +_0802758C: .4byte gDisableStructs +_08027590: .4byte gBattleTextBuff1 +_08027594: .4byte gActiveBank +_08027598: .4byte gBattleMoves +_0802759C: .4byte gUnknown_02024A8C +_080275A0: + adds r0, r4, r2 + adds r0, r5 + movs r1, 0x5 +_080275A6: + strb r1, [r0] + adds r4, 0x1 + cmp r4, 0x3 + ble _08027564 + ldrb r0, [r6] + mov r1, r8 + strb r0, [r1] + movs r0, 0 + movs r1, 0x2 + bl EmitResetActionMoveSelection + mov r2, r8 + ldrb r0, [r2] + bl MarkBufferBankForExecution + ldr r1, _080275D4 @ =gBattleCommunication + movs r0, 0 +_080275C8: + strb r0, [r1, 0x5] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080275D4: .4byte gBattleCommunication + thumb_func_end atk9B_transformdataexecution + + thumb_func_start sub_80275D8 +sub_80275D8: @ 80275D8 + push {r4-r7,lr} + ldr r7, _08027608 @ =gBattleMons + ldr r6, _0802760C @ =gBankAttacker + ldrb r0, [r6] + movs r5, 0x58 + muls r0, r5 + adds r3, r0, r7 + ldrh r0, [r3, 0x2C] + lsrs r1, r0, 2 + adds r2, r1, 0 + cmp r1, 0 + bne _080275F2 + movs r2, 0x1 +_080275F2: + ldrh r0, [r3, 0x28] + cmp r0, r2 + bhi _08027618 + ldr r1, _08027610 @ =gBattleMoveDamage + movs r0, 0 + str r0, [r1] + ldr r1, _08027614 @ =gBattleCommunication + movs r0, 0x1 + strb r0, [r1, 0x5] + b _0802766C + .align 2, 0 +_08027608: .4byte gBattleMons +_0802760C: .4byte gBankAttacker +_08027610: .4byte gBattleMoveDamage +_08027614: .4byte gBattleCommunication +_08027618: + ldr r4, _0802767C @ =gBattleMoveDamage + str r1, [r4] + cmp r1, 0 + bne _08027624 + movs r0, 0x1 + str r0, [r4] +_08027624: + ldrb r0, [r6] + adds r2, r0, 0 + muls r2, r5 + adds r3, r7, 0 + adds r3, 0x50 + adds r2, r3 + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 17 + orrs r0, r1 + str r0, [r2] + ldrb r0, [r6] + adds r1, r0, 0 + muls r1, r5 + adds r1, r3 + ldr r0, [r1] + ldr r2, _08027680 @ =0xffff1fff + ands r0, r2 + str r0, [r1] + ldr r2, _08027684 @ =gDisableStructs + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, [r4] + movs r2, 0 + strb r1, [r0, 0xA] + ldr r0, _08027688 @ =gBattleCommunication + strb r2, [r0, 0x5] + ldr r2, _0802768C @ =gHitMarker + ldr r0, [r2] + movs r1, 0x80 + lsls r1, 1 + orrs r0, r1 + str r0, [r2] +_0802766C: + ldr r1, _08027690 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802767C: .4byte gBattleMoveDamage +_08027680: .4byte 0xffff1fff +_08027684: .4byte gDisableStructs +_08027688: .4byte gBattleCommunication +_0802768C: .4byte gHitMarker +_08027690: .4byte gBattlescriptCurrInstr + thumb_func_end sub_80275D8 + + thumb_func_start sub_8027694 +sub_8027694: @ 8027694 + push {r4,r5,lr} + lsls r0, 16 + lsrs r2, r0, 16 + movs r3, 0 + ldr r0, _080276D4 @ =gUnknown_081FACFE + ldrh r1, [r0] + ldr r4, _080276D8 @ =0x0000fffe + adds r5, r0, 0 + cmp r1, r4 + beq _080276BC + cmp r1, r2 + beq _080276BC + adds r1, r5, 0 +_080276AE: + adds r1, 0x2 + adds r3, 0x1 + ldrh r0, [r1] + cmp r0, r4 + beq _080276BC + cmp r0, r2 + bne _080276AE +_080276BC: + lsls r0, r3, 1 + adds r0, r5 + ldrh r1, [r0] + ldr r0, _080276D8 @ =0x0000fffe + eors r1, r0 + negs r0, r1 + orrs r0, r1 + lsrs r0, 31 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080276D4: .4byte gUnknown_081FACFE +_080276D8: .4byte 0x0000fffe + thumb_func_end sub_8027694 + + thumb_func_start atk9D_copyattack +atk9D_copyattack: @ 80276DC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r0, _08027754 @ =gUnknown_02024BE8 + ldr r1, _08027758 @ =0x0000ffff + adds r7, r1, 0 + strh r7, [r0] + ldr r5, _0802775C @ =gLastUsedMove + ldr r6, _08027760 @ =gBankTarget + ldrb r0, [r6] + lsls r0, 1 + adds r0, r5 + ldrh r0, [r0] + bl sub_8027694 + lsls r0, 24 + cmp r0, 0 + bne _08027736 + ldr r3, _08027764 @ =gBattleMons + ldr r2, _08027768 @ =gBankAttacker + ldrb r1, [r2] + movs r0, 0x58 + adds r4, r1, 0 + muls r4, r0 + adds r0, r3, 0 + adds r0, 0x50 + adds r0, r4, r0 + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 14 + ands r1, r0 + mov r12, r3 + mov r9, r2 + cmp r1, 0 + bne _08027736 + ldrb r0, [r6] + lsls r0, 1 + adds r0, r5 + ldrh r1, [r0] + cmp r1, 0 + beq _08027736 + cmp r1, r7 + bne _08027770 +_08027736: + ldr r3, _0802776C @ =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 _080278A8 + .align 2, 0 +_08027754: .4byte gUnknown_02024BE8 +_08027758: .4byte 0x0000ffff +_0802775C: .4byte gLastUsedMove +_08027760: .4byte gBankTarget +_08027764: .4byte gBattleMons +_08027768: .4byte gBankAttacker +_0802776C: .4byte gBattlescriptCurrInstr +_08027770: + movs r2, 0 + mov r3, r12 + adds r3, 0xC + adds r0, r4, r3 + ldrh r0, [r0] + ldr r4, _08027800 @ =gBattlescriptCurrInstr + mov r10, r4 + cmp r0, r1 + beq _080277AA + mov r8, r3 + adds r7, r5, 0 + adds r5, r6, 0 + mov r4, r9 + movs r3, 0x58 +_0802778C: + adds r2, 0x1 + cmp r2, 0x3 + bgt _080277AA + lsls r1, r2, 1 + ldrb r0, [r4] + muls r0, r3 + adds r1, r0 + add r1, r8 + ldrb r0, [r5] + lsls r0, 1 + adds r0, r7 + ldrh r1, [r1] + ldrh r0, [r0] + cmp r1, r0 + bne _0802778C +_080277AA: + cmp r2, 0x4 + bne _0802788C + ldr r5, _08027804 @ =gCurrMovePos + ldrb r1, [r5] + lsls r1, 1 + mov r2, r9 + ldrb r0, [r2] + movs r6, 0x58 + muls r0, r6 + adds r1, r0 + mov r0, r12 + adds r0, 0xC + adds r1, r0 + ldr r2, _08027808 @ =gLastUsedMove + ldr r3, _0802780C @ =gBankTarget + ldrb r0, [r3] + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + strh r0, [r1] + ldr r4, _08027810 @ =gBattleMoves + ldrb r0, [r3] + lsls r0, 1 + adds r0, r2 + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r4, [r0, 0x4] + cmp r4, 0x4 + bhi _08027814 + mov r1, r9 + ldrb r0, [r1] + muls r0, r6 + ldrb r1, [r5] + adds r0, r1 + mov r1, r12 + adds r1, 0x24 + adds r0, r1 + strb r4, [r0] + b _08027828 + .align 2, 0 +_08027800: .4byte gBattlescriptCurrInstr +_08027804: .4byte gCurrMovePos +_08027808: .4byte gLastUsedMove +_0802780C: .4byte gBankTarget +_08027810: .4byte gBattleMoves +_08027814: + mov r4, r9 + ldrb r0, [r4] + muls r0, r6 + ldrb r1, [r5] + adds r0, r1 + mov r1, r12 + adds r1, 0x24 + adds r0, r1 + movs r1, 0x5 + strb r1, [r0] +_08027828: + ldr r1, _08027880 @ =gBattleTextBuff1 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x2 + strb r0, [r1, 0x1] + ldrb r0, [r3] + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + strb r0, [r1, 0x2] + ldrb r0, [r3] + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + lsrs r0, 8 + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r1, _08027884 @ =gDisableStructs + mov r2, r9 + ldrb r0, [r2] + lsls r2, r0, 3 + subs r2, r0 + lsls r2, 2 + adds r2, r1 + ldrb r4, [r2, 0x18] + lsrs r3, r4, 4 + ldr r1, _08027888 @ =gBitTable + ldrb r0, [r5] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + orrs r1, r3 + lsls r1, 4 + movs r0, 0xF + ands r0, r4 + orrs r0, r1 + strb r0, [r2, 0x18] + mov r4, r10 + ldr r0, [r4] + adds r0, 0x5 + str r0, [r4] + b _080278A8 + .align 2, 0 +_08027880: .4byte gBattleTextBuff1 +_08027884: .4byte gDisableStructs +_08027888: .4byte gBitTable +_0802788C: + mov r0, r10 + ldr r2, [r0] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + mov r2, r10 + str r1, [r2] +_080278A8: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end atk9D_copyattack + + thumb_func_start sub_80278B8 +sub_80278B8: @ 80278B8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r7, _08027938 @ =gCurrentMove + movs r6, 0xB1 + lsls r6, 1 + ldr r5, _0802793C @ =gUnknown_081FACFE + ldr r0, _08027940 @ =gBattlescriptCurrInstr + mov r8, r0 +_080278CA: + bl Random + ldr r2, _08027944 @ =0x000001ff + adds r1, r2, 0 + ands r0, r1 + adds r0, 0x1 + strh r0, [r7] + cmp r0, r6 + bhi _080278CA + movs r0, 0x3 +_080278DE: + subs r0, 0x1 + cmp r0, 0 + bge _080278DE + ldr r4, _08027938 @ =gCurrentMove + ldrh r2, [r4] + ldr r3, _08027948 @ =0x0000ffff + subs r0, r5, 0x2 +_080278EC: + adds r0, 0x2 + ldrh r1, [r0] + cmp r1, r2 + beq _080278F8 + cmp r1, r3 + bne _080278EC +_080278F8: + ldr r0, _08027948 @ =0x0000ffff + cmp r1, r0 + bne _080278CA + ldr r2, _0802794C @ =gHitMarker + ldr r0, [r2] + ldr r1, _08027950 @ =0xfffffbff + ands r0, r1 + str r0, [r2] + ldr r3, _08027954 @ =gUnknown_081D6BBC + ldr r2, _08027958 @ =gBattleMoves + ldrh r1, [r4] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r3 + ldr r0, [r0] + mov r1, r8 + str r0, [r1] + ldrh r0, [r4] + movs r1, 0 + bl sub_801B5C0 + ldr r1, _0802795C @ =gBankTarget + strb r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08027938: .4byte gCurrentMove +_0802793C: .4byte gUnknown_081FACFE +_08027940: .4byte gBattlescriptCurrInstr +_08027944: .4byte 0x000001ff +_08027948: .4byte 0x0000ffff +_0802794C: .4byte gHitMarker +_08027950: .4byte 0xfffffbff +_08027954: .4byte gUnknown_081D6BBC +_08027958: .4byte gBattleMoves +_0802795C: .4byte gBankTarget + thumb_func_end sub_80278B8 + + thumb_func_start sub_8027960 +sub_8027960: @ 8027960 + ldr r3, _08027980 @ =gBattleMoveDamage + ldr r2, _08027984 @ =gBattleMons + ldr r0, _08027988 @ =gBankAttacker + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x2A + ldrb r0, [r0] + str r0, [r3] + ldr r1, _0802798C @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + bx lr + .align 2, 0 +_08027980: .4byte gBattleMoveDamage +_08027984: .4byte gBattleMons +_08027988: .4byte gBankAttacker +_0802798C: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8027960 + + thumb_func_start atkA0_psywavedamageeffect +atkA0_psywavedamageeffect: @ 8027990 + push {r4,lr} + movs r4, 0xF +_08027994: + bl Random + adds r3, r4, 0 + ands r3, r0 + cmp r3, 0xA + bgt _08027994 + lsls r0, r3, 2 + adds r0, r3 + lsls r3, r0, 1 + ldr r4, _080279D4 @ =gBattleMoveDamage + ldr r2, _080279D8 @ =gBattleMons + ldr r0, _080279DC @ =gBankAttacker + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x2A + ldrb r1, [r0] + adds r0, r3, 0 + adds r0, 0x32 + muls r0, r1 + movs r1, 0x64 + bl __divsi3 + str r0, [r4] + ldr r1, _080279E0 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080279D4: .4byte gBattleMoveDamage +_080279D8: .4byte gBattleMons +_080279DC: .4byte gBankAttacker +_080279E0: .4byte gBattlescriptCurrInstr + thumb_func_end atkA0_psywavedamageeffect + + thumb_func_start atkA1_counterdamagecalculator +atkA1_counterdamagecalculator: @ 80279E4 + push {r4-r6,lr} + ldr r4, _08027A54 @ =gBankAttacker + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + lsrs r6, r0, 24 + ldr r5, _08027A58 @ =gProtectStructs + ldrb r0, [r4] + lsls r0, 4 + adds r0, r5 + ldrb r0, [r0, 0xC] + bl GetBankSide + lsls r0, 24 + lsrs r2, r0, 24 + ldrb r0, [r4] + lsls r1, r0, 4 + adds r0, r5, 0x4 + adds r0, r1, r0 + ldr r3, [r0] + cmp r3, 0 + beq _08027A98 + cmp r6, r2 + beq _08027A98 + ldr r6, _08027A5C @ =gBattleMons + adds r0, r1, r5 + ldrb r0, [r0, 0xC] + movs r4, 0x58 + muls r0, r4 + adds r0, r6 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _08027A98 + ldr r1, _08027A60 @ =gBattleMoveDamage + lsls r0, r3, 1 + str r0, [r1] + ldr r1, _08027A64 @ =gSideTimer + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r1, r0, r1 + ldrb r0, [r1, 0x8] + cmp r0, 0 + beq _08027A6C + ldrb r1, [r1, 0x9] + adds r0, r1, 0 + muls r0, r4 + adds r0, r6 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _08027A6C + ldr r0, _08027A68 @ =gBankTarget + strb r1, [r0] + b _08027A7C + .align 2, 0 +_08027A54: .4byte gBankAttacker +_08027A58: .4byte gProtectStructs +_08027A5C: .4byte gBattleMons +_08027A60: .4byte gBattleMoveDamage +_08027A64: .4byte gSideTimer +_08027A68: .4byte gBankTarget +_08027A6C: + ldr r2, _08027A88 @ =gBankTarget + ldr r1, _08027A8C @ =gProtectStructs + ldr r0, _08027A90 @ =gBankAttacker + ldrb r0, [r0] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0, 0xC] + strb r0, [r2] +_08027A7C: + ldr r1, _08027A94 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _08027AC8 + .align 2, 0 +_08027A88: .4byte gBankTarget +_08027A8C: .4byte gProtectStructs +_08027A90: .4byte gBankAttacker +_08027A94: .4byte gBattlescriptCurrInstr +_08027A98: + ldr r2, _08027AD0 @ =gSpecialStatuses + ldr r0, _08027AD4 @ =gBankAttacker + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x20 + orrs r1, r2 + strb r1, [r0] + ldr r3, _08027AD8 @ =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] +_08027AC8: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08027AD0: .4byte gSpecialStatuses +_08027AD4: .4byte gBankAttacker +_08027AD8: .4byte gBattlescriptCurrInstr + thumb_func_end atkA1_counterdamagecalculator + + thumb_func_start atkA2_mirrorcoatdamagecalculator +atkA2_mirrorcoatdamagecalculator: @ 8027ADC + push {r4-r6,lr} + ldr r4, _08027B4C @ =gBankAttacker + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + lsrs r6, r0, 24 + ldr r5, _08027B50 @ =gProtectStructs + ldrb r0, [r4] + lsls r0, 4 + adds r0, r5 + ldrb r0, [r0, 0xD] + bl GetBankSide + lsls r0, 24 + lsrs r2, r0, 24 + ldrb r0, [r4] + lsls r1, r0, 4 + adds r0, r5, 0 + adds r0, 0x8 + adds r0, r1, r0 + ldr r3, [r0] + cmp r3, 0 + beq _08027B90 + cmp r6, r2 + beq _08027B90 + ldr r6, _08027B54 @ =gBattleMons + adds r0, r1, r5 + ldrb r0, [r0, 0xD] + movs r4, 0x58 + muls r0, r4 + adds r0, r6 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _08027B90 + ldr r1, _08027B58 @ =gBattleMoveDamage + lsls r0, r3, 1 + str r0, [r1] + ldr r1, _08027B5C @ =gSideTimer + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r1, r0, r1 + ldrb r0, [r1, 0x8] + cmp r0, 0 + beq _08027B64 + ldrb r1, [r1, 0x9] + adds r0, r1, 0 + muls r0, r4 + adds r0, r6 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _08027B64 + ldr r0, _08027B60 @ =gBankTarget + strb r1, [r0] + b _08027B74 + .align 2, 0 +_08027B4C: .4byte gBankAttacker +_08027B50: .4byte gProtectStructs +_08027B54: .4byte gBattleMons +_08027B58: .4byte gBattleMoveDamage +_08027B5C: .4byte gSideTimer +_08027B60: .4byte gBankTarget +_08027B64: + ldr r2, _08027B80 @ =gBankTarget + ldr r1, _08027B84 @ =gProtectStructs + ldr r0, _08027B88 @ =gBankAttacker + ldrb r0, [r0] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0, 0xD] + strb r0, [r2] +_08027B74: + ldr r1, _08027B8C @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _08027BC0 + .align 2, 0 +_08027B80: .4byte gBankTarget +_08027B84: .4byte gProtectStructs +_08027B88: .4byte gBankAttacker +_08027B8C: .4byte gBattlescriptCurrInstr +_08027B90: + ldr r2, _08027BC8 @ =gSpecialStatuses + ldr r0, _08027BCC @ =gBankAttacker + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0] + movs r2, 0x20 + orrs r1, r2 + strb r1, [r0] + ldr r3, _08027BD0 @ =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] +_08027BC0: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08027BC8: .4byte gSpecialStatuses +_08027BCC: .4byte gBankAttacker +_08027BD0: .4byte gBattlescriptCurrInstr + thumb_func_end atkA2_mirrorcoatdamagecalculator + + thumb_func_start atkA3_disablelastusedattack +atkA3_disablelastusedattack: @ 8027BD4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + movs r4, 0 + ldr r2, _08027CD4 @ =gBattleMons + ldr r3, _08027CD8 @ =gBankTarget + ldrb r1, [r3] + movs r0, 0x58 + muls r0, r1 + adds r7, r2, 0 + adds r7, 0xC + adds r0, r7 + ldr r5, _08027CDC @ =gLastUsedMove + lsls r1, 1 + adds r1, r5 + ldrh r0, [r0] + mov r9, r2 + adds r6, r3, 0 + ldr r2, _08027CE0 @ =gDisableStructs + mov r8, r2 + ldrh r1, [r1] + cmp r0, r1 + beq _08027C28 + mov r12, r6 + movs r3, 0x58 +_08027C08: + adds r4, 0x1 + cmp r4, 0x3 + bgt _08027C28 + lsls r2, r4, 1 + mov r0, r12 + ldrb r1, [r0] + adds r0, r1, 0 + muls r0, r3 + adds r2, r0 + adds r2, r7 + lsls r1, 1 + adds r1, r5 + ldrh r0, [r2] + ldrh r1, [r1] + cmp r0, r1 + bne _08027C08 +_08027C28: + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r8 + ldrh r0, [r0, 0x4] + cmp r0, 0 + bne _08027CEC + cmp r4, 0x4 + beq _08027CEC + movs r5, 0x58 + adds r0, r1, 0 + muls r0, r5 + adds r0, r4, r0 + mov r1, r9 + adds r1, 0x24 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _08027CEC + ldr r1, _08027CE4 @ =gBattleTextBuff1 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x2 + strb r0, [r1, 0x1] + lsls r2, r4, 1 + ldrb r0, [r6] + muls r0, r5 + adds r0, r2, r0 + mov r3, r9 + adds r3, 0xC + adds r0, r3 + ldrh r0, [r0] + strb r0, [r1, 0x2] + ldrb r0, [r6] + muls r0, r5 + adds r0, r2, r0 + adds r0, r3 + ldrh r0, [r0] + lsrs r0, 8 + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldrb r1, [r6] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r8 + muls r1, r5 + adds r2, r1 + adds r2, r3 + ldrh r1, [r2] + strh r1, [r0, 0x4] + bl Random + ldrb r2, [r6] + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + add r1, r8 + movs r2, 0x3 + ands r2, r0 + adds r2, 0x2 + ldrb r3, [r1, 0xB] + movs r0, 0x10 + negs r0, r0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0xB] + ldrb r0, [r6] + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + add r1, r8 + ldrb r3, [r1, 0xB] + lsls r2, r3, 28 + lsrs r2, 24 + movs r0, 0xF + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0xB] + ldr r1, _08027CE8 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _08027D06 + .align 2, 0 +_08027CD4: .4byte gBattleMons +_08027CD8: .4byte gBankTarget +_08027CDC: .4byte gLastUsedMove +_08027CE0: .4byte gDisableStructs +_08027CE4: .4byte gBattleTextBuff1 +_08027CE8: .4byte gBattlescriptCurrInstr +_08027CEC: + ldr r3, _08027D14 @ =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] +_08027D06: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08027D14: .4byte gBattlescriptCurrInstr + thumb_func_end atkA3_disablelastusedattack + + thumb_func_start atkA4_setencore +atkA4_setencore: @ 8027D18 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r5, 0 + ldr r3, _08027E0C @ =gBattleMons + ldr r4, _08027E10 @ =gBankTarget + ldrb r1, [r4] + movs r0, 0x58 + muls r0, r1 + adds r6, r3, 0 + adds r6, 0xC + adds r0, r6 + ldr r2, _08027E14 @ =gLastUsedMove + lsls r1, 1 + adds r1, r2 + ldrh r0, [r0] + mov r10, r3 + mov r8, r2 + ldr r2, _08027E18 @ =gDisableStructs + mov r9, r2 + ldrh r1, [r1] + cmp r0, r1 + beq _08027D72 + mov r12, r4 + adds r7, r6, 0 + mov r6, r8 + movs r3, 0x58 +_08027D52: + adds r5, 0x1 + cmp r5, 0x3 + bgt _08027D72 + lsls r2, r5, 1 + mov r0, r12 + ldrb r1, [r0] + adds r0, r1, 0 + muls r0, r3 + adds r2, r0 + adds r2, r7 + lsls r1, 1 + adds r1, r6 + ldrh r0, [r2] + ldrh r1, [r1] + cmp r0, r1 + bne _08027D52 +_08027D72: + ldrb r0, [r4] + lsls r0, 1 + add r0, r8 + ldrh r2, [r0] + cmp r2, 0xA5 + beq _08027D86 + cmp r2, 0xE3 + beq _08027D86 + cmp r2, 0x77 + bne _08027D88 +_08027D86: + movs r5, 0x4 +_08027D88: + ldrb r1, [r4] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + mov r2, r9 + adds r3, r0, r2 + ldrh r0, [r3, 0x6] + cmp r0, 0 + bne _08027E20 + cmp r5, 0x4 + beq _08027E20 + movs r0, 0x58 + adds r2, r1, 0 + muls r2, r0 + adds r0, r5, r2 + mov r1, r10 + adds r1, 0x24 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _08027E20 + lsls r0, r5, 1 + adds r0, r2 + subs r1, 0x18 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r3, 0x6] + ldrb r1, [r4] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + add r0, r9 + strb r5, [r0, 0xC] + bl Random + ldrb r2, [r4] + lsls r1, r2, 3 + subs r1, r2 + lsls r1, 2 + add r1, r9 + movs r2, 0x3 + ands r2, r0 + adds r2, 0x3 + ldrb r3, [r1, 0xE] + movs r0, 0x10 + negs r0, r0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0xE] + ldrb r0, [r4] + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + add r1, r9 + ldrb r3, [r1, 0xE] + lsls r2, r3, 28 + lsrs r2, 24 + movs r0, 0xF + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0xE] + ldr r1, _08027E1C @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _08027E3A + .align 2, 0 +_08027E0C: .4byte gBattleMons +_08027E10: .4byte gBankTarget +_08027E14: .4byte gLastUsedMove +_08027E18: .4byte gDisableStructs +_08027E1C: .4byte gBattlescriptCurrInstr +_08027E20: + ldr r3, _08027E48 @ =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] +_08027E3A: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08027E48: .4byte gBattlescriptCurrInstr + thumb_func_end atkA4_setencore + + thumb_func_start sub_8027E4C +sub_8027E4C: @ 8027E4C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r7, _08027EEC @ =gBattleMons + ldr r0, _08027EF0 @ =gBankTarget + mov r8, r0 + ldrb r0, [r0] + movs r6, 0x58 + adds r2, r0, 0 + muls r2, r6 + adds r0, r7, 0 + adds r0, 0x50 + adds r0, r2, r0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 17 + ands r0, r1 + cmp r0, 0 + bne _08027F18 + ldr r1, _08027EF4 @ =gBankAttacker + mov r12, r1 + ldrb r0, [r1] + muls r0, r6 + adds r0, r7 + ldrh r4, [r0, 0x28] + adds r0, r2, r7 + ldrh r2, [r0, 0x28] + adds r4, r2 + asrs r4, 1 + ldr r5, _08027EF8 @ =gBattleMoveDamage + mov r9, r5 + subs r2, r4 + str r2, [r5] + ldr r3, _08027EFC @ =0x02000000 + ldr r1, _08027F00 @ =0x00016014 + adds r0, r3, r1 + strb r2, [r0] + movs r0, 0xFF + lsls r0, 8 + ands r0, r2 + asrs r0, 8 + ldr r5, _08027F04 @ =0x00016015 + adds r1, r3, r5 + strb r0, [r1] + movs r0, 0xFF + lsls r0, 16 + ands r0, r2 + asrs r0, 16 + adds r5, 0x1 + adds r1, r3, r5 + strb r0, [r1] + lsrs r2, 24 + ldr r0, _08027F08 @ =0x00016017 + adds r3, r0 + strb r2, [r3] + mov r1, r12 + ldrb r0, [r1] + muls r0, r6 + adds r0, r7 + ldrh r0, [r0, 0x28] + subs r0, r4 + mov r5, r9 + str r0, [r5] + ldr r2, _08027F0C @ =gSpecialStatuses + mov r0, r8 + ldrb r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + adds r2, 0x4 + adds r0, r2 + ldr r1, _08027F10 @ =0x0000ffff + str r1, [r0] + ldr r1, _08027F14 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _08027F32 + .align 2, 0 +_08027EEC: .4byte gBattleMons +_08027EF0: .4byte gBankTarget +_08027EF4: .4byte gBankAttacker +_08027EF8: .4byte gBattleMoveDamage +_08027EFC: .4byte 0x02000000 +_08027F00: .4byte 0x00016014 +_08027F04: .4byte 0x00016015 +_08027F08: .4byte 0x00016017 +_08027F0C: .4byte gSpecialStatuses +_08027F10: .4byte 0x0000ffff +_08027F14: .4byte gBattlescriptCurrInstr +_08027F18: + ldr r3, _08027F40 @ =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] +_08027F32: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08027F40: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8027E4C + + thumb_func_start sub_8027F44 +sub_8027F44: @ 8027F44 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r1, _08027FA8 @ =gMoveHitWith + ldr r4, _08027FAC @ =gBankAttacker + ldrb r0, [r4] + lsls r0, 1 + adds r2, r0, r1 + ldrh r1, [r2] + cmp r1, 0 + beq _08027F8C + ldr r0, _08027FB0 @ =0x0000ffff + cmp r1, r0 + beq _08027F8C + ldrh r0, [r2] + bl sub_8028350 + lsls r0, 24 + cmp r0, 0 + beq _08028024 + ldr r2, _08027FB4 @ =gProtectStructs + ldrb r0, [r4] + lsls r1, r0, 4 + adds r0, r2, 0x4 + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + bne _08028024 + adds r0, r2, 0 + adds r0, 0x8 + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + bne _08028024 +_08027F8C: + ldr r3, _08027FB8 @ =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 _08028110 + .align 2, 0 +_08027FA8: .4byte gMoveHitWith +_08027FAC: .4byte gBankAttacker +_08027FB0: .4byte 0x0000ffff +_08027FB4: .4byte gProtectStructs +_08027FB8: .4byte gBattlescriptCurrInstr +_08027FBC: + mov r0, r12 + strb r5, [r0] + mov r1, r10 + ldrb r0, [r1] + muls r0, r2 + adds r0, r7 + adds r0, 0x22 + strb r5, [r0] + ldr r1, _08027FE0 @ =gBattleTextBuff1 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x3 + strb r0, [r1, 0x1] + strb r5, [r1, 0x2] + movs r0, 0xFF + strb r0, [r1, 0x3] + ldr r1, _08027FE4 @ =gBattlescriptCurrInstr + b _08028012 + .align 2, 0 +_08027FE0: .4byte gBattleTextBuff1 +_08027FE4: .4byte gBattlescriptCurrInstr +_08027FE8: + mov r0, r8 + adds r0, 0x1 + adds r0, r3 + ldrb r2, [r0] + strb r2, [r4] + mov r4, r10 + ldrb r0, [r4] + muls r0, r6 + ldr r7, _0802801C @ =gBattleMons + adds r0, r7 + adds r0, 0x22 + strb r2, [r0] + ldr r1, _08028020 @ =gBattleTextBuff1 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x3 + strb r0, [r1, 0x1] + strb r2, [r1, 0x2] + movs r0, 0xFF + strb r0, [r1, 0x3] + mov r1, r12 +_08028012: + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _08028110 + .align 2, 0 +_0802801C: .4byte gBattleMons +_08028020: .4byte gBattleTextBuff1 +_08028024: + movs r4, 0 + mov r8, r4 + movs r7, 0x7F + mov r9, r7 +_0802802C: + bl Random + mov r4, r9 + ands r4, r0 + cmp r4, 0x70 + bhi _0802802C + lsls r0, r4, 1 + adds r4, r0, r4 + ldr r6, _08028120 @ =gTypeEffectiveness + adds r3, r4, r6 + ldr r1, _08028124 @ =gUnknown_02024C44 + ldr r2, _08028128 @ =gBankAttacker + ldrb r5, [r2] + lsls r0, r5, 1 + adds r0, r1 + ldrb r1, [r3] + mov r10, r2 + ldrh r0, [r0] + cmp r1, r0 + bne _08028088 + adds r0, r4, 0x2 + adds r0, r6 + ldrb r0, [r0] + cmp r0, 0x5 + bhi _08028088 + ldr r7, _0802812C @ =gBattleMons + movs r2, 0x58 + adds r0, r5, 0 + muls r0, r2 + adds r3, r0, r7 + movs r0, 0x21 + adds r0, r3 + mov r12, r0 + adds r0, r4, 0x1 + adds r0, r6 + ldrb r5, [r0] + mov r1, r12 + ldrb r0, [r1] + adds r1, r5, 0 + cmp r0, r1 + beq _08028088 + adds r0, r3, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, r1 + bne _08027FBC +_08028088: + movs r7, 0x1 + add r8, r7 + ldr r0, _08028130 @ =0x000003e7 + cmp r8, r0 + ble _0802802C + movs r0, 0 + mov r8, r0 + ldr r1, _08028134 @ =gBattlescriptCurrInstr + mov r12, r1 + ldr r3, _08028120 @ =gTypeEffectiveness + adds r0, r4, 0x1 + adds r0, r3 + mov r9, r0 + adds r5, r3, 0 +_080280A4: + ldrb r1, [r5] + cmp r1, 0xFF + bgt _080280AE + cmp r1, 0xFE + bge _080280E8 +_080280AE: + mov r4, r10 + ldrb r2, [r4] + lsls r0, r2, 1 + ldr r7, _08028124 @ =gUnknown_02024C44 + adds r0, r7 + ldrh r0, [r0] + cmp r1, r0 + bne _080280E8 + ldrb r0, [r5, 0x2] + cmp r0, 0x5 + bhi _080280E8 + movs r6, 0x58 + adds r0, r2, 0 + muls r0, r6 + ldr r1, _0802812C @ =gBattleMons + adds r2, r0, r1 + adds r4, r2, 0 + adds r4, 0x21 + ldrb r0, [r4] + mov r7, r9 + ldrb r1, [r7] + cmp r0, r1 + beq _080280E8 + adds r0, r2, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, r1 + beq _080280E8 + b _08027FE8 +_080280E8: + adds r5, 0x3 + movs r0, 0x3 + add r8, r0 + ldr r0, _08028138 @ =0x0000014f + cmp r8, r0 + bls _080280A4 + mov r1, r12 + ldr r2, [r1] + ldrb r1, [r2, 0x1] + ldrb r0, [r2, 0x2] + lsls r0, 8 + orrs r1, r0 + ldrb r0, [r2, 0x3] + lsls r0, 16 + orrs r1, r0 + ldrb r0, [r2, 0x4] + lsls r0, 24 + orrs r1, r0 + mov r4, r12 + str r1, [r4] +_08028110: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08028120: .4byte gTypeEffectiveness +_08028124: .4byte gUnknown_02024C44 +_08028128: .4byte gBankAttacker +_0802812C: .4byte gBattleMons +_08028130: .4byte 0x000003e7 +_08028134: .4byte gBattlescriptCurrInstr +_08028138: .4byte 0x0000014f + thumb_func_end sub_8027F44 + + thumb_func_start atkA7_setalwayshitflag +atkA7_setalwayshitflag: @ 802813C + push {r4,lr} + ldr r4, _08028180 @ =gStatuses3 + ldr r3, _08028184 @ =gBankTarget + ldrb r1, [r3] + lsls r1, 2 + adds r1, r4 + ldr r0, [r1] + movs r2, 0x19 + negs r2, r2 + ands r0, r2 + str r0, [r1] + ldrb r1, [r3] + lsls r1, 2 + adds r1, r4 + ldr r0, [r1] + movs r2, 0x10 + orrs r0, r2 + str r0, [r1] + ldr r2, _08028188 @ =gDisableStructs + ldrb r1, [r3] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, _0802818C @ =gBankAttacker + ldrb r1, [r1] + strb r1, [r0, 0x15] + ldr r1, _08028190 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08028180: .4byte gStatuses3 +_08028184: .4byte gBankTarget +_08028188: .4byte gDisableStructs +_0802818C: .4byte gBankAttacker +_08028190: .4byte gBattlescriptCurrInstr + thumb_func_end atkA7_setalwayshitflag + + thumb_func_start atkA8_copymovepermanently +atkA8_copymovepermanently: @ 8028194 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + ldr r0, _080282F4 @ =gUnknown_02024BE8 + ldr r1, _080282F8 @ =0x0000ffff + adds r5, r1, 0 + strh r5, [r0] + ldr r3, _080282FC @ =gBattleMons + ldr r2, _08028300 @ =gBankAttacker + ldrb r1, [r2] + movs r0, 0x58 + adds r4, r1, 0 + muls r4, r0 + adds r0, r3, 0 + adds r0, 0x50 + adds r0, r4, r0 + ldr r1, [r0] + movs r0, 0x80 + lsls r0, 14 + ands r1, r0 + mov r12, r3 + mov r10, r2 + cmp r1, 0 + beq _080281CC + b _08028320 +_080281CC: + ldr r0, _08028304 @ =gUnknown_02024C2C + ldr r2, _08028308 @ =gBankTarget + ldrb r1, [r2] + lsls r1, 1 + adds r1, r0 + ldrh r1, [r1] + mov r9, r0 + mov r8, r2 + cmp r1, 0xA5 + bne _080281E2 + b _08028320 +_080281E2: + cmp r1, 0 + bne _080281E8 + b _08028320 +_080281E8: + cmp r1, r5 + bne _080281EE + b _08028320 +_080281EE: + cmp r1, 0xA6 + bne _080281F4 + b _08028320 +_080281F4: + movs r7, 0 + mov r5, r9 + mov r0, r12 + adds r0, 0xC + adds r1, r4, r0 + mov r3, r8 +_08028200: + ldrh r2, [r1] + cmp r2, 0xA6 + beq _08028212 + ldrb r0, [r3] + lsls r0, 1 + adds r0, r5 + ldrh r0, [r0] + cmp r2, r0 + beq _0802821A +_08028212: + adds r1, 0x2 + adds r7, 0x1 + cmp r7, 0x3 + ble _08028200 +_0802821A: + cmp r7, 0x4 + beq _08028220 + b _08028320 +_08028220: + ldr r4, _0802830C @ =gCurrMovePos + ldrb r1, [r4] + lsls r1, 1 + mov r2, r10 + ldrb r0, [r2] + movs r3, 0x58 + muls r0, r3 + adds r1, r0 + mov r6, r12 + adds r6, 0xC + adds r1, r6 + mov r2, r8 + ldrb r0, [r2] + lsls r0, 1 + add r0, r9 + ldrh r0, [r0] + strh r0, [r1] + mov r1, r10 + ldrb r0, [r1] + adds r2, r0, 0 + muls r2, r3 + ldrb r4, [r4] + adds r2, r4 + mov r5, r12 + adds r5, 0x24 + adds r2, r5 + ldr r4, _08028310 @ =gBattleMoves + mov r1, r8 + ldrb r0, [r1] + lsls r0, 1 + add r0, r9 + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r0, [r0, 0x4] + strb r0, [r2] + ldr r1, _08028314 @ =gActiveBank + mov r2, r10 + ldrb r0, [r2] + strb r0, [r1] + movs r7, 0 + ldrb r0, [r2] + muls r0, r3 + adds r4, r0, r5 + adds r3, r0, 0 + add r2, sp, 0x4 + add r5, sp, 0xC +_08028282: + adds r0, r3, r6 + ldrh r0, [r0] + strh r0, [r2] + adds r1, r5, r7 + ldrb r0, [r4] + strb r0, [r1] + adds r4, 0x1 + adds r3, 0x2 + adds r2, 0x2 + adds r7, 0x1 + cmp r7, 0x3 + ble _08028282 + add r2, sp, 0x4 + mov r0, r10 + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + add r0, r12 + adds r0, 0x3B + ldrb r0, [r0] + strb r0, [r2, 0xC] + str r2, [sp] + movs r0, 0 + movs r1, 0x3 + movs r2, 0 + movs r3, 0x10 + bl EmitSetAttributes + ldr r0, _08028314 @ =gActiveBank + ldrb r0, [r0] + bl MarkBufferBankForExecution + ldr r1, _08028318 @ =gBattleTextBuff1 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x2 + strb r0, [r1, 0x1] + ldr r3, _08028304 @ =gUnknown_02024C2C + ldr r2, _08028308 @ =gBankTarget + ldrb r0, [r2] + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + strb r0, [r1, 0x2] + ldrb r0, [r2] + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + lsrs r0, 8 + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r1, _0802831C @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _0802833A + .align 2, 0 +_080282F4: .4byte gUnknown_02024BE8 +_080282F8: .4byte 0x0000ffff +_080282FC: .4byte gBattleMons +_08028300: .4byte gBankAttacker +_08028304: .4byte gUnknown_02024C2C +_08028308: .4byte gBankTarget +_0802830C: .4byte gCurrMovePos +_08028310: .4byte gBattleMoves +_08028314: .4byte gActiveBank +_08028318: .4byte gBattleTextBuff1 +_0802831C: .4byte gBattlescriptCurrInstr +_08028320: + ldr r3, _0802834C @ =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] +_0802833A: + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802834C: .4byte gBattlescriptCurrInstr + thumb_func_end atkA8_copymovepermanently + + thumb_func_start sub_8028350 +sub_8028350: @ 8028350 + push {lr} + lsls r0, 16 + lsrs r0, 16 + ldr r2, _08028380 @ =gBattleMoves + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1] + cmp r0, 0x91 + beq _0802837A + cmp r0, 0x27 + beq _0802837A + cmp r0, 0x4B + beq _0802837A + cmp r0, 0x97 + beq _0802837A + cmp r0, 0x9B + beq _0802837A + cmp r0, 0x1A + bne _08028384 +_0802837A: + movs r0, 0x1 + b _08028386 + .align 2, 0 +_08028380: .4byte gBattleMoves +_08028384: + movs r0, 0 +_08028386: + pop {r1} + bx r1 + thumb_func_end sub_8028350 + + thumb_func_start sub_802838C +sub_802838C: @ 802838C + push {lr} + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0 + beq _080283AA + cmp r1, 0xD6 + beq _080283AA + movs r0, 0x89 + lsls r0, 1 + cmp r1, r0 + beq _080283AA + cmp r1, 0x77 + beq _080283AA + cmp r1, 0x76 + bne _080283AE +_080283AA: + movs r0, 0x1 + b _080283B0 +_080283AE: + movs r0, 0 +_080283B0: + pop {r1} + bx r1 + thumb_func_end sub_802838C + + thumb_func_start move_weather_interaction +move_weather_interaction: @ 80283B4 + push {lr} + lsls r1, 16 + lsrs r2, r1, 16 + ldr r1, _0802840C @ =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 _080283D8 + ldr r0, _08028410 @ =gBattleWeather + ldrh r1, [r0] + movs r0, 0x60 + ands r0, r1 + cmp r0, 0 + bne _08028418 +_080283D8: + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 2 + adds r0, r3 + ldrb r0, [r0] + cmp r0, 0x91 + beq _080283FA + cmp r0, 0x27 + beq _080283FA + cmp r0, 0x4B + beq _080283FA + cmp r0, 0x97 + beq _080283FA + cmp r0, 0x9B + beq _080283FA + cmp r0, 0x1A + bne _08028418 +_080283FA: + ldr r0, _08028414 @ =gHitMarker + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 20 + ands r0, r1 + cmp r0, 0 + beq _08028418 + movs r0, 0x1 + b _0802841A + .align 2, 0 +_0802840C: .4byte gBattleMoves +_08028410: .4byte gBattleWeather +_08028414: .4byte gHitMarker +_08028418: + movs r0, 0x2 +_0802841A: + pop {r1} + bx r1 + thumb_func_end move_weather_interaction + + thumb_func_start sub_8028420 +sub_8028420: @ 8028420 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + movs r6, 0 + movs r5, 0 + ldr r0, _080284B0 @ =gBankAttacker + mov r9, r0 + movs r1, 0x58 + mov r8, r1 + ldr r7, _080284B4 @ =gUnknown_02024A8C + movs r0, 0x84 + lsls r0, 1 + mov r10, r0 +_0802843E: + 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_802838C + lsls r0, 24 + cmp r0, 0 + bne _0802847E + 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 _0802847E + cmp r1, 0xFD + beq _0802847E + adds r0, r1, 0 + bl sub_8028350 + lsls r0, 24 + cmp r0, 0 + beq _0802848C +_0802847E: + ldr r1, _080284B8 @ =gBitTable + lsls r0, r5, 2 + adds r0, r1 + ldr r0, [r0] + orrs r6, r0 + lsls r0, r6, 24 + lsrs r6, r0, 24 +_0802848C: + adds r5, 0x1 + cmp r5, 0x3 + ble _0802843E + ldr r0, _080284B0 @ =gBankAttacker + ldrb r0, [r0] + adds r1, r6, 0 + movs r2, 0xFD + bl sub_8015A98 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0xF + bne _080284C0 + ldr r1, _080284BC @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _08028524 + .align 2, 0 +_080284B0: .4byte gBankAttacker +_080284B4: .4byte gUnknown_02024A8C +_080284B8: .4byte gBitTable +_080284BC: .4byte gBattlescriptCurrInstr +_080284C0: + movs r7, 0x3 + ldr r4, _08028534 @ =gBitTable +_080284C4: + 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 _080284C4 + ldr r4, _08028538 @ =gUnknown_02024BEA + ldr r2, _0802853C @ =gBattleMons + lsls r1, r5, 1 + ldr r0, _08028540 @ =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, _08028544 @ =gCurrMovePos + strb r5, [r0] + ldr r2, _08028548 @ =gHitMarker + ldr r0, [r2] + ldr r1, _0802854C @ =0xfffffbff + ands r0, r1 + str r0, [r2] + ldrh r0, [r4] + movs r1, 0 + bl sub_801B5C0 + ldr r1, _08028550 @ =gBankTarget + strb r0, [r1] + ldr r3, _08028554 @ =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] +_08028524: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08028534: .4byte gBitTable +_08028538: .4byte gUnknown_02024BEA +_0802853C: .4byte gBattleMons +_08028540: .4byte gBankAttacker +_08028544: .4byte gCurrMovePos +_08028548: .4byte gHitMarker +_0802854C: .4byte 0xfffffbff +_08028550: .4byte gBankTarget +_08028554: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8028420 + + thumb_func_start sub_8028558 +sub_8028558: @ 8028558 + ldr r1, _0802857C @ =gBattleMons + ldr r0, _08028580 @ =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, _08028584 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + bx lr + .align 2, 0 +_0802857C: .4byte gBattleMons +_08028580: .4byte gBankAttacker +_08028584: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8028558 + + thumb_func_start b_feature_update_destiny_bond +b_feature_update_destiny_bond: @ 8028588 + push {r4,r5,lr} + ldr r0, _080285D8 @ =gBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _080285DC @ =gBankTarget + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + lsrs r3, r0, 24 + ldr r1, _080285E0 @ =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 _080285D2 + cmp r5, r3 + beq _080285D2 + ldr r2, _080285E4 @ =gHitMarker + ldr r1, [r2] + movs r0, 0x80 + lsls r0, 17 + ands r0, r1 + cmp r0, 0 + bne _080285D2 + movs r0, 0x40 + orrs r1, r0 + str r1, [r2] +_080285D2: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080285D8: .4byte gBankAttacker +_080285DC: .4byte gBankTarget +_080285E0: .4byte gBattleMons +_080285E4: .4byte gHitMarker + thumb_func_end b_feature_update_destiny_bond + + thumb_func_start atkAB_802A458 +atkAB_802A458: @ 80285E8 + push {lr} + bl b_feature_update_destiny_bond + ldr r1, _080285FC @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080285FC: .4byte gBattlescriptCurrInstr + thumb_func_end atkAB_802A458 + + thumb_func_start atkAC_remaininghptopower +atkAC_remaininghptopower: @ 8028600 + push {lr} + ldr r2, _08028654 @ =gBattleMons + ldr r0, _08028658 @ =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 GetScaledHPFraction + lsls r0, 24 + lsrs r1, r0, 24 + movs r3, 0 + ldr r0, _0802865C @ =gUnknown_081FAD26 + ldrb r2, [r0] + cmp r1, r2 + ble _0802863A + adds r2, r0, 0 +_0802862C: + adds r3, 0x2 + cmp r3, 0xB + bgt _0802863A + adds r0, r3, r2 + ldrb r0, [r0] + cmp r1, r0 + bgt _0802862C +_0802863A: + ldr r2, _08028660 @ =gDynamicBasePower + ldr r1, _0802865C @ =gUnknown_081FAD26 + adds r0, r3, 0x1 + adds r0, r1 + ldrb r0, [r0] + strh r0, [r2] + ldr r1, _08028664 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08028654: .4byte gBattleMons +_08028658: .4byte gBankAttacker +_0802865C: .4byte gUnknown_081FAD26 +_08028660: .4byte gDynamicBasePower +_08028664: .4byte gBattlescriptCurrInstr + thumb_func_end atkAC_remaininghptopower + + thumb_func_start sub_8028668 +sub_8028668: @ 8028668 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + ldr r4, _080287F8 @ =gLastUsedMove + ldr r1, _080287FC @ =gBankTarget + ldrb r2, [r1] + lsls r0, r2, 1 + adds r0, r4 + ldrh r3, [r0] + mov r8, r1 + cmp r3, 0 + bne _08028688 + b _08028828 +_08028688: + ldr r0, _08028800 @ =0x0000ffff + cmp r3, r0 + bne _08028690 + b _08028828 +_08028690: + ldr r1, _08028804 @ =gStatuses3 + lsls r0, r2, 2 + adds r0, r1 + ldr r0, [r0] + ldr r1, _08028808 @ =0x000400c0 + ands r0, r1 + cmp r0, 0 + beq _080286A2 + b _08028828 +_080286A2: + movs r7, 0 + ldr r0, _0802880C @ =gBattleMons + movs r1, 0x58 + muls r1, r2 + adds r2, r0, 0 + adds r2, 0xC + adds r1, r2 + ldrh r1, [r1] + cmp r3, r1 + beq _080286DA + adds r6, r4, 0 + mov r5, r8 + adds r4, r2, 0 + movs r3, 0x58 +_080286BE: + adds r7, 0x1 + cmp r7, 0x3 + bgt _080286DA + 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 _080286BE +_080286DA: + cmp r7, 0x4 + bne _080286E0 + b _08028828 +_080286E0: + 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, _0802880C @ =gBattleMons + adds r1, 0x24 + mov r10, r1 + add r0, r10 + ldrb r0, [r0] + cmp r0, 0x1 + bhi _08028700 + b _08028828 +_08028700: + 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 _0802871E + adds r6, r0, 0 +_0802871E: + ldr r1, _08028810 @ =gBattleTextBuff1 + movs r5, 0xFD + strb r5, [r1] + movs r0, 0x2 + strb r0, [r1, 0x1] + ldr r2, _080287F8 @ =gLastUsedMove + mov r3, r8 + ldrb r0, [r3] + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + strb r0, [r1, 0x2] + ldrb r0, [r3] + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + lsrs r0, 8 + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r4, _08028814 @ =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, _08028818 @ =gActiveBank + mov r3, r8 + ldrb r0, [r3] + strb r0, [r4] + ldr r1, _0802881C @ =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, _08028820 @ =gBitTable + lsls r0, r7, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _080287D2 + mov r2, r9 + muls r2, r3 + ldr r0, _0802880C @ =gBattleMons + adds r0, 0x50 + adds r0, r2, r0 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 14 + ands r0, r1 + cmp r0, 0 + bne _080287D2 + 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 EmitSetAttributes + ldrb r0, [r4] + bl MarkBufferBankForExecution +_080287D2: + ldr r1, _08028824 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + ldr r1, _0802880C @ =gBattleMons + ldr r0, _080287FC @ =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 _08028842 + adds r0, r2, 0 + bl CancelMultiTurnMoves + b _08028842 + .align 2, 0 +_080287F8: .4byte gLastUsedMove +_080287FC: .4byte gBankTarget +_08028800: .4byte 0x0000ffff +_08028804: .4byte gStatuses3 +_08028808: .4byte 0x000400c0 +_0802880C: .4byte gBattleMons +_08028810: .4byte gBattleTextBuff1 +_08028814: .4byte gBattleTextBuff2 +_08028818: .4byte gActiveBank +_0802881C: .4byte gDisableStructs +_08028820: .4byte gBitTable +_08028824: .4byte gBattlescriptCurrInstr +_08028828: + ldr r3, _08028854 @ =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] +_08028842: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08028854: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8028668 + + thumb_func_start sub_8028858 +sub_8028858: @ 8028858 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x8 + movs r4, 0 + str r4, [sp, 0x4] + movs r7, 0 + ldr r0, _080288AC @ =gCurrentMove + ldrh r0, [r0] + cmp r0, 0xD7 + beq _08028872 + b _08028A26 +_08028872: + ldr r5, _080288B0 @ =gBattleCommunication + strb r7, [r5, 0x5] + ldr r6, _080288B4 @ =gBankAttacker + ldrb r0, [r6] + bl GetBankSide + lsls r0, 24 + ldr r1, _080288B8 @ =gEnemyParty + mov r9, r1 + cmp r0, 0 + bne _0802888C + ldr r2, _080288BC @ =gPlayerParty + mov r9, r2 +_0802888C: + ldr r4, _080288C0 @ =gBattleMons + ldrb r3, [r6] + movs r0, 0x58 + adds r2, r3, 0 + muls r2, r0 + adds r0, r2, r4 + adds r1, r0, 0 + adds r1, 0x20 + ldrb r0, [r1] + cmp r0, 0x2B + beq _080288C4 + adds r0, r4, 0 + adds r0, 0x4C + adds r0, r2, r0 + str r7, [r0] + b _080288D4 + .align 2, 0 +_080288AC: .4byte gCurrentMove +_080288B0: .4byte gBattleCommunication +_080288B4: .4byte gBankAttacker +_080288B8: .4byte gEnemyParty +_080288BC: .4byte gPlayerParty +_080288C0: .4byte gBattleMons +_080288C4: + ldrb r1, [r1] + adds r0, r3, 0 + bl sub_81074C4 + ldrb r0, [r5, 0x5] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r5, 0x5] +_080288D4: + ldr r4, _08028934 @ =gActiveBank + ldr r0, _08028938 @ =gBankAttacker + ldrb r0, [r0] + bl GetBankIdentity + movs r6, 0x2 + eors r0, r6 + lsls r0, 24 + lsrs r0, 24 + bl GetBankByPlayerAI + ldr r1, _0802893C @ =0x02000000 + ldr r2, _08028940 @ =0x00016003 + adds r1, r2 + strb r0, [r1] + strb r0, [r4] + ldr r0, _08028944 @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08028964 + ldr r0, _08028948 @ =gAbsentBankFlags + ldrb r2, [r0] + ldr r1, _0802894C @ =gBitTable + ldrb r3, [r4] + lsls r0, r3, 2 + adds r0, r1 + ldr r0, [r0] + ands r2, r0 + cmp r2, 0 + bne _08028964 + ldr r5, _08028950 @ =gBattleMons + movs r0, 0x58 + adds r4, r3, 0 + muls r4, r0 + adds r0, r4, r5 + adds r1, r0, 0 + adds r1, 0x20 + ldrb r0, [r1] + cmp r0, 0x2B + beq _08028954 + adds r0, r5, 0 + adds r0, 0x4C + adds r0, r4, r0 + str r2, [r0] + b _08028964 + .align 2, 0 +_08028934: .4byte gActiveBank +_08028938: .4byte gBankAttacker +_0802893C: .4byte 0x02000000 +_08028940: .4byte 0x00016003 +_08028944: .4byte gBattleTypeFlags +_08028948: .4byte gAbsentBankFlags +_0802894C: .4byte gBitTable +_08028950: .4byte gBattleMons +_08028954: + ldrb r1, [r1] + adds r0, r3, 0 + bl sub_81074C4 + ldr r1, _080289AC @ =gBattleCommunication + ldrb r0, [r1, 0x5] + orrs r0, r6 + strb r0, [r1, 0x5] +_08028964: + movs r6, 0 + ldr r0, _080289B0 @ =gBattleMons + mov r8, r0 +_0802896A: + movs r0, 0x64 + adds r4, r6, 0 + muls r4, r0 + add r4, r9 + 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 _08028A1E + movs r0, 0xCE + lsls r0, 1 + cmp r5, r0 + beq _08028A1E + ldr r2, _080289B4 @ =gBattlePartyID + ldr r0, _080289B8 @ =gBankAttacker + ldrb r1, [r0] + lsls r0, r1, 1 + adds r0, r2 + ldrh r0, [r0] + cmp r0, r6 + bne _080289BC + movs r0, 0x58 + muls r0, r1 + b _080289EC + .align 2, 0 +_080289AC: .4byte gBattleCommunication +_080289B0: .4byte gBattleMons +_080289B4: .4byte gBattlePartyID +_080289B8: .4byte gBankAttacker +_080289BC: + ldr r0, _080289F4 @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08028A04 + ldr r0, _080289F8 @ =gActiveBank + ldrb r3, [r0] + lsls r0, r3, 1 + adds r0, r2 + ldrh r0, [r0] + cmp r0, r6 + bne _08028A04 + ldr r0, _080289FC @ =gAbsentBankFlags + ldrb r1, [r0] + ldr r2, _08028A00 @ =gBitTable + lsls r0, r3, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _08028A04 + movs r0, 0x58 + muls r0, r3 +_080289EC: + add r0, r8 + adds r0, 0x20 + ldrb r0, [r0] + b _08028A10 + .align 2, 0 +_080289F4: .4byte gBattleTypeFlags +_080289F8: .4byte gActiveBank +_080289FC: .4byte gAbsentBankFlags +_08028A00: .4byte gBitTable +_08028A04: + adds r0, r5, 0 + adds r1, r4, 0 + bl GetAbilityBySpecies + lsls r0, 24 + lsrs r0, 24 +_08028A10: + cmp r0, 0x2B + beq _08028A1E + movs r0, 0x1 + lsls r0, r6 + orrs r7, r0 + lsls r0, r7, 24 + lsrs r7, r0, 24 +_08028A1E: + adds r6, 0x1 + cmp r6, 0x5 + ble _0802896A + b _08028A7E +_08028A26: + ldr r1, _08028AB4 @ =gBattleCommunication + movs r0, 0x4 + strb r0, [r1, 0x5] + movs r7, 0x3F + ldr r2, _08028AB8 @ =gBattleMons + ldr r1, _08028ABC @ =gBankAttacker + ldrb r0, [r1] + movs r6, 0x58 + muls r0, r6 + adds r5, r2, 0 + adds r5, 0x4C + adds r0, r5 + str r4, [r0] + ldrb r0, [r1] + bl GetBankIdentity + movs r1, 0x2 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + bl GetBankByPlayerAI + ldr r3, _08028AC0 @ =gActiveBank + strb r0, [r3] + ldr r0, _08028AC4 @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08028A7E + ldr r0, _08028AC8 @ =gAbsentBankFlags + ldrb r2, [r0] + ldr r1, _08028ACC @ =gBitTable + ldrb r3, [r3] + lsls r0, r3, 2 + adds r0, r1 + ldr r0, [r0] + ands r2, r0 + cmp r2, 0 + bne _08028A7E + adds r0, r3, 0 + muls r0, r6 + adds r0, r5 + str r2, [r0] +_08028A7E: + ldr r4, _08028AC0 @ =gActiveBank + ldr r0, _08028ABC @ =gBankAttacker + ldrb r0, [r0] + strb r0, [r4] + add r1, sp, 0x4 + str r1, [sp] + movs r0, 0 + movs r1, 0x28 + adds r2, r7, 0 + movs r3, 0x4 + bl EmitSetAttributes + ldrb r0, [r4] + bl MarkBufferBankForExecution + ldr r1, _08028AD0 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + add sp, 0x8 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08028AB4: .4byte gBattleCommunication +_08028AB8: .4byte gBattleMons +_08028ABC: .4byte gBankAttacker +_08028AC0: .4byte gActiveBank +_08028AC4: .4byte gBattleTypeFlags +_08028AC8: .4byte gAbsentBankFlags +_08028ACC: .4byte gBitTable +_08028AD0: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8028858 + + thumb_func_start sub_8028AD4 +sub_8028AD4: @ 8028AD4 + push {r4-r7,lr} + ldr r7, _08028B24 @ =gBattleMons + ldr r0, _08028B28 @ =gBankTarget + ldrb r3, [r0] + movs r6, 0x58 + adds r1, r3, 0 + muls r1, r6 + adds r0, r7, 0 + adds r0, 0x50 + adds r4, r1, r0 + ldr r2, [r4] + movs r5, 0x80 + lsls r5, 21 + adds r0, r2, 0 + ands r0, r5 + cmp r0, 0 + bne _08028B06 + ldr r1, _08028B2C @ =gStatuses3 + lsls r0, r3, 2 + adds r0, r1 + ldr r0, [r0] + ldr r1, _08028B30 @ =0x000400c0 + ands r0, r1 + cmp r0, 0 + beq _08028B38 +_08028B06: + ldr r3, _08028B34 @ =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 _08028B5C + .align 2, 0 +_08028B24: .4byte gBattleMons +_08028B28: .4byte gBankTarget +_08028B2C: .4byte gStatuses3 +_08028B30: .4byte 0x000400c0 +_08028B34: .4byte gBattlescriptCurrInstr +_08028B38: + orrs r2, r5 + str r2, [r4] + ldr r1, _08028B64 @ =gBattleMoveDamage + ldr r0, _08028B68 @ =gBankAttacker + ldrb r0, [r0] + muls r0, r6 + adds r0, r7 + ldrh r0, [r0, 0x2C] + lsrs r0, 1 + str r0, [r1] + cmp r0, 0 + bne _08028B54 + movs r0, 0x1 + str r0, [r1] +_08028B54: + ldr r1, _08028B6C @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_08028B5C: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08028B64: .4byte gBattleMoveDamage +_08028B68: .4byte gBankAttacker +_08028B6C: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8028AD4 + + thumb_func_start sub_8028B70 +sub_8028B70: @ 8028B70 + push {r4,lr} + ldr r4, _08028BC4 @ =gBankAttacker + ldrb r0, [r4] + bl GetBankSide + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08028BC8 @ =gSideTimer + lsls r2, r0, 1 + adds r0, r2, r0 + lsls r0, 2 + adds r3, r0, r1 + ldrb r0, [r3, 0x6] + cmp r0, 0x3 + bne _08028BD4 + ldr r2, _08028BCC @ =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, _08028BD0 @ =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 _08028BEE + .align 2, 0 +_08028BC4: .4byte gBankAttacker +_08028BC8: .4byte gSideTimer +_08028BCC: .4byte gSpecialStatuses +_08028BD0: .4byte gBattlescriptCurrInstr +_08028BD4: + ldr r1, _08028BF4 @ =gSideAffecting + adds r1, r2, r1 + ldrh r2, [r1] + movs r0, 0x10 + orrs r0, r2 + strh r0, [r1] + ldrb r0, [r3, 0x6] + adds r0, 0x1 + strb r0, [r3, 0x6] + ldr r1, _08028BF8 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_08028BEE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08028BF4: .4byte gSideAffecting +_08028BF8: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8028B70 + + thumb_func_start sub_8028BFC +sub_8028BFC: @ 8028BFC + ldr r1, _08028C20 @ =gBattleMons + ldr r0, _08028C24 @ =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, _08028C28 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + bx lr + .align 2, 0 +_08028C20: .4byte gBattleMons +_08028C24: .4byte gBankTarget +_08028C28: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8028BFC + + thumb_func_start atkB2_setperishsong +atkB2_setperishsong: @ 8028C2C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + movs r6, 0 + movs r3, 0 + ldr r0, _08028C70 @ =gNoOfAllBanks + adds r7, r0, 0 + ldr r0, _08028C74 @ =gBankAttacker + mov r8, r0 + ldrb r1, [r7] + cmp r6, r1 + bge _08028C98 + movs r5, 0x20 + ldr r0, _08028C78 @ =gBattleMons + mov r12, r0 + ldr r0, _08028C7C @ =gDisableStructs + adds r4, r0, 0 + adds r4, 0xF + ldr r2, _08028C80 @ =gStatuses3 +_08028C54: + ldr r1, [r2] + adds r0, r1, 0 + ands r0, r5 + cmp r0, 0 + bne _08028C6C + movs r0, 0x58 + muls r0, r3 + add r0, r12 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x2B + bne _08028C84 +_08028C6C: + adds r6, 0x1 + b _08028C8C + .align 2, 0 +_08028C70: .4byte gNoOfAllBanks +_08028C74: .4byte gBankAttacker +_08028C78: .4byte gBattleMons +_08028C7C: .4byte gDisableStructs +_08028C80: .4byte gStatuses3 +_08028C84: + orrs r1, r5 + str r1, [r2] + movs r0, 0x33 + strb r0, [r4] +_08028C8C: + adds r4, 0x1C + adds r2, 0x4 + adds r3, 0x1 + ldrb r0, [r7] + cmp r3, r0 + blt _08028C54 +_08028C98: + mov r1, r8 + ldrb r0, [r1] + bl sub_80153D0 + ldr r0, _08028CC4 @ =gNoOfAllBanks + ldrb r0, [r0] + cmp r6, r0 + bne _08028CCC + ldr r3, _08028CC8 @ =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 _08028CD4 + .align 2, 0 +_08028CC4: .4byte gNoOfAllBanks +_08028CC8: .4byte gBattlescriptCurrInstr +_08028CCC: + ldr r1, _08028CE0 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_08028CD4: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08028CE0: .4byte gBattlescriptCurrInstr + thumb_func_end atkB2_setperishsong + + thumb_func_start atkB3_rolloutdamagecalculation +atkB3_rolloutdamagecalculation: @ 8028CE4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r0, _08028D08 @ =gBattleMoveFlags + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + beq _08028D18 + ldr r0, _08028D0C @ =gBankAttacker + ldrb r0, [r0] + bl CancelMultiTurnMoves + ldr r1, _08028D10 @ =gBattlescriptCurrInstr + ldr r0, _08028D14 @ =BattleScript_1D6F74 + str r0, [r1] + b _08028E30 + .align 2, 0 +_08028D08: .4byte gBattleMoveFlags +_08028D0C: .4byte gBankAttacker +_08028D10: .4byte gBattlescriptCurrInstr +_08028D14: .4byte BattleScript_1D6F74 +_08028D18: + ldr r2, _08028E3C @ =gBattleMons + ldr r1, _08028E40 @ =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, _08028E44 @ =gDisableStructs + mov r12, r1 + ldr r2, _08028E48 @ =gCurrentMove + mov r8, r2 + cmp r0, 0 + bne _08028D8A + 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, _08028E4C @ =gLockedMove + ldrb r0, [r6] + lsls r0, 1 + adds r0, r1 + mov r2, r8 + ldrh r1, [r2] + strh r1, [r0] +_08028D8A: + 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 _08028DBE + ldrb r0, [r6] + adds r1, r0, 0 + muls r1, r5 + adds r1, r4 + ldr r0, [r1] + ldr r2, _08028E50 @ =0xffffefff + ands r0, r2 + str r0, [r1] +_08028DBE: + ldr r3, _08028E54 @ =gDynamicBasePower + ldr r2, _08028E58 @ =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, _08028E5C @ =gBattlescriptCurrInstr + adds r5, r3, 0 + cmp r2, r1 + bge _08028E0C + adds r1, r5, 0 + adds r3, r4, 0 + movs r4, 0x5 +_08028DF8: + 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 _08028DF8 +_08028E0C: + 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 _08028E2A + ldrh r0, [r5] + lsls r0, 1 + strh r0, [r5] +_08028E2A: + ldr r0, [r7] + adds r0, 0x1 + str r0, [r7] +_08028E30: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08028E3C: .4byte gBattleMons +_08028E40: .4byte gBankAttacker +_08028E44: .4byte gDisableStructs +_08028E48: .4byte gCurrentMove +_08028E4C: .4byte gLockedMove +_08028E50: .4byte 0xffffefff +_08028E54: .4byte gDynamicBasePower +_08028E58: .4byte gBattleMoves +_08028E5C: .4byte gBattlescriptCurrInstr + thumb_func_end atkB3_rolloutdamagecalculation + + thumb_func_start atkB4_jumpifconfusedandattackmaxed +atkB4_jumpifconfusedandattackmaxed: @ 8028E60 + push {r4,r5,lr} + ldr r5, _08028EB0 @ =gBattleMons + ldr r0, _08028EB4 @ =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, _08028EB8 @ =gBattlescriptCurrInstr + cmp r0, 0 + beq _08028EBC + 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 _08028EBC + 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 _08028EC2 + .align 2, 0 +_08028EB0: .4byte gBattleMons +_08028EB4: .4byte gBankTarget +_08028EB8: .4byte gBattlescriptCurrInstr +_08028EBC: + ldr r0, [r4] + adds r0, 0x6 + str r0, [r4] +_08028EC2: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end atkB4_jumpifconfusedandattackmaxed + + thumb_func_start sub_8028EC8 +sub_8028EC8: @ 8028EC8 + push {r4,r5,lr} + ldr r0, _08028EF0 @ =gBattleMoveFlags + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + beq _08028F04 + ldr r2, _08028EF4 @ =gDisableStructs + ldr r0, _08028EF8 @ =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, _08028EFC @ =gBattlescriptCurrInstr + ldr r0, _08028F00 @ =BattleScript_1D6F74 + str r0, [r1] + b _08028F5C + .align 2, 0 +_08028EF0: .4byte gBattleMoveFlags +_08028EF4: .4byte gDisableStructs +_08028EF8: .4byte gBankAttacker +_08028EFC: .4byte gBattlescriptCurrInstr +_08028F00: .4byte BattleScript_1D6F74 +_08028F04: + ldr r5, _08028F64 @ =gDisableStructs + ldr r4, _08028F68 @ =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 _08028F1C + adds r0, 0x1 + strb r0, [r1, 0x10] +_08028F1C: + ldr r3, _08028F6C @ =gDynamicBasePower + ldr r2, _08028F70 @ =gBattleMoves + ldr r0, _08028F74 @ =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, _08028F78 @ =gBattlescriptCurrInstr + ldrb r1, [r0, 0x10] + cmp r2, r1 + bge _08028F56 + adds r1, r3, 0 + adds r3, r0, 0 +_08028F48: + ldrh r0, [r1] + lsls r0, 1 + strh r0, [r1] + adds r2, 0x1 + ldrb r0, [r3, 0x10] + cmp r2, r0 + blt _08028F48 +_08028F56: + ldr r0, [r4] + adds r0, 0x1 + str r0, [r4] +_08028F5C: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08028F64: .4byte gDisableStructs +_08028F68: .4byte gBankAttacker +_08028F6C: .4byte gDynamicBasePower +_08028F70: .4byte gBattleMoves +_08028F74: .4byte gCurrentMove +_08028F78: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8028EC8 + + thumb_func_start atkB6_happinesstodamagecalculation +atkB6_happinesstodamagecalculation: @ 8028F7C + push {r4,lr} + ldr r2, _08028FA8 @ =gBattleMoves + ldr r0, _08028FAC @ =gCurrentMove + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0x79 + bne _08028FBC + ldr r4, _08028FB0 @ =gDynamicBasePower + ldr r2, _08028FB4 @ =gBattleMons + ldr r0, _08028FB8 @ =gBankAttacker + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x2B + ldrb r1, [r0] + b _08028FD2 + .align 2, 0 +_08028FA8: .4byte gBattleMoves +_08028FAC: .4byte gCurrentMove +_08028FB0: .4byte gDynamicBasePower +_08028FB4: .4byte gBattleMons +_08028FB8: .4byte gBankAttacker +_08028FBC: + ldr r4, _08028FF0 @ =gDynamicBasePower + ldr r2, _08028FF4 @ =gBattleMons + ldr r0, _08028FF8 @ =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 +_08028FD2: + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 1 + movs r1, 0x19 + bl __divsi3 + strh r0, [r4] + ldr r1, _08028FFC @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08028FF0: .4byte gDynamicBasePower +_08028FF4: .4byte gBattleMons +_08028FF8: .4byte gBankAttacker +_08028FFC: .4byte gBattlescriptCurrInstr + thumb_func_end atkB6_happinesstodamagecalculation + + thumb_func_start atkB7_presentdamagecalculation +atkB7_presentdamagecalculation: @ 8029000 + push {r4,lr} + bl Random + movs r4, 0xFF + ands r4, r0 + cmp r4, 0x65 + bgt _0802901C + ldr r1, _08029018 @ =gDynamicBasePower + movs r0, 0x28 + strh r0, [r1] + b _0802905E + .align 2, 0 +_08029018: .4byte gDynamicBasePower +_0802901C: + cmp r4, 0xB1 + bgt _0802902C + ldr r1, _08029028 @ =gDynamicBasePower + movs r0, 0x50 + strh r0, [r1] + b _0802905E + .align 2, 0 +_08029028: .4byte gDynamicBasePower +_0802902C: + cmp r4, 0xCB + bgt _0802903C + ldr r1, _08029038 @ =gDynamicBasePower + movs r0, 0x78 + strh r0, [r1] + b _0802905E + .align 2, 0 +_08029038: .4byte gDynamicBasePower +_0802903C: + ldr r3, _08029068 @ =gBattleMoveDamage + ldr r2, _0802906C @ =gBattleMons + ldr r0, _08029070 @ =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 _08029058 + movs r0, 0x1 + str r0, [r3] +_08029058: + ldr r0, [r3] + negs r0, r0 + str r0, [r3] +_0802905E: + cmp r4, 0xCB + bgt _0802907C + ldr r1, _08029074 @ =gBattlescriptCurrInstr + ldr r0, _08029078 @ =BattleScript_1D6F44 + b _080290AC + .align 2, 0 +_08029068: .4byte gBattleMoveDamage +_0802906C: .4byte gBattleMons +_08029070: .4byte gBankTarget +_08029074: .4byte gBattlescriptCurrInstr +_08029078: .4byte BattleScript_1D6F44 +_0802907C: + ldr r2, _08029098 @ =gBattleMons + ldr r0, _0802909C @ =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 _080290A8 + ldr r1, _080290A0 @ =gBattlescriptCurrInstr + ldr r0, _080290A4 @ =BattleScript_1D83B5 + b _080290AC + .align 2, 0 +_08029098: .4byte gBattleMons +_0802909C: .4byte gBankTarget +_080290A0: .4byte gBattlescriptCurrInstr +_080290A4: .4byte BattleScript_1D83B5 +_080290A8: + ldr r1, _080290B4 @ =gBattlescriptCurrInstr + ldr r0, _080290B8 @ =BattleScript_1D839B +_080290AC: + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080290B4: .4byte gBattlescriptCurrInstr +_080290B8: .4byte BattleScript_1D839B + thumb_func_end atkB7_presentdamagecalculation + + thumb_func_start sub_80290BC +sub_80290BC: @ 80290BC + push {r4-r6,lr} + ldr r4, _080290F0 @ =gBankAttacker + ldrb r0, [r4] + bl GetBankIdentity + ldr r6, _080290F4 @ =gSideAffecting + movs r5, 0x1 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r6 + ldrh r1, [r1] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _08029100 + ldr r2, _080290F8 @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _080290FC @ =gBattleCommunication + movs r0, 0 + strb r0, [r1, 0x5] + b _08029132 + .align 2, 0 +_080290F0: .4byte gBankAttacker +_080290F4: .4byte gSideAffecting +_080290F8: .4byte gBattleMoveFlags +_080290FC: .4byte gBattleCommunication +_08029100: + ldrb r0, [r4] + bl GetBankIdentity + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r6 + ldrh r0, [r1] + movs r2, 0x20 + orrs r0, r2 + strh r0, [r1] + ldrb r0, [r4] + bl GetBankIdentity + ldr r2, _08029140 @ =gSideTimer + adds r1, r5, 0 + ands r1, r0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x5 + strb r1, [r0, 0x7] + ldr r0, _08029144 @ =gBattleCommunication + strb r1, [r0, 0x5] +_08029132: + ldr r1, _08029148 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08029140: .4byte gSideTimer +_08029144: .4byte gBattleCommunication +_08029148: .4byte gBattlescriptCurrInstr + thumb_func_end sub_80290BC + + thumb_func_start atkB9_magnitudedamagecalculation +atkB9_magnitudedamagecalculation: @ 802914C + 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 _08029178 + ldr r1, _08029174 @ =gDynamicBasePower + movs r0, 0xA + strh r0, [r1] + movs r3, 0x4 + b _080291E4 + .align 2, 0 +_08029174: .4byte gDynamicBasePower +_08029178: + cmp r3, 0xE + bgt _0802918C + ldr r1, _08029188 @ =gDynamicBasePower + movs r0, 0x1E + strh r0, [r1] + movs r3, 0x5 + b _080291E4 + .align 2, 0 +_08029188: .4byte gDynamicBasePower +_0802918C: + cmp r3, 0x22 + bgt _080291A0 + ldr r1, _0802919C @ =gDynamicBasePower + movs r0, 0x32 + strh r0, [r1] + movs r3, 0x6 + b _080291E4 + .align 2, 0 +_0802919C: .4byte gDynamicBasePower +_080291A0: + cmp r3, 0x40 + bgt _080291B4 + ldr r1, _080291B0 @ =gDynamicBasePower + movs r0, 0x46 + strh r0, [r1] + movs r3, 0x7 + b _080291E4 + .align 2, 0 +_080291B0: .4byte gDynamicBasePower +_080291B4: + cmp r3, 0x54 + bgt _080291C8 + ldr r1, _080291C4 @ =gDynamicBasePower + movs r0, 0x5A + strh r0, [r1] + movs r3, 0x8 + b _080291E4 + .align 2, 0 +_080291C4: .4byte gDynamicBasePower +_080291C8: + cmp r3, 0x5E + bgt _080291DC + ldr r1, _080291D8 @ =gDynamicBasePower + movs r0, 0x6E + strh r0, [r1] + movs r3, 0x9 + b _080291E4 + .align 2, 0 +_080291D8: .4byte gDynamicBasePower +_080291DC: + ldr r1, _08029250 @ =gDynamicBasePower + movs r0, 0x96 + strh r0, [r1] + movs r3, 0xA +_080291E4: + ldr r1, _08029254 @ =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, _08029258 @ =gBankTarget + strb r2, [r1] + ldr r0, _0802925C @ =gNoOfAllBanks + ldrb r3, [r0] + adds r6, r1, 0 + ldr r0, _08029260 @ =gBattlescriptCurrInstr + mov r8, r0 + cmp r2, r3 + bcs _0802923C + adds r4, r6, 0 + ldr r0, _08029264 @ =gBankAttacker + ldrb r5, [r0] + ldr r1, _08029268 @ =gBitTable + mov r12, r1 + ldr r7, _0802926C @ =gAbsentBankFlags +_0802921A: + ldrb r2, [r4] + cmp r2, r5 + beq _08029230 + ldrb r0, [r7] + ldrb r1, [r6] + lsls r1, 2 + add r1, r12 + ldr r1, [r1] + ands r0, r1 + cmp r0, 0 + beq _0802923C +_08029230: + adds r0, r2, 0x1 + strb r0, [r4] + lsls r0, 24 + lsrs r0, 24 + cmp r0, r3 + bcc _0802921A +_0802923C: + mov r1, r8 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08029250: .4byte gDynamicBasePower +_08029254: .4byte gBattleTextBuff1 +_08029258: .4byte gBankTarget +_0802925C: .4byte gNoOfAllBanks +_08029260: .4byte gBattlescriptCurrInstr +_08029264: .4byte gBankAttacker +_08029268: .4byte gBitTable +_0802926C: .4byte gAbsentBankFlags + thumb_func_end atkB9_magnitudedamagecalculation + + thumb_func_start sub_8029270 +sub_8029270: @ 8029270 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r0, _08029294 @ =gMultiHitCounter + ldrb r0, [r0] + cmp r0, 0x1 + bne _080292A0 + ldr r0, _08029298 @ =gBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _0802929C + movs r0, 0x1 + b _080292BA + .align 2, 0 +_08029294: .4byte gMultiHitCounter +_08029298: .4byte gBankAttacker +_0802929C: + movs r0, 0 + b _080292BA +_080292A0: + ldr r0, _080292B4 @ =gBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + cmp r0, 0 + bne _080292B8 + movs r0, 0x3 + b _080292BA + .align 2, 0 +_080292B4: .4byte gBankAttacker +_080292B8: + movs r0, 0x2 +_080292BA: + bl GetBankByPlayerAI + ldr r1, _0802937C @ =gBankTarget + strb r0, [r1] + ldr r0, _08029380 @ =gActionForBanks + ldr r1, _0802937C @ =gBankTarget + mov r9, r1 + ldrb r3, [r1] + adds r0, r3, r0 + ldrb r0, [r0] + cmp r0, 0 + bne _080293BC + ldr r5, _08029384 @ =gBankAttacker + ldr r0, _08029388 @ =0x02000000 + ldr r2, _0802938C @ =0x00016010 + adds r1, r3, r2 + adds r1, r0 + ldrb r2, [r5] + mov r10, r0 + ldrb r1, [r1] + cmp r2, r1 + bne _080293BC + ldr r4, _08029390 @ =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 _080293BC + ldrb r0, [r5] + muls r0, r2 + adds r0, r4 + ldrh r0, [r0, 0x28] + cmp r0, 0 + beq _080293BC + ldr r0, _08029394 @ =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 _080293BC + ldr r0, _08029398 @ =gChosenMovesByBanks + lsls r1, r3, 1 + adds r1, r0 + ldrh r0, [r1] + cmp r0, 0xE4 + bne _080293BC + movs r1, 0 + ldr r0, _0802939C @ =gNoOfAllBanks + ldr r7, _080293A0 @ =gCurrentMove + mov r8, r7 + ldr r2, _080293A4 @ =gHitMarker + mov r12, r2 + ldrb r7, [r0] + cmp r1, r7 + bge _0802935A + ldr r6, _080293A8 @ =gTurnOrder + mov r5, r9 + ldr r4, _080293AC @ =gUnknown_02024A76 + movs r3, 0xB + adds r2, r0, 0 +_08029344: + adds r0, r1, r6 + ldrb r0, [r0] + ldrb r7, [r5] + cmp r0, r7 + bne _08029352 + adds r0, r1, r4 + strb r3, [r0] +_08029352: + adds r1, 0x1 + ldrb r0, [r2] + cmp r1, r0 + blt _08029344 +_0802935A: + movs r0, 0xE4 + mov r1, r8 + strh r0, [r1] + ldr r2, _080293B0 @ =gBattlescriptCurrInstr + ldr r0, [r2] + adds r0, 0x5 + str r0, [r2] + ldr r1, _080293B4 @ =0x00016002 + add r1, r10 + movs r0, 0x1 + strb r0, [r1] + mov r7, r12 + ldr r0, [r7] + ldr r1, _080293B8 @ =0xfffffbff + ands r0, r1 + str r0, [r7] + b _080293D6 + .align 2, 0 +_0802937C: .4byte gBankTarget +_08029380: .4byte gActionForBanks +_08029384: .4byte gBankAttacker +_08029388: .4byte 0x02000000 +_0802938C: .4byte 0x00016010 +_08029390: .4byte gBattleMons +_08029394: .4byte gDisableStructs +_08029398: .4byte gChosenMovesByBanks +_0802939C: .4byte gNoOfAllBanks +_080293A0: .4byte gCurrentMove +_080293A4: .4byte gHitMarker +_080293A8: .4byte gTurnOrder +_080293AC: .4byte gUnknown_02024A76 +_080293B0: .4byte gBattlescriptCurrInstr +_080293B4: .4byte 0x00016002 +_080293B8: .4byte 0xfffffbff +_080293BC: + ldr r3, _080293E4 @ =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] +_080293D6: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080293E4: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8029270 + + thumb_func_start sub_80293E8 +sub_80293E8: @ 80293E8 + push {lr} + ldr r2, _08029408 @ =gBattleWeather + ldrh r1, [r2] + movs r0, 0x60 + ands r0, r1 + cmp r0, 0 + beq _08029414 + ldr r2, _0802940C @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08029410 @ =gBattleCommunication + movs r0, 0x2 + strb r0, [r1, 0x5] + b _08029426 + .align 2, 0 +_08029408: .4byte gBattleWeather +_0802940C: .4byte gBattleMoveFlags +_08029410: .4byte gBattleCommunication +_08029414: + movs r0, 0x20 + strh r0, [r2] + ldr r1, _08029434 @ =gBattleCommunication + movs r0, 0x4 + strb r0, [r1, 0x5] + ldr r0, _08029438 @ =gWishFutureKnock + adds r0, 0x28 + movs r1, 0x5 + strb r1, [r0] +_08029426: + ldr r1, _0802943C @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08029434: .4byte gBattleCommunication +_08029438: .4byte gWishFutureKnock +_0802943C: .4byte gBattlescriptCurrInstr + thumb_func_end sub_80293E8 + + thumb_func_start atkBC_maxattackhalvehp +atkBC_maxattackhalvehp: @ 8029440 + push {r4,r5,lr} + ldr r5, _0802948C @ =gBattleMons + ldr r4, _08029490 @ =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 _08029458 + movs r1, 0x1 +_08029458: + movs r0, 0x19 + ldrsb r0, [r2, r0] + cmp r0, 0xB + bgt _0802949C + ldrh r0, [r2, 0x28] + cmp r0, r1 + bls _0802949C + movs r0, 0xC + strb r0, [r2, 0x19] + ldr r1, _08029494 @ =gBattleMoveDamage + ldrb r0, [r4] + muls r0, r3 + adds r0, r5 + ldrh r0, [r0, 0x2C] + lsrs r0, 1 + str r0, [r1] + cmp r0, 0 + bne _08029480 + movs r0, 0x1 + str r0, [r1] +_08029480: + ldr r1, _08029498 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _080294B6 + .align 2, 0 +_0802948C: .4byte gBattleMons +_08029490: .4byte gBankAttacker +_08029494: .4byte gBattleMoveDamage +_08029498: .4byte gBattlescriptCurrInstr +_0802949C: + ldr r3, _080294BC @ =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] +_080294B6: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080294BC: .4byte gBattlescriptCurrInstr + thumb_func_end atkBC_maxattackhalvehp + + thumb_func_start atkBD_copyfoestats +atkBD_copyfoestats: @ 80294C0 + push {r4-r7,lr} + movs r2, 0 + ldr r7, _080294F8 @ =gBattlescriptCurrInstr + ldr r6, _080294FC @ =gBankAttacker + movs r4, 0x58 + ldr r3, _08029500 @ =gUnknown_02024A98 + ldr r5, _08029504 @ =gBankTarget +_080294CE: + 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 _080294CE + ldr r0, [r7] + adds r0, 0x5 + str r0, [r7] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080294F8: .4byte gBattlescriptCurrInstr +_080294FC: .4byte gBankAttacker +_08029500: .4byte gUnknown_02024A98 +_08029504: .4byte gBankTarget + thumb_func_end atkBD_copyfoestats + + thumb_func_start atkBE_breakfree +atkBE_breakfree: @ 8029508 + push {r4,r5,lr} + ldr r1, _08029570 @ =gBattleMons + ldr r5, _08029574 @ =gBankAttacker + ldrb r2, [r5] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x50 + adds r3, r0, r1 + ldr r1, [r3] + movs r0, 0xE0 + lsls r0, 8 + ands r0, r1 + cmp r0, 0 + beq _08029594 + ldr r0, _08029578 @ =0xffff1fff + ands r1, r0 + str r1, [r3] + ldr r1, _0802957C @ =gBankTarget + ldr r2, _08029580 @ =0x02000000 + ldrb r0, [r5] + ldr r3, _08029584 @ =0x00016020 + adds r0, r3 + adds r0, r2 + ldrb r0, [r0] + strb r0, [r1] + ldr r1, _08029588 @ =gBattleTextBuff1 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x2 + strb r0, [r1, 0x1] + ldrb r0, [r5] + lsls r0, 1 + subs r3, 0x1C + adds r0, r3 + adds r0, r2 + ldrb r0, [r0] + strb r0, [r1, 0x2] + ldrb r0, [r5] + lsls r0, 1 + adds r3, 0x1 + adds r0, r3 + adds r0, r2 + ldrb r0, [r0] + strb r0, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + bl b_movescr_stack_push_cursor + ldr r1, _0802958C @ =gBattlescriptCurrInstr + ldr r0, _08029590 @ =gUnknown_081D92C2 + b _0802963E + .align 2, 0 +_08029570: .4byte gBattleMons +_08029574: .4byte gBankAttacker +_08029578: .4byte 0xffff1fff +_0802957C: .4byte gBankTarget +_08029580: .4byte 0x02000000 +_08029584: .4byte 0x00016020 +_08029588: .4byte gBattleTextBuff1 +_0802958C: .4byte gBattlescriptCurrInstr +_08029590: .4byte gUnknown_081D92C2 +_08029594: + ldr r4, _080295C8 @ =gStatuses3 + lsls r0, r2, 2 + adds r3, r0, r4 + ldr r1, [r3] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080295D4 + 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 b_movescr_stack_push_cursor + ldr r1, _080295CC @ =gBattlescriptCurrInstr + ldr r0, _080295D0 @ =gUnknown_081D92C9 + b _0802963E + .align 2, 0 +_080295C8: .4byte gStatuses3 +_080295CC: .4byte gBattlescriptCurrInstr +_080295D0: .4byte gUnknown_081D92C9 +_080295D4: + adds r0, r2, 0 + bl GetBankSide + ldr r4, _08029624 @ =gSideAffecting + lsls r0, 24 + lsrs r0, 23 + adds r0, r4 + ldrh r1, [r0] + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08029638 + ldrb r0, [r5] + bl GetBankSide + lsls r0, 24 + lsrs r0, 23 + adds r0, r4 + ldrh r2, [r0] + ldr r1, _08029628 @ =0x0000ffef + ands r1, r2 + movs r4, 0 + strh r1, [r0] + ldrb r0, [r5] + bl GetBankSide + ldr r2, _0802962C @ =gSideTimer + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + strb r4, [r1, 0x6] + bl b_movescr_stack_push_cursor + ldr r1, _08029630 @ =gBattlescriptCurrInstr + ldr r0, _08029634 @ =gUnknown_081D92D0 + b _0802963E + .align 2, 0 +_08029624: .4byte gSideAffecting +_08029628: .4byte 0x0000ffef +_0802962C: .4byte gSideTimer +_08029630: .4byte gBattlescriptCurrInstr +_08029634: .4byte gUnknown_081D92D0 +_08029638: + ldr r1, _08029648 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 +_0802963E: + str r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08029648: .4byte gBattlescriptCurrInstr + thumb_func_end atkBE_breakfree + + thumb_func_start sub_802964C +sub_802964C: @ 802964C + ldr r1, _08029670 @ =gBattleMons + ldr r0, _08029674 @ =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, _08029678 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + bx lr + .align 2, 0 +_08029670: .4byte gBattleMons +_08029674: .4byte gBankAttacker +_08029678: .4byte gBattlescriptCurrInstr + thumb_func_end sub_802964C + + thumb_func_start atkC0_recoverbasedonsunlight +atkC0_recoverbasedonsunlight: @ 802967C + push {r4-r7,lr} + sub sp, 0x4 + ldr r1, _080296E8 @ =gBankTarget + ldr r5, _080296EC @ =gBankAttacker + ldrb r0, [r5] + strb r0, [r1] + ldr r7, _080296F0 @ =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 _0802975C + ldr r4, _080296F4 @ =gBattleWeather + ldrh r0, [r4] + cmp r0, 0 + beq _080296CE + 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 _080296CE + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0x4D + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + cmp r0, 0 + beq _080296FC +_080296CE: + ldr r3, _080296F8 @ =gBattleMoveDamage + ldr r2, _080296F0 @ =gBattleMons + ldr r0, _080296EC @ =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 _08029736 + .align 2, 0 +_080296E8: .4byte gBankTarget +_080296EC: .4byte gBankAttacker +_080296F0: .4byte gBattleMons +_080296F4: .4byte gBattleWeather +_080296F8: .4byte gBattleMoveDamage +_080296FC: + ldrh r1, [r4] + movs r0, 0x60 + ands r0, r1 + cmp r0, 0 + beq _08029728 + ldr r4, _08029724 @ =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 _08029736 + .align 2, 0 +_08029724: .4byte gBattleMoveDamage +_08029728: + ldr r1, _08029754 @ =gBattleMoveDamage + ldrb r0, [r5] + muls r0, r6 + adds r0, r7 + ldrh r0, [r0, 0x2C] + lsrs r0, 2 + str r0, [r1] +_08029736: + adds r2, r1, 0 + ldr r0, [r2] + cmp r0, 0 + bne _08029742 + movs r0, 0x1 + str r0, [r2] +_08029742: + ldr r0, [r1] + negs r0, r0 + str r0, [r1] + ldr r1, _08029758 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _08029776 + .align 2, 0 +_08029754: .4byte gBattleMoveDamage +_08029758: .4byte gBattlescriptCurrInstr +_0802975C: + ldr r3, _08029780 @ =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] +_08029776: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08029780: .4byte gBattlescriptCurrInstr + thumb_func_end atkC0_recoverbasedonsunlight + + thumb_func_start sub_8029784 +sub_8029784: @ 8029784 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r2, _08029894 @ =gBattleMons + ldr r0, _08029898 @ =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, _0802989C @ =gDynamicBasePower + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + movs r1, 0x3F + bl __divsi3 + adds r0, 0x1E + strh r0, [r5] + ldr r5, _080298A0 @ =0x02000000 + lsls r0, r4, 4 + subs r0, r4 + movs r1, 0x3F + bl __divsi3 + adds r1, r0, 0x1 + ldr r0, _080298A4 @ =0x0001601c + adds r5, r0 + strb r1, [r5] + lsls r0, r1, 24 + lsrs r0, 24 + cmp r0, 0x8 + bls _08029876 + adds r0, r1, 0x1 + strb r0, [r5] +_08029876: + ldrb r0, [r5] + movs r1, 0xC0 + orrs r0, r1 + strb r0, [r5] + ldr r1, _080298A8 @ =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 + .align 2, 0 +_08029894: .4byte gBattleMons +_08029898: .4byte gBankAttacker +_0802989C: .4byte gDynamicBasePower +_080298A0: .4byte 0x02000000 +_080298A4: .4byte 0x0001601c +_080298A8: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8029784 + + thumb_func_start atkC2_selectnexttarget +atkC2_selectnexttarget: @ 80298AC + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, _08029908 @ =gBankTarget + movs r1, 0 + strb r1, [r0] + ldr r1, _0802990C @ =gNoOfAllBanks + ldrb r1, [r1] + adds r6, r0, 0 + ldr r0, _08029910 @ =gBattlescriptCurrInstr + mov r8, r0 + cmp r1, 0 + beq _080298F6 + adds r3, r6, 0 + ldr r0, _08029914 @ =gBankAttacker + ldrb r5, [r0] + ldr r0, _08029918 @ =gBitTable + mov r12, r0 + adds r4, r1, 0 + ldr r7, _0802991C @ =gAbsentBankFlags +_080298D4: + ldrb r2, [r3] + cmp r2, r5 + beq _080298EA + ldrb r0, [r7] + ldrb r1, [r6] + lsls r1, 2 + add r1, r12 + ldr r1, [r1] + ands r0, r1 + cmp r0, 0 + beq _080298F6 +_080298EA: + adds r0, r2, 0x1 + strb r0, [r3] + lsls r0, 24 + lsrs r0, 24 + cmp r0, r4 + bcc _080298D4 +_080298F6: + mov r1, r8 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08029908: .4byte gBankTarget +_0802990C: .4byte gNoOfAllBanks +_08029910: .4byte gBattlescriptCurrInstr +_08029914: .4byte gBankAttacker +_08029918: .4byte gBitTable +_0802991C: .4byte gAbsentBankFlags + thumb_func_end atkC2_selectnexttarget + + thumb_func_start atkC3_setfutureattack +atkC3_setfutureattack: @ 8029920 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + ldr r0, _08029958 @ =gWishFutureKnock + mov r8, r0 + ldr r7, _0802995C @ =gBankTarget + ldrb r1, [r7] + adds r0, r1, r0 + ldrb r6, [r0] + cmp r6, 0 + beq _08029964 + ldr r3, _08029960 @ =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 _08029A2E + .align 2, 0 +_08029958: .4byte gWishFutureKnock +_0802995C: .4byte gBankTarget +_08029960: .4byte gBattlescriptCurrInstr +_08029964: + lsls r1, 1 + mov r0, r8 + adds r0, 0x18 + adds r1, r0 + ldr r2, _08029A04 @ =gCurrentMove + mov r9, r2 + ldrh r0, [r2] + strh r0, [r1] + mov r0, r8 + adds r0, 0x4 + ldrb r4, [r7] + adds r0, r4 + ldr r5, _08029A08 @ =gBankAttacker + ldrb r1, [r5] + strb r1, [r0] + ldrb r0, [r7] + add r0, r8 + movs r1, 0x3 + strb r1, [r0] + ldr r4, _08029A0C @ =gSideAffecting + ldrb r0, [r7] + bl GetBankIdentity + movs r1, 0x1 + mov r10, r1 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + ldrh r3, [r1] + ldrb r0, [r5] + movs r4, 0x58 + muls r0, r4 + ldr r2, _08029A10 @ =gBattleMons + adds r0, r2 + ldrb r1, [r7] + muls r1, r4 + adds r1, r2 + mov r4, r9 + ldrh r2, [r4] + str r6, [sp] + str r6, [sp, 0x4] + ldrb r4, [r5] + str r4, [sp, 0x8] + ldrb r4, [r7] + str r4, [sp, 0xC] + bl CalculateBaseDamage + ldrb r1, [r7] + lsls r1, 2 + mov r2, r8 + adds r2, 0x8 + adds r1, r2 + str r0, [r1] + ldr r1, _08029A14 @ =gProtectStructs + ldrb r0, [r5] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 28 + cmp r0, 0 + bge _080299F2 + ldrb r4, [r7] + lsls r4, 2 + adds r4, r2 + ldr r1, [r4] + lsls r0, r1, 4 + subs r0, r1 + movs r1, 0xA + bl __divsi3 + str r0, [r4] +_080299F2: + mov r0, r9 + ldrh r1, [r0] + ldr r0, _08029A18 @ =0x00000161 + cmp r1, r0 + bne _08029A20 + ldr r0, _08029A1C @ =gBattleCommunication + mov r1, r10 + strb r1, [r0, 0x5] + b _08029A26 + .align 2, 0 +_08029A04: .4byte gCurrentMove +_08029A08: .4byte gBankAttacker +_08029A0C: .4byte gSideAffecting +_08029A10: .4byte gBattleMons +_08029A14: .4byte gProtectStructs +_08029A18: .4byte 0x00000161 +_08029A1C: .4byte gBattleCommunication +_08029A20: + ldr r1, _08029A40 @ =gBattleCommunication + movs r0, 0 + strb r0, [r1, 0x5] +_08029A26: + ldr r1, _08029A44 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_08029A2E: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08029A40: .4byte gBattleCommunication +_08029A44: .4byte gBattlescriptCurrInstr + thumb_func_end atkC3_setfutureattack + + thumb_func_start atkC4_802B910 +atkC4_802B910: @ 8029A48 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r0, _08029A8C @ =gBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + ldr r7, _08029A90 @ =gEnemyParty + cmp r0, 0 + bne _08029A62 + ldr r7, _08029A94 @ =gPlayerParty +_08029A62: + ldr r2, _08029A98 @ =gBattleMons + ldr r0, _08029A9C @ =gBankTarget + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrh r0, [r0, 0x28] + cmp r0, 0 + bne _08029AA4 + ldr r3, _08029AA0 @ =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 _08029C40 + .align 2, 0 +_08029A8C: .4byte gBankAttacker +_08029A90: .4byte gEnemyParty +_08029A94: .4byte gPlayerParty +_08029A98: .4byte gBattleMons +_08029A9C: .4byte gBankTarget +_08029AA0: .4byte gBattlescriptCurrInstr +_08029AA4: + ldr r6, _08029BE0 @ =gBattleCommunication + ldrb r0, [r6] + mov r8, r0 + cmp r0, 0x5 + bls _08029AB0 + b _08029C0C +_08029AB0: + adds r4, r6, 0 + movs r5, 0x64 +_08029AB4: + ldrb r0, [r4] + muls r0, r5 + adds r0, r7, r0 + movs r1, 0x39 + bl GetMonData + cmp r0, 0 + beq _08029AF8 + ldrb r0, [r6] + muls r0, r5 + adds r0, r7, r0 + movs r1, 0x41 + bl GetMonData + cmp r0, 0 + beq _08029AF8 + 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 _08029AF8 + ldrb r0, [r4] + muls r0, r5 + adds r0, r7, r0 + movs r1, 0x37 + bl GetMonData + cmp r0, 0 + beq _08029B08 +_08029AF8: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + adds r6, r4, 0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x5 + bls _08029AB4 +_08029B08: + ldr r1, _08029BE0 @ =gBattleCommunication + mov r9, r1 + ldrb r2, [r1] + cmp r2, 0x5 + bhi _08029C0C + ldr r1, _08029BE4 @ =gBattleTextBuff1 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x4 + strb r0, [r1, 0x1] + ldr r6, _08029BE8 @ =gBankAttacker + ldrb r0, [r6] + strb r0, [r1, 0x2] + strb r2, [r1, 0x3] + movs r0, 0xFF + strb r0, [r1, 0x4] + ldr r1, _08029BEC @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x9 + str r0, [r1] + ldr r2, _08029BF0 @ =gBattleMoveDamage + mov r8, r2 + ldr r5, _08029BF4 @ =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, _08029BF8 @ =gBattleMoves + ldr r0, _08029BFC @ =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, _08029C00 @ =gBattleMons + ldr r1, _08029C04 @ =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, _08029C08 @ =gProtectStructs + ldrb r0, [r6] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 28 + cmp r0, 0 + bge _08029BD4 + lsls r0, r2, 4 + subs r0, r2 + movs r1, 0xA + bl __divsi3 + mov r1, r8 + str r0, [r1] +_08029BD4: + mov r2, r9 + ldrb r0, [r2] + adds r0, 0x1 + strb r0, [r2] + b _08029C46 + .align 2, 0 +_08029BE0: .4byte gBattleCommunication +_08029BE4: .4byte gBattleTextBuff1 +_08029BE8: .4byte gBankAttacker +_08029BEC: .4byte gBattlescriptCurrInstr +_08029BF0: .4byte gBattleMoveDamage +_08029BF4: .4byte gBaseStats +_08029BF8: .4byte gBattleMoves +_08029BFC: .4byte gCurrentMove +_08029C00: .4byte gBattleMons +_08029C04: .4byte gBankTarget +_08029C08: .4byte gProtectStructs +_08029C0C: + mov r0, r8 + cmp r0, 0 + beq _08029C2C + ldr r3, _08029C28 @ =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 _08029C40 + .align 2, 0 +_08029C28: .4byte gBattlescriptCurrInstr +_08029C2C: + ldr r3, _08029C54 @ =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] +_08029C40: + lsls r0, 24 + orrs r1, r0 + str r1, [r3] +_08029C46: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08029C54: .4byte gBattlescriptCurrInstr + thumb_func_end atkC4_802B910 + + thumb_func_start atkC5_hidepreattack +atkC5_hidepreattack: @ 8029C58 + push {lr} + ldr r0, _08029C6C @ =gCurrentMove + ldrh r1, [r0] + cmp r1, 0x5B + beq _08029C98 + cmp r1, 0x5B + bgt _08029C70 + cmp r1, 0x13 + beq _08029C7C + b _08029CC4 + .align 2, 0 +_08029C6C: .4byte gCurrentMove +_08029C70: + ldr r0, _08029C8C @ =0x00000123 + cmp r1, r0 + beq _08029CB0 + adds r0, 0x31 + cmp r1, r0 + bne _08029CC4 +_08029C7C: + ldr r2, _08029C90 @ =gStatuses3 + ldr r0, _08029C94 @ =gBankAttacker + ldrb r1, [r0] + lsls r1, 2 + adds r1, r2 + ldr r0, [r1] + movs r2, 0x40 + b _08029CC0 + .align 2, 0 +_08029C8C: .4byte 0x00000123 +_08029C90: .4byte gStatuses3 +_08029C94: .4byte gBankAttacker +_08029C98: + ldr r2, _08029CA8 @ =gStatuses3 + ldr r0, _08029CAC @ =gBankAttacker + ldrb r1, [r0] + lsls r1, 2 + adds r1, r2 + ldr r0, [r1] + movs r2, 0x80 + b _08029CC0 + .align 2, 0 +_08029CA8: .4byte gStatuses3 +_08029CAC: .4byte gBankAttacker +_08029CB0: + ldr r2, _08029CD0 @ =gStatuses3 + ldr r0, _08029CD4 @ =gBankAttacker + ldrb r1, [r0] + lsls r1, 2 + adds r1, r2 + ldr r0, [r1] + movs r2, 0x80 + lsls r2, 11 +_08029CC0: + orrs r0, r2 + str r0, [r1] +_08029CC4: + ldr r1, _08029CD8 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08029CD0: .4byte gStatuses3 +_08029CD4: .4byte gBankAttacker +_08029CD8: .4byte gBattlescriptCurrInstr + thumb_func_end atkC5_hidepreattack + + thumb_func_start atkC6_unhidepostattack +atkC6_unhidepostattack: @ 8029CDC + push {lr} + ldr r0, _08029CF0 @ =gCurrentMove + ldrh r1, [r0] + cmp r1, 0x5B + beq _08029D20 + cmp r1, 0x5B + bgt _08029CF4 + cmp r1, 0x13 + beq _08029D00 + b _08029D4E + .align 2, 0 +_08029CF0: .4byte gCurrentMove +_08029CF4: + ldr r0, _08029D14 @ =0x00000123 + cmp r1, r0 + beq _08029D3C + adds r0, 0x31 + cmp r1, r0 + bne _08029D4E +_08029D00: + ldr r2, _08029D18 @ =gStatuses3 + ldr r0, _08029D1C @ =gBankAttacker + ldrb r1, [r0] + lsls r1, 2 + adds r1, r2 + ldr r0, [r1] + movs r2, 0x41 + negs r2, r2 + b _08029D4A + .align 2, 0 +_08029D14: .4byte 0x00000123 +_08029D18: .4byte gStatuses3 +_08029D1C: .4byte gBankAttacker +_08029D20: + ldr r2, _08029D34 @ =gStatuses3 + ldr r0, _08029D38 @ =gBankAttacker + ldrb r1, [r0] + lsls r1, 2 + adds r1, r2 + ldr r0, [r1] + movs r2, 0x81 + negs r2, r2 + b _08029D4A + .align 2, 0 +_08029D34: .4byte gStatuses3 +_08029D38: .4byte gBankAttacker +_08029D3C: + ldr r2, _08029D5C @ =gStatuses3 + ldr r0, _08029D60 @ =gBankAttacker + ldrb r1, [r0] + lsls r1, 2 + adds r1, r2 + ldr r0, [r1] + ldr r2, _08029D64 @ =0xfffbffff +_08029D4A: + ands r0, r2 + str r0, [r1] +_08029D4E: + ldr r1, _08029D68 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08029D5C: .4byte gStatuses3 +_08029D60: .4byte gBankAttacker +_08029D64: .4byte 0xfffbffff +_08029D68: .4byte gBattlescriptCurrInstr + thumb_func_end atkC6_unhidepostattack + + thumb_func_start atkC7_setminimize +atkC7_setminimize: @ 8029D6C + push {lr} + ldr r0, _08029D9C @ =gHitMarker + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 18 + ands r0, r1 + cmp r0, 0 + beq _08029D90 + ldr r2, _08029DA0 @ =gStatuses3 + ldr r0, _08029DA4 @ =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] +_08029D90: + ldr r1, _08029DA8 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08029D9C: .4byte gHitMarker +_08029DA0: .4byte gStatuses3 +_08029DA4: .4byte gBankAttacker +_08029DA8: .4byte gBattlescriptCurrInstr + thumb_func_end atkC7_setminimize + + thumb_func_start sub_8029DAC +sub_8029DAC: @ 8029DAC + push {lr} + ldr r3, _08029DD0 @ =gBattleWeather + ldrh r1, [r3] + movs r2, 0x80 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _08029DDC + ldr r2, _08029DD4 @ =gBattleMoveFlags + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08029DD8 @ =gBattleCommunication + movs r0, 0x2 + strb r0, [r1, 0x5] + b _08029DEA + .align 2, 0 +_08029DD0: .4byte gBattleWeather +_08029DD4: .4byte gBattleMoveFlags +_08029DD8: .4byte gBattleCommunication +_08029DDC: + strh r2, [r3] + ldr r0, _08029DF8 @ =gBattleCommunication + movs r1, 0x5 + strb r1, [r0, 0x5] + ldr r0, _08029DFC @ =gWishFutureKnock + adds r0, 0x28 + strb r1, [r0] +_08029DEA: + ldr r1, _08029E00 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08029DF8: .4byte gBattleCommunication +_08029DFC: .4byte gWishFutureKnock +_08029E00: .4byte gBattlescriptCurrInstr + thumb_func_end sub_8029DAC + + thumb_func_start atkC9_jumpifattackandspecialattackcannotfall +atkC9_jumpifattackandspecialattackcannotfall: @ 8029E04 + push {r4,lr} + ldr r2, _08029E48 @ =gBattleMons + ldr r0, _08029E4C @ =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 _08029E58 + movs r0, 0x1C + ldrsb r0, [r1, r0] + cmp r0, 0 + bne _08029E58 + ldr r0, _08029E50 @ =gBattleCommunication + ldrb r0, [r0, 0x6] + cmp r0, 0x1 + beq _08029E58 + ldr r3, _08029E54 @ =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 _08029E84 + .align 2, 0 +_08029E48: .4byte gBattleMons +_08029E4C: .4byte gBankTarget +_08029E50: .4byte gBattleCommunication +_08029E54: .4byte gBattlescriptCurrInstr +_08029E58: + ldr r4, _08029E8C @ =gActiveBank + ldr r0, _08029E90 @ =gBankAttacker + ldrb r0, [r0] + strb r0, [r4] + ldr r2, _08029E94 @ =gBattleMoveDamage + ldrb r1, [r4] + movs r0, 0x58 + muls r0, r1 + adds r0, r3 + ldrh r0, [r0, 0x28] + str r0, [r2] + ldr r1, _08029E98 @ =0x00007fff + movs r0, 0 + bl EmitHealthBarUpdate + ldrb r0, [r4] + bl MarkBufferBankForExecution + ldr r1, _08029E9C @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_08029E84: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08029E8C: .4byte gActiveBank +_08029E90: .4byte gBankAttacker +_08029E94: .4byte gBattleMoveDamage +_08029E98: .4byte 0x00007fff +_08029E9C: .4byte gBattlescriptCurrInstr + thumb_func_end atkC9_jumpifattackandspecialattackcannotfall + + thumb_func_start atkCA_setforcedtarget +atkCA_setforcedtarget: @ 8029EA0 + push {r4,r5,lr} + ldr r4, _08029EE0 @ =gBankAttacker + ldrb r0, [r4] + bl GetBankSide + ldr r5, _08029EE4 @ =gSideTimer + 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, _08029EE8 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08029EE0: .4byte gBankAttacker +_08029EE4: .4byte gSideTimer +_08029EE8: .4byte gBattlescriptCurrInstr + thumb_func_end atkCA_setforcedtarget + + thumb_func_start atkCB_setcharge +atkCB_setcharge: @ 8029EEC + push {r4,lr} + ldr r0, _08029F40 @ =gStatuses3 + ldr r3, _08029F44 @ =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, _08029F48 @ =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, _08029F4C @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08029F40: .4byte gStatuses3 +_08029F44: .4byte gBankAttacker +_08029F48: .4byte gDisableStructs +_08029F4C: .4byte gBattlescriptCurrInstr + thumb_func_end atkCB_setcharge + + thumb_func_start atkCC_callterrainattack +atkCC_callterrainattack: @ 8029F50 + push {r4,lr} + ldr r2, _08029FA0 @ =gHitMarker + ldr r0, [r2] + ldr r1, _08029FA4 @ =0xfffffbff + ands r0, r1 + str r0, [r2] + ldr r4, _08029FA8 @ =gCurrentMove + ldr r1, _08029FAC @ =gNaturePowerMoves + ldr r0, _08029FB0 @ =gBattleTerrain + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r4] + ldrh r0, [r4] + movs r1, 0 + bl sub_801B5C0 + ldr r1, _08029FB4 @ =gBankTarget + strb r0, [r1] + ldr r3, _08029FB8 @ =gUnknown_081D6BBC + ldr r2, _08029FBC @ =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 b_movescr_stack_push + ldr r1, _08029FC0 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08029FA0: .4byte gHitMarker +_08029FA4: .4byte 0xfffffbff +_08029FA8: .4byte gCurrentMove +_08029FAC: .4byte gNaturePowerMoves +_08029FB0: .4byte gBattleTerrain +_08029FB4: .4byte gBankTarget +_08029FB8: .4byte gUnknown_081D6BBC +_08029FBC: .4byte gBattleMoves +_08029FC0: .4byte gBattlescriptCurrInstr + thumb_func_end atkCC_callterrainattack + + thumb_func_start atkCD_cureifburnedparalysedorpoisoned +atkCD_cureifburnedparalysedorpoisoned: @ 8029FC4 + push {r4-r6,lr} + sub sp, 0x4 + ldr r1, _0802A010 @ =gBattleMons + ldr r3, _0802A014 @ =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 _0802A020 + movs r0, 0 + str r0, [r2] + ldr r1, _0802A018 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + ldr r4, _0802A01C @ =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 EmitSetAttributes + ldrb r0, [r4] + bl MarkBufferBankForExecution + b _0802A03A + .align 2, 0 +_0802A010: .4byte gBattleMons +_0802A014: .4byte gBankAttacker +_0802A018: .4byte gBattlescriptCurrInstr +_0802A01C: .4byte gActiveBank +_0802A020: + ldr r3, _0802A044 @ =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] +_0802A03A: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0802A044: .4byte gBattlescriptCurrInstr + thumb_func_end atkCD_cureifburnedparalysedorpoisoned + + thumb_func_start atkCE_settorment +atkCE_settorment: @ 802A048 + push {lr} + ldr r1, _0802A080 @ =gBattleMons + ldr r0, _0802A084 @ =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 _0802A08C + ldr r3, _0802A088 @ =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 _0802A098 + .align 2, 0 +_0802A080: .4byte gBattleMons +_0802A084: .4byte gBankTarget +_0802A088: .4byte gBattlescriptCurrInstr +_0802A08C: + orrs r1, r2 + str r1, [r0] + ldr r1, _0802A09C @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802A098: + pop {r0} + bx r0 + .align 2, 0 +_0802A09C: .4byte gBattlescriptCurrInstr + thumb_func_end atkCE_settorment + + thumb_func_start atkCF_jumpifnodamage +atkCF_jumpifnodamage: @ 802A0A0 + push {lr} + ldr r2, _0802A0CC @ =gProtectStructs + ldr r0, _0802A0D0 @ =gBankAttacker + ldrb r0, [r0] + lsls r1, r0, 4 + adds r0, r2, 0x4 + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + bne _0802A0C0 + adds r0, r2, 0 + adds r0, 0x8 + adds r0, r1, r0 + ldr r0, [r0] + cmp r0, 0 + beq _0802A0D8 +_0802A0C0: + ldr r1, _0802A0D4 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _0802A0F2 + .align 2, 0 +_0802A0CC: .4byte gProtectStructs +_0802A0D0: .4byte gBankAttacker +_0802A0D4: .4byte gBattlescriptCurrInstr +_0802A0D8: + ldr r3, _0802A0F8 @ =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] +_0802A0F2: + pop {r0} + bx r0 + .align 2, 0 +_0802A0F8: .4byte gBattlescriptCurrInstr + thumb_func_end atkCF_jumpifnodamage + + thumb_func_start atkD0_settaunt +atkD0_settaunt: @ 802A0FC + push {r4,lr} + ldr r4, _0802A140 @ =gDisableStructs + ldr r3, _0802A144 @ =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 _0802A14C + 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, _0802A148 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _0802A166 + .align 2, 0 +_0802A140: .4byte gDisableStructs +_0802A144: .4byte gBankTarget +_0802A148: .4byte gBattlescriptCurrInstr +_0802A14C: + ldr r3, _0802A16C @ =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] +_0802A166: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802A16C: .4byte gBattlescriptCurrInstr + thumb_func_end atkD0_settaunt + + thumb_func_start sub_802A170 +sub_802A170: @ 802A170 + push {r4,lr} + ldr r4, _0802A1D8 @ =gBankAttacker + ldrb r0, [r4] + bl GetBankIdentity + movs r1, 0x2 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + bl GetBankByPlayerAI + ldr r3, _0802A1DC @ =gBankTarget + strb r0, [r3] + ldr r0, _0802A1E0 @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0802A1F4 + ldr r0, _0802A1E4 @ =gAbsentBankFlags + ldrb r1, [r0] + ldr r2, _0802A1E8 @ =gBitTable + ldrb r3, [r3] + lsls r0, r3, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _0802A1F4 + ldr r1, _0802A1EC @ =gProtectStructs + ldrb r0, [r4] + lsls r0, 4 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 28 + cmp r0, 0 + blt _0802A1F4 + lsls r0, r3, 4 + adds r2, r0, r1 + ldrb r1, [r2] + lsls r0, r1, 28 + cmp r0, 0 + blt _0802A1F4 + movs r0, 0x8 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0802A1F0 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _0802A20E + .align 2, 0 +_0802A1D8: .4byte gBankAttacker +_0802A1DC: .4byte gBankTarget +_0802A1E0: .4byte gBattleTypeFlags +_0802A1E4: .4byte gAbsentBankFlags +_0802A1E8: .4byte gBitTable +_0802A1EC: .4byte gProtectStructs +_0802A1F0: .4byte gBattlescriptCurrInstr +_0802A1F4: + ldr r3, _0802A214 @ =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] +_0802A20E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802A214: .4byte gBattlescriptCurrInstr + thumb_func_end sub_802A170 + + thumb_func_start sub_802A218 +sub_802A218: @ 802A218 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + ldr r0, _0802A30C @ =gBankAttacker + ldrb r0, [r0] + bl GetBankSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0802A24C + ldr r0, _0802A310 @ =gBattleTypeFlags + ldrh r1, [r0] + ldr r0, _0802A314 @ =0x00000902 + ands r0, r1 + cmp r0, 0 + bne _0802A24C + ldr r0, _0802A318 @ =gTrainerBattleOpponent + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 3 + cmp r1, r0 + bne _0802A2EE +_0802A24C: + ldr r4, _0802A30C @ =gBankAttacker + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _0802A310 @ =gBattleTypeFlags + ldrh r1, [r0] + ldr r0, _0802A314 @ =0x00000902 + ands r0, r1 + cmp r0, 0 + bne _0802A290 + ldr r0, _0802A318 @ =gTrainerBattleOpponent + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 3 + cmp r1, r0 + beq _0802A290 + ldr r0, _0802A31C @ =gWishFutureKnock + adds r0, 0x29 + adds r0, r2, r0 + ldrb r1, [r0] + ldr r3, _0802A320 @ =gBitTable + ldr r2, _0802A324 @ =gBattlePartyID + ldrb r0, [r4] + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + lsls r0, 2 + adds r0, r3 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _0802A2EE +_0802A290: + ldr r0, _0802A328 @ =gBattleMons + mov r9, r0 + ldr r1, _0802A30C @ =gBankAttacker + ldrb r4, [r1] + movs r2, 0x58 + mov r8, r2 + mov r0, r8 + muls r0, r4 + mov r3, r9 + adds r5, r0, r3 + ldrh r3, [r5, 0x2E] + adds r1, r3, 0 + cmp r1, 0 + bne _0802A2BE + ldr r0, _0802A32C @ =gBankTarget + ldrb r0, [r0] + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + add r0, r9 + ldrh r0, [r0, 0x2E] + cmp r0, 0 + beq _0802A2EE +_0802A2BE: + cmp r1, 0xAF + beq _0802A2EE + ldr r7, _0802A32C @ =gBankTarget + ldrb r0, [r7] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + mov r1, r9 + adds r2, r0, r1 + ldrh r1, [r2, 0x2E] + cmp r1, 0xAF + beq _0802A2EE + adds r0, r3, 0 + subs r0, 0x79 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xB + bls _0802A2EE + adds r0, r1, 0 + subs r0, 0x79 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xB + bhi _0802A334 +_0802A2EE: + ldr r3, _0802A330 @ =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 _0802A49A + .align 2, 0 +_0802A30C: .4byte gBankAttacker +_0802A310: .4byte gBattleTypeFlags +_0802A314: .4byte 0x00000902 +_0802A318: .4byte gTrainerBattleOpponent +_0802A31C: .4byte gWishFutureKnock +_0802A320: .4byte gBitTable +_0802A324: .4byte gBattlePartyID +_0802A328: .4byte gBattleMons +_0802A32C: .4byte gBankTarget +_0802A330: .4byte gBattlescriptCurrInstr +_0802A334: + adds r0, r2, 0 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x3C + bne _0802A36C + ldr r1, _0802A360 @ =gBattlescriptCurrInstr + ldr r0, _0802A364 @ =BattleScript_NoItemSteal + str r0, [r1] + ldr r1, _0802A368 @ =gLastUsedAbility + ldrb r0, [r7] + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + add r0, r9 + adds r0, 0x20 + ldrb r0, [r0] + strb r0, [r1] + ldrb r0, [r7] + ldrb r1, [r1] + bl sub_81074C4 + b _0802A49A + .align 2, 0 +_0802A360: .4byte gBattlescriptCurrInstr +_0802A364: .4byte BattleScript_NoItemSteal +_0802A368: .4byte gLastUsedAbility +_0802A36C: + lsls r0, r4, 1 + ldr r4, _0802A458 @ =0x020160f0 + adds r6, r0, r4 + ldrh r5, [r5, 0x2E] + mov r10, r5 + strh r1, [r6] + ldr r3, _0802A45C @ =gBankAttacker + ldrb r0, [r3] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + add r0, r9 + movs r1, 0 + strh r1, [r0, 0x2E] + ldrb r0, [r7] + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + add r0, r9 + mov r3, r10 + strh r3, [r0, 0x2E] + ldr r5, _0802A460 @ =gActiveBank + ldr r1, _0802A45C @ =gBankAttacker + ldrb r0, [r1] + strb r0, [r5] + str r6, [sp] + movs r0, 0 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl EmitSetAttributes + ldr r2, _0802A45C @ =gBankAttacker + ldrb r0, [r2] + bl MarkBufferBankForExecution + ldrb r0, [r7] + strb r0, [r5] + ldrb r0, [r7] + mov r3, r8 + muls r3, r0 + adds r0, r3, 0 + mov r1, r9 + adds r1, 0x2E + adds r0, r1 + str r0, [sp] + movs r0, 0 + movs r1, 0x2 + movs r2, 0 + movs r3, 0x2 + bl EmitSetAttributes + ldrb r0, [r7] + bl MarkBufferBankForExecution + ldr r0, _0802A464 @ =0xfffe9f10 + adds r4, r0 + ldrb r0, [r7] + lsls r0, 1 + ldr r2, _0802A468 @ =0x000160e8 + adds r0, r2 + adds r0, r4 + movs r1, 0 + strb r1, [r0] + ldrb r0, [r7] + lsls r0, 1 + ldr r1, _0802A46C @ =0x000160e9 + adds r0, r1 + adds r0, r4 + movs r3, 0 + strb r3, [r0] + ldr r3, _0802A45C @ =gBankAttacker + ldrb r0, [r3] + lsls r0, 1 + adds r0, r2 + adds r0, r4 + movs r2, 0 + strb r2, [r0] + ldrb r0, [r3] + lsls r0, 1 + adds r0, r1 + adds r0, r4 + strb r2, [r0] + ldr r1, _0802A470 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + ldr r1, _0802A474 @ =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, _0802A478 @ =gBattleTextBuff2 + strb r3, [r1] + strb r2, [r1, 0x1] + mov r3, r10 + strb r3, [r1, 0x2] + mov r2, r10 + lsrs r0, r2, 8 + strb r0, [r1, 0x3] + movs r0, 0x1 + negs r0, r0 + strb r0, [r1, 0x4] + cmp r2, 0 + beq _0802A480 + ldrh r0, [r6] + cmp r0, 0 + beq _0802A494 + ldr r1, _0802A47C @ =gBattleCommunication + movs r0, 0x2 + b _0802A498 + .align 2, 0 +_0802A458: .4byte 0x020160f0 +_0802A45C: .4byte gBankAttacker +_0802A460: .4byte gActiveBank +_0802A464: .4byte 0xfffe9f10 +_0802A468: .4byte 0x000160e8 +_0802A46C: .4byte 0x000160e9 +_0802A470: .4byte gBattlescriptCurrInstr +_0802A474: .4byte gBattleTextBuff1 +_0802A478: .4byte gBattleTextBuff2 +_0802A47C: .4byte gBattleCommunication +_0802A480: + ldrh r0, [r6] + cmp r0, 0 + beq _0802A494 + ldr r0, _0802A490 @ =gBattleCommunication + movs r3, 0 + strb r3, [r0, 0x5] + b _0802A49A + .align 2, 0 +_0802A490: .4byte gBattleCommunication +_0802A494: + ldr r1, _0802A4AC @ =gBattleCommunication + movs r0, 0x1 +_0802A498: + strb r0, [r1, 0x5] +_0802A49A: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802A4AC: .4byte gBattleCommunication + thumb_func_end sub_802A218 + + thumb_func_start sub_802A4B0 +sub_802A4B0: @ 802A4B0 + push {r4,lr} + ldr r3, _0802A4F0 @ =gBattleMons + ldr r4, _0802A4F4 @ =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 _0802A504 + cmp r0, 0x19 + beq _0802A504 + ldr r0, _0802A4F8 @ =gBankAttacker + ldrb r0, [r0] + muls r0, r2 + adds r0, r3 + adds r0, 0x20 + strb r1, [r0] + ldr r1, _0802A4FC @ =gLastUsedAbility + ldrb r0, [r4] + muls r0, r2 + adds r0, r3 + adds r0, 0x20 + ldrb r0, [r0] + strb r0, [r1] + ldr r1, _0802A500 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _0802A51E + .align 2, 0 +_0802A4F0: .4byte gBattleMons +_0802A4F4: .4byte gBankTarget +_0802A4F8: .4byte gBankAttacker +_0802A4FC: .4byte gLastUsedAbility +_0802A500: .4byte gBattlescriptCurrInstr +_0802A504: + ldr r3, _0802A524 @ =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] +_0802A51E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802A524: .4byte gBattlescriptCurrInstr + thumb_func_end sub_802A4B0 + + thumb_func_start atkD4_802C408 +atkD4_802C408: @ 802A528 + push {r4-r7,lr} + ldr r7, _0802A53C @ =gBattlescriptCurrInstr + ldr r2, [r7] + ldrb r3, [r2, 0x1] + cmp r3, 0 + beq _0802A540 + cmp r3, 0x1 + beq _0802A578 + b _0802A5F4 + .align 2, 0 +_0802A53C: .4byte gBattlescriptCurrInstr +_0802A540: + ldr r1, _0802A56C @ =gWishFutureKnock + ldr r4, _0802A570 @ =gBankAttacker + adds r0, r1, 0 + adds r0, 0x20 + ldrb r5, [r4] + adds r3, r0, r5 + ldrb r0, [r3] + cmp r0, 0 + bne _0802A5C4 + movs r0, 0x2 + strb r0, [r3] + ldrb r0, [r4] + adds r1, 0x24 + adds r1, r0, r1 + ldr r2, _0802A574 @ =gBattlePartyID + lsls r0, 1 + adds r0, r2 + ldrh r0, [r0] + strb r0, [r1] + ldr r0, [r7] + adds r0, 0x6 + b _0802A5F2 + .align 2, 0 +_0802A56C: .4byte gWishFutureKnock +_0802A570: .4byte gBankAttacker +_0802A574: .4byte gBattlePartyID +_0802A578: + ldr r1, _0802A5DC @ =gBattleTextBuff1 + movs r0, 0xFD + strb r0, [r1] + movs r0, 0x4 + strb r0, [r1, 0x1] + ldr r4, _0802A5E0 @ =gBankTarget + ldrb r0, [r4] + strb r0, [r1, 0x2] + ldr r0, _0802A5E4 @ =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, _0802A5E8 @ =gBattleMoveDamage + ldr r6, _0802A5EC @ =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 _0802A5B0 + str r3, [r1] +_0802A5B0: + 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 _0802A5F0 +_0802A5C4: + 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 _0802A5F4 + .align 2, 0 +_0802A5DC: .4byte gBattleTextBuff1 +_0802A5E0: .4byte gBankTarget +_0802A5E4: .4byte gWishFutureKnock +_0802A5E8: .4byte gBattleMoveDamage +_0802A5EC: .4byte gBattleMons +_0802A5F0: + adds r0, r2, 0x6 +_0802A5F2: + str r0, [r7] +_0802A5F4: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end atkD4_802C408 + + thumb_func_start sub_802A5FC +sub_802A5FC: @ 802A5FC + push {lr} + ldr r1, _0802A634 @ =gStatuses3 + ldr r0, _0802A638 @ =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 _0802A640 + ldr r3, _0802A63C @ =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 _0802A64C + .align 2, 0 +_0802A634: .4byte gStatuses3 +_0802A638: .4byte gBankAttacker +_0802A63C: .4byte gBattlescriptCurrInstr +_0802A640: + orrs r1, r3 + str r1, [r2] + ldr r1, _0802A650 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802A64C: + pop {r0} + bx r0 + .align 2, 0 +_0802A650: .4byte gBattlescriptCurrInstr + thumb_func_end sub_802A5FC + + thumb_func_start atkD6_doubledamagedealtifdamaged +atkD6_doubledamagedealtifdamaged: @ 802A654 + push {lr} + ldr r3, _0802A6A4 @ =gProtectStructs + ldr r0, _0802A6A8 @ =gBankAttacker + ldrb r0, [r0] + lsls r2, r0, 4 + adds r0, r3, 0x4 + adds r0, r2, r0 + ldr r0, [r0] + cmp r0, 0 + beq _0802A674 + adds r0, r2, r3 + ldr r1, _0802A6AC @ =gBankTarget + ldrb r0, [r0, 0xC] + ldrb r1, [r1] + cmp r0, r1 + beq _0802A68C +_0802A674: + adds r0, r3, 0 + adds r0, 0x8 + adds r0, r2, r0 + ldr r0, [r0] + cmp r0, 0 + beq _0802A696 + adds r0, r2, r3 + ldr r1, _0802A6AC @ =gBankTarget + ldrb r0, [r0, 0xD] + ldrb r1, [r1] + cmp r0, r1 + bne _0802A696 +_0802A68C: + ldr r0, _0802A6B0 @ =0x02000000 + ldr r1, _0802A6B4 @ =0x0001601f + adds r0, r1 + movs r1, 0x2 + strb r1, [r0] +_0802A696: + ldr r1, _0802A6B8 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0802A6A4: .4byte gProtectStructs +_0802A6A8: .4byte gBankAttacker +_0802A6AC: .4byte gBankTarget +_0802A6B0: .4byte 0x02000000 +_0802A6B4: .4byte 0x0001601f +_0802A6B8: .4byte gBattlescriptCurrInstr + thumb_func_end atkD6_doubledamagedealtifdamaged + + thumb_func_start sub_802A6BC +sub_802A6BC: @ 802A6BC + push {r4,lr} + ldr r1, _0802A700 @ =gStatuses3 + ldr r0, _0802A704 @ =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 _0802A6E4 + ldr r1, _0802A708 @ =gBattleMons + movs r0, 0x58 + muls r0, r3 + adds r1, 0x4C + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _0802A710 +_0802A6E4: + ldr r3, _0802A70C @ =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 _0802A720 + .align 2, 0 +_0802A700: .4byte gStatuses3 +_0802A704: .4byte gBankTarget +_0802A708: .4byte gBattleMons +_0802A70C: .4byte gBattlescriptCurrInstr +_0802A710: + movs r0, 0x80 + lsls r0, 5 + orrs r2, r0 + str r2, [r4] + ldr r1, _0802A728 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802A720: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802A728: .4byte gBattlescriptCurrInstr + thumb_func_end sub_802A6BC + + thumb_func_start atkD8_setdamagetohealthdifference +atkD8_setdamagetohealthdifference: @ 802A72C + push {lr} + ldr r2, _0802A768 @ =gBattleMons + ldr r0, _0802A76C @ =gBankTarget + ldrb r0, [r0] + movs r1, 0x58 + muls r0, r1 + adds r3, r0, r2 + ldr r0, _0802A770 @ =gBankAttacker + ldrb r0, [r0] + muls r0, r1 + adds r1, r0, r2 + ldrh r0, [r3, 0x28] + ldrh r2, [r1, 0x28] + cmp r0, r2 + bhi _0802A778 + ldr r3, _0802A774 @ =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 _0802A78A + .align 2, 0 +_0802A768: .4byte gBattleMons +_0802A76C: .4byte gBankTarget +_0802A770: .4byte gBankAttacker +_0802A774: .4byte gBattlescriptCurrInstr +_0802A778: + ldr r2, _0802A790 @ =gBattleMoveDamage + ldrh r0, [r3, 0x28] + ldrh r1, [r1, 0x28] + subs r0, r1 + str r0, [r2] + ldr r1, _0802A794 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802A78A: + pop {r0} + bx r0 + .align 2, 0 +_0802A790: .4byte gBattleMoveDamage +_0802A794: .4byte gBattlescriptCurrInstr + thumb_func_end atkD8_setdamagetohealthdifference + + thumb_func_start atkD9_scaledamagebyhealthratio +atkD9_scaledamagebyhealthratio: @ 802A798 + push {r4,lr} + ldr r4, _0802A7E4 @ =gDynamicBasePower + ldrh r0, [r4] + cmp r0, 0 + bne _0802A7D4 + ldr r2, _0802A7E8 @ =gBattleMoves + ldr r0, _0802A7EC @ =gCurrentMove + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r3, [r0, 0x1] + ldr r2, _0802A7F0 @ =gBattleMons + ldr r0, _0802A7F4 @ =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 _0802A7D4 + movs r0, 0x1 + strh r0, [r4] +_0802A7D4: + ldr r1, _0802A7F8 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802A7E4: .4byte gDynamicBasePower +_0802A7E8: .4byte gBattleMoves +_0802A7EC: .4byte gCurrentMove +_0802A7F0: .4byte gBattleMons +_0802A7F4: .4byte gBankAttacker +_0802A7F8: .4byte gBattlescriptCurrInstr + thumb_func_end atkD9_scaledamagebyhealthratio + + thumb_func_start atkDA_abilityswap +atkDA_abilityswap: @ 802A7FC + push {r4-r6,lr} + ldr r5, _0802A860 @ =gBattleMons + ldr r0, _0802A864 @ =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 _0802A824 + ldr r0, _0802A868 @ =gBankTarget + ldrb r0, [r0] + muls r0, r4 + adds r0, r5 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0 + beq _0802A844 +_0802A824: + cmp r1, 0x19 + beq _0802A844 + ldr r6, _0802A868 @ =gBankTarget + ldrb r0, [r6] + muls r0, r4 + adds r0, r5 + adds r0, 0x20 + ldrb r3, [r0] + cmp r3, 0x19 + beq _0802A844 + ldr r0, _0802A86C @ =gBattleMoveFlags + ldrb r1, [r0] + movs r0, 0x29 + ands r0, r1 + cmp r0, 0 + beq _0802A874 +_0802A844: + ldr r3, _0802A870 @ =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 _0802A88A + .align 2, 0 +_0802A860: .4byte gBattleMons +_0802A864: .4byte gBankAttacker +_0802A868: .4byte gBankTarget +_0802A86C: .4byte gBattleMoveFlags +_0802A870: .4byte gBattlescriptCurrInstr +_0802A874: + ldrb r1, [r2] + strb r3, [r2] + ldrb r0, [r6] + muls r0, r4 + adds r0, r5 + adds r0, 0x20 + strb r1, [r0] + ldr r1, _0802A890 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802A88A: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0802A890: .4byte gBattlescriptCurrInstr + thumb_func_end atkDA_abilityswap + + thumb_func_start atkDB_imprisoneffect +atkDB_imprisoneffect: @ 802A894 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + movs r0, 0 + mov r8, r0 + ldr r1, _0802A8B8 @ =gStatuses3 + ldr r0, _0802A8BC @ =gBankAttacker + ldrb r2, [r0] + lsls r0, r2, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x80 + lsls r1, 6 + ands r0, r1 + cmp r0, 0 + beq _0802A8E8 + b _0802A95E + .align 2, 0 +_0802A8B8: .4byte gStatuses3 +_0802A8BC: .4byte gBankAttacker +_0802A8C0: + ldr r0, _0802A8E0 @ =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, _0802A8E4 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _0802A956 + .align 2, 0 +_0802A8E0: .4byte gStatuses3 +_0802A8E4: .4byte gBattlescriptCurrInstr +_0802A8E8: + adds r0, r2, 0 + bl sub_801529C + movs r6, 0 + b _0802A94E +_0802A8F2: + adds r0, r6, 0 + bl GetBankSide + lsls r0, 24 + lsrs r0, 24 + cmp r8, r0 + beq _0802A948 + movs r4, 0 + ldr r7, _0802A984 @ =gBankAttacker + mov r9, r7 + ldr r0, _0802A988 @ =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 +_0802A91C: + movs r2, 0 + ldrh r1, [r3] + mov r0, r12 + adds r0, 0xC + adds r0, r5, r0 +_0802A926: + ldrh r7, [r0] + cmp r1, r7 + bne _0802A930 + cmp r1, 0 + bne _0802A938 +_0802A930: + adds r0, 0x2 + adds r2, 0x1 + cmp r2, 0x3 + ble _0802A926 +_0802A938: + cmp r2, 0x4 + bne _0802A944 + adds r3, 0x2 + adds r4, 0x1 + cmp r4, 0x3 + ble _0802A91C +_0802A944: + cmp r4, 0x4 + bne _0802A8C0 +_0802A948: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 +_0802A94E: + ldr r0, _0802A98C @ =gNoOfAllBanks + ldrb r0, [r0] + cmp r6, r0 + bcc _0802A8F2 +_0802A956: + ldr r0, _0802A98C @ =gNoOfAllBanks + ldrb r0, [r0] + cmp r6, r0 + bne _0802A978 +_0802A95E: + ldr r3, _0802A990 @ =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] +_0802A978: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802A984: .4byte gBankAttacker +_0802A988: .4byte gBattleMons +_0802A98C: .4byte gNoOfAllBanks +_0802A990: .4byte gBattlescriptCurrInstr + thumb_func_end atkDB_imprisoneffect + + thumb_func_start atkDC_setgrudge +atkDC_setgrudge: @ 802A994 + push {lr} + ldr r1, _0802A9CC @ =gStatuses3 + ldr r0, _0802A9D0 @ =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 _0802A9D8 + ldr r3, _0802A9D4 @ =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 _0802A9E4 + .align 2, 0 +_0802A9CC: .4byte gStatuses3 +_0802A9D0: .4byte gBankAttacker +_0802A9D4: .4byte gBattlescriptCurrInstr +_0802A9D8: + orrs r1, r3 + str r1, [r2] + ldr r1, _0802A9E8 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802A9E4: + pop {r0} + bx r0 + .align 2, 0 +_0802A9E8: .4byte gBattlescriptCurrInstr + thumb_func_end atkDC_setgrudge + + thumb_func_start atkDD_weightdamagecalculation +atkDD_weightdamagecalculation: @ 802A9EC + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r5, 0 + ldr r2, _0802AA50 @ =gWeightDamage + ldrh r0, [r2] + ldr r1, _0802AA54 @ =0x0000ffff + cmp r0, r1 + beq _0802AA64 + adds r6, r2, 0 + ldr r0, _0802AA58 @ =gBattleMons + mov r8, r0 + adds r7, r1, 0 + adds r4, r6, 0 +_0802AA08: + ldr r0, _0802AA5C @ =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 _0802AA36 + adds r4, 0x4 + adds r5, 0x2 + ldrh r0, [r4] + cmp r0, r7 + bne _0802AA08 +_0802AA36: + lsls r0, r5, 1 + adds r0, r6 + ldrh r1, [r0] + ldr r0, _0802AA54 @ =0x0000ffff + cmp r1, r0 + beq _0802AA64 + ldr r0, _0802AA60 @ =gDynamicBasePower + adds r1, r5, 0x1 + lsls r1, 1 + adds r1, r6 + ldrh r1, [r1] + strh r1, [r0] + b _0802AA6A + .align 2, 0 +_0802AA50: .4byte gWeightDamage +_0802AA54: .4byte 0x0000ffff +_0802AA58: .4byte gBattleMons +_0802AA5C: .4byte gBankTarget +_0802AA60: .4byte gDynamicBasePower +_0802AA64: + ldr r1, _0802AA7C @ =gDynamicBasePower + movs r0, 0x78 + strh r0, [r1] +_0802AA6A: + ldr r1, _0802AA80 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802AA7C: .4byte gDynamicBasePower +_0802AA80: .4byte gBattlescriptCurrInstr + thumb_func_end atkDD_weightdamagecalculation + + thumb_func_start atkDE_asistattackselect +atkDE_asistattackselect: @ 802AA84 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + movs r0, 0 + mov r10, r0 + ldr r0, _0802AB9C @ =gBankAttacker + ldrb r0, [r0] + bl GetBankIdentity + movs r1, 0x1 + ands r1, r0 + ldr r0, _0802ABA0 @ =gPlayerParty + str r0, [sp] + cmp r1, 0 + beq _0802AAAC + ldr r1, _0802ABA4 @ =gEnemyParty + str r1, [sp] +_0802AAAC: + movs r2, 0 +_0802AAAE: + ldr r1, _0802ABA8 @ =gBattlePartyID + ldr r0, _0802AB9C @ =gBankAttacker + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + adds r1, r2, 0x1 + str r1, [sp, 0x4] + ldrh r0, [r0] + cmp r2, r0 + beq _0802AB54 + 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 _0802AB54 + adds r0, r4, 0 + movs r1, 0x41 + bl GetMonData + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + beq _0802AB54 + movs r5, 0 + ldr r1, _0802ABAC @ =0x0000ffff + mov r8, r1 + mov r9, r6 + mov r1, r10 + lsls r0, r1, 1 + ldr r1, _0802ABB0 @ =0x02016024 + adds r6, r0, r1 +_0802AAF8: + 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_802838C + lsls r0, 24 + adds r1, r5, 0x1 + cmp r0, 0 + bne _0802AB4E + ldr r0, _0802ABB4 @ =gUnknown_081FACFE + ldrh r2, [r0] + adds r3, r0, 0 + cmp r2, r8 + beq _0802AB42 + cmp r4, r2 + beq _0802AB38 + ldr r5, _0802ABAC @ =0x0000ffff + adds r2, r3, 0 +_0802AB2A: + adds r2, 0x2 + adds r7, 0x1 + ldrh r0, [r2] + cmp r0, r5 + beq _0802AB42 + cmp r4, r0 + bne _0802AB2A +_0802AB38: + lsls r0, r7, 1 + adds r0, r3 + ldrh r0, [r0] + cmp r0, r8 + bne _0802AB4E +_0802AB42: + cmp r4, 0 + beq _0802AB4E + strh r4, [r6] + adds r6, 0x2 + movs r0, 0x1 + add r10, r0 +_0802AB4E: + adds r5, r1, 0 + cmp r5, 0x3 + ble _0802AAF8 +_0802AB54: + ldr r2, [sp, 0x4] + cmp r2, 0x5 + ble _0802AAAE + mov r1, r10 + cmp r1, 0 + beq _0802ABCC + ldr r2, _0802ABB8 @ =gHitMarker + ldr r0, [r2] + ldr r1, _0802ABBC @ =0xfffffbff + ands r0, r1 + str r0, [r2] + ldr r4, _0802ABC0 @ =gUnknown_02024BEA + bl Random + movs r1, 0xFF + ands r1, r0 + mov r0, r10 + muls r0, r1 + asrs r0, 8 + lsls r0, 1 + ldr r1, _0802ABB0 @ =0x02016024 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r4] + ldrh r0, [r4] + movs r1, 0 + bl sub_801B5C0 + ldr r1, _0802ABC4 @ =gBankTarget + strb r0, [r1] + ldr r1, _0802ABC8 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _0802ABE6 + .align 2, 0 +_0802AB9C: .4byte gBankAttacker +_0802ABA0: .4byte gPlayerParty +_0802ABA4: .4byte gEnemyParty +_0802ABA8: .4byte gBattlePartyID +_0802ABAC: .4byte 0x0000ffff +_0802ABB0: .4byte 0x02016024 +_0802ABB4: .4byte gUnknown_081FACFE +_0802ABB8: .4byte gHitMarker +_0802ABBC: .4byte 0xfffffbff +_0802ABC0: .4byte gUnknown_02024BEA +_0802ABC4: .4byte gBankTarget +_0802ABC8: .4byte gBattlescriptCurrInstr +_0802ABCC: + ldr r3, _0802ABF8 @ =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] +_0802ABE6: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802ABF8: .4byte gBattlescriptCurrInstr + thumb_func_end atkDE_asistattackselect + + thumb_func_start atkDF_setmagiccoat +atkDF_setmagiccoat: @ 802ABFC + push {lr} + ldr r1, _0802AC44 @ =gBankTarget + ldr r3, _0802AC48 @ =gBankAttacker + ldrb r0, [r3] + strb r0, [r1] + ldr r2, _0802AC4C @ =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, _0802AC50 @ =gCurrentMoveTurn + ldrb r1, [r0] + ldr r0, _0802AC54 @ =gNoOfAllBanks + ldrb r0, [r0] + subs r0, 0x1 + cmp r1, r0 + bne _0802AC5C + ldr r3, _0802AC58 @ =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 _0802AC74 + .align 2, 0 +_0802AC44: .4byte gBankTarget +_0802AC48: .4byte gBankAttacker +_0802AC4C: .4byte gSpecialStatuses +_0802AC50: .4byte gCurrentMoveTurn +_0802AC54: .4byte gNoOfAllBanks +_0802AC58: .4byte gBattlescriptCurrInstr +_0802AC5C: + ldr r0, _0802AC78 @ =gProtectStructs + ldrb r1, [r3] + lsls r1, 4 + adds r1, r0 + ldrb r0, [r1] + movs r2, 0x10 + orrs r0, r2 + strb r0, [r1] + ldr r1, _0802AC7C @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802AC74: + pop {r0} + bx r0 + .align 2, 0 +_0802AC78: .4byte gProtectStructs +_0802AC7C: .4byte gBattlescriptCurrInstr + thumb_func_end atkDF_setmagiccoat + + thumb_func_start atkE0_setstealstatchange +atkE0_setstealstatchange: @ 802AC80 + push {lr} + ldr r2, _0802ACC4 @ =gSpecialStatuses + ldr r3, _0802ACC8 @ =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, _0802ACCC @ =gCurrentMoveTurn + ldrb r1, [r0] + ldr r0, _0802ACD0 @ =gNoOfAllBanks + ldrb r0, [r0] + subs r0, 0x1 + cmp r1, r0 + bne _0802ACD8 + ldr r3, _0802ACD4 @ =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 _0802ACEE + .align 2, 0 +_0802ACC4: .4byte gSpecialStatuses +_0802ACC8: .4byte gBankAttacker +_0802ACCC: .4byte gCurrentMoveTurn +_0802ACD0: .4byte gNoOfAllBanks +_0802ACD4: .4byte gBattlescriptCurrInstr +_0802ACD8: + ldr r0, _0802ACF4 @ =gProtectStructs + ldrb r1, [r3] + lsls r1, 4 + adds r1, r0 + ldrb r0, [r1] + orrs r0, r2 + strb r0, [r1] + ldr r1, _0802ACF8 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802ACEE: + pop {r0} + bx r0 + .align 2, 0 +_0802ACF4: .4byte gProtectStructs +_0802ACF8: .4byte gBattlescriptCurrInstr + thumb_func_end atkE0_setstealstatchange + + thumb_func_start atkE1_802CBE4 +atkE1_802CBE4: @ 802ACFC + push {r4-r6,lr} + ldr r4, _0802ADA0 @ =0x02000000 + ldr r1, _0802ADA4 @ =0x000160dd + adds r0, r4, r1 + ldrb r0, [r0] + subs r1, 0xDA + adds r4, r1 + strb r0, [r4] + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + lsrs r5, r0, 24 + ldr r2, _0802ADA8 @ =gBattleTextBuff1 + movs r0, 0xFD + strb r0, [r2] + movs r0, 0x9 + strb r0, [r2, 0x1] + ldr r3, _0802ADAC @ =gBattleMons + ldrb r1, [r4] + 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, _0802ADB0 @ =gBankTarget + ldr r1, _0802ADB4 @ =gNoOfAllBanks + ldrb r0, [r2] + ldrb r1, [r1] + cmp r0, r1 + bcs _0802AD84 + adds r4, r2, 0 + ldr r6, _0802ADB8 @ =gBitTable +_0802AD44: + ldrb r0, [r4] + bl GetBankSide + lsls r0, 24 + lsrs r0, 24 + cmp r0, r5 + beq _0802AD66 + ldr r0, _0802ADBC @ =gAbsentBankFlags + ldrb r1, [r0] + ldrb r0, [r4] + lsls r0, 2 + adds r0, r6 + ldr r0, [r0] + ands r1, r0 + ldr r2, _0802ADB4 @ =gNoOfAllBanks + cmp r1, 0 + beq _0802AD7A +_0802AD66: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + ldr r1, _0802ADB4 @ =gNoOfAllBanks + lsls r0, 24 + lsrs r0, 24 + adds r2, r1, 0 + ldrb r1, [r2] + cmp r0, r1 + bcc _0802AD44 +_0802AD7A: + ldr r0, _0802ADB0 @ =gBankTarget + ldrb r0, [r0] + ldrb r2, [r2] + cmp r0, r2 + bcc _0802ADC4 +_0802AD84: + ldr r3, _0802ADC0 @ =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 _0802ADCC + .align 2, 0 +_0802ADA0: .4byte 0x02000000 +_0802ADA4: .4byte 0x000160dd +_0802ADA8: .4byte gBattleTextBuff1 +_0802ADAC: .4byte gBattleMons +_0802ADB0: .4byte gBankTarget +_0802ADB4: .4byte gNoOfAllBanks +_0802ADB8: .4byte gBitTable +_0802ADBC: .4byte gAbsentBankFlags +_0802ADC0: .4byte gBattlescriptCurrInstr +_0802ADC4: + ldr r1, _0802ADD4 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802ADCC: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0802ADD4: .4byte gBattlescriptCurrInstr + thumb_func_end atkE1_802CBE4 + + thumb_func_start sub_802ADD8 +sub_802ADD8: @ 802ADD8 + push {r4-r7,lr} + sub sp, 0x4 + ldr r6, _0802AE44 @ =gBattlescriptCurrInstr + ldr r0, [r6] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r5, _0802AE48 @ =gActiveBank + strb r0, [r5] + ldr r4, _0802AE4C @ =gBattleMons + ldrb r0, [r5] + movs r1, 0x58 + mov r12, r1 + mov r1, r12 + muls r1, r0 + adds r0, r1, r4 + adds r0, 0x20 + ldrb r0, [r0] + cmp r0, 0x1E + bne _0802AE34 + adds r4, 0x4C + adds r1, r4 + movs r0, 0 + str r0, [r1] + ldr r2, _0802AE50 @ =gBitTable + ldr r1, _0802AE54 @ =0x02000000 + ldrb r3, [r5] + ldr r7, _0802AE58 @ =0x00016064 + adds r0, r3, r7 + adds r0, r1 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r2 + ldrb r2, [r0] + mov r0, r12 + muls r0, r3 + adds r0, r4 + str r0, [sp] + movs r0, 0 + movs r1, 0x28 + movs r3, 0x4 + bl EmitSetAttributes + ldrb r0, [r5] + bl MarkBufferBankForExecution +_0802AE34: + ldr r0, [r6] + adds r0, 0x2 + str r0, [r6] + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802AE44: .4byte gBattlescriptCurrInstr +_0802AE48: .4byte gActiveBank +_0802AE4C: .4byte gBattleMons +_0802AE50: .4byte gBitTable +_0802AE54: .4byte 0x02000000 +_0802AE58: .4byte 0x00016064 + thumb_func_end sub_802ADD8 + + thumb_func_start atkE3_jumpiffainted +atkE3_jumpiffainted: @ 802AE5C + push {r4,lr} + ldr r4, _0802AE98 @ =gBattlescriptCurrInstr + ldr r0, [r4] + ldrb r0, [r0, 0x1] + bl sub_8015150 + ldr r1, _0802AE9C @ =gActiveBank + strb r0, [r1] + ldr r2, _0802AEA0 @ =gBattleMons + ldrb r1, [r1] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + ldrh r0, [r0, 0x28] + cmp r0, 0 + bne _0802AEA4 + 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 _0802AEAA + .align 2, 0 +_0802AE98: .4byte gBattlescriptCurrInstr +_0802AE9C: .4byte gActiveBank +_0802AEA0: .4byte gBattleMons +_0802AEA4: + ldr r0, [r4] + adds r0, 0x6 + str r0, [r4] +_0802AEAA: + pop {r4} + pop {r0} + bx r0 + thumb_func_end atkE3_jumpiffainted + + thumb_func_start sub_802AEB0 +sub_802AEB0: @ 802AEB0 + push {lr} + ldr r0, _0802AEC4 @ =gBattleTerrain + ldrb r0, [r0] + cmp r0, 0x7 + bhi _0802AF4C + lsls r0, 2 + ldr r1, _0802AEC8 @ =_0802AECC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802AEC4: .4byte gBattleTerrain +_0802AEC8: .4byte _0802AECC + .align 2, 0 +_0802AECC: + .4byte _0802AEEC + .4byte _0802AEF8 + .4byte _0802AF04 + .4byte _0802AF10 + .4byte _0802AF1C + .4byte _0802AF28 + .4byte _0802AF34 + .4byte _0802AF40 +_0802AEEC: + ldr r1, _0802AEF4 @ =gBattleCommunication + movs r0, 0x2 + b _0802AF50 + .align 2, 0 +_0802AEF4: .4byte gBattleCommunication +_0802AEF8: + ldr r1, _0802AF00 @ =gBattleCommunication + movs r0, 0x1 + b _0802AF50 + .align 2, 0 +_0802AF00: .4byte gBattleCommunication +_0802AF04: + ldr r1, _0802AF0C @ =gBattleCommunication + movs r0, 0x1B + b _0802AF50 + .align 2, 0 +_0802AF0C: .4byte gBattleCommunication +_0802AF10: + ldr r1, _0802AF18 @ =gBattleCommunication + movs r0, 0x17 + b _0802AF50 + .align 2, 0 +_0802AF18: .4byte gBattleCommunication +_0802AF1C: + ldr r1, _0802AF24 @ =gBattleCommunication + movs r0, 0x16 + b _0802AF50 + .align 2, 0 +_0802AF24: .4byte gBattleCommunication +_0802AF28: + ldr r1, _0802AF30 @ =gBattleCommunication + movs r0, 0x18 + b _0802AF50 + .align 2, 0 +_0802AF30: .4byte gBattleCommunication +_0802AF34: + ldr r1, _0802AF3C @ =gBattleCommunication + movs r0, 0x7 + b _0802AF50 + .align 2, 0 +_0802AF3C: .4byte gBattleCommunication +_0802AF40: + ldr r1, _0802AF48 @ =gBattleCommunication + movs r0, 0x8 + b _0802AF50 + .align 2, 0 +_0802AF48: .4byte gBattleCommunication +_0802AF4C: + ldr r1, _0802AF60 @ =gBattleCommunication + movs r0, 0x5 +_0802AF50: + strb r0, [r1, 0x3] + ldr r1, _0802AF64 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0802AF60: .4byte gBattleCommunication +_0802AF64: .4byte gBattlescriptCurrInstr + thumb_func_end sub_802AEB0 + + thumb_func_start sub_802AF68 +sub_802AF68: @ 802AF68 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + movs r7, 0 + ldr r0, _0802AFB4 @ =gBaseStats + mov r9, r0 + ldr r1, _0802AFB8 @ =gPickupItems + mov r8, r1 +_0802AF7A: + movs r0, 0x64 + adds r4, r7, 0 + muls r4, r0 + ldr r0, _0802AFBC @ =gPlayerParty + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x41 + bl GetMonData + lsls r0, 16 + lsrs r5, r0, 16 + adds r0, r4, 0 + movs r1, 0xC + bl GetMonData + lsls r0, 16 + lsrs r6, r0, 16 + adds r0, r4, 0 + movs r1, 0x2E + bl GetMonData + cmp r0, 0 + beq _0802AFC0 + lsls r0, r5, 3 + subs r0, r5 + lsls r0, 2 + add r0, r9 + ldrb r0, [r0, 0x17] + b _0802AFCA + .align 2, 0 +_0802AFB4: .4byte gBaseStats +_0802AFB8: .4byte gPickupItems +_0802AFBC: .4byte gPlayerParty +_0802AFC0: + lsls r0, r5, 3 + subs r0, r5 + lsls r0, 2 + add r0, r9 + ldrb r0, [r0, 0x16] +_0802AFCA: + adds r4, r7, 0x1 + cmp r0, 0x35 + bne _0802B032 + cmp r5, 0 + beq _0802B032 + movs r0, 0xCE + lsls r0, 1 + cmp r5, r0 + beq _0802B032 + cmp r6, 0 + bne _0802B032 + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xA + bl __umodsi3 + lsls r0, 16 + cmp r0, 0 + bne _0802B032 + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + lsls r0, 16 + lsrs r3, r0, 16 + movs r2, 0 + mov r1, r8 + ldrh r0, [r1, 0x2] + cmp r0, r3 + bgt _0802B020 + adds r1, 0x2 +_0802B012: + adds r1, 0x4 + adds r2, 0x2 + cmp r2, 0x11 + bgt _0802B020 + ldrh r0, [r1] + cmp r0, r3 + ble _0802B012 +_0802B020: + movs r0, 0x64 + muls r0, r7 + ldr r1, _0802B04C @ =gPlayerParty + adds r0, r1 + lsls r2, 1 + add r2, r8 + movs r1, 0xC + bl SetMonData +_0802B032: + adds r7, r4, 0 + cmp r7, 0x5 + ble _0802AF7A + ldr r1, _0802B050 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802B04C: .4byte gPlayerParty +_0802B050: .4byte gBattlescriptCurrInstr + thumb_func_end sub_802AF68 + + thumb_func_start atkE6_castform_transform +atkE6_castform_transform: @ 802B054 + push {r4,lr} + ldr r4, _0802B0A8 @ =gActiveBank + ldr r3, _0802B0AC @ =0x02000000 + ldr r1, _0802B0B0 @ =0x00016003 + adds r0, r3, r1 + ldrb r0, [r0] + strb r0, [r4] + ldr r1, _0802B0B4 @ =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 + cmp r0, 0 + beq _0802B086 + ldr r0, _0802B0B8 @ =0x0001609b + adds r2, r3, r0 + ldrb r1, [r2] + movs r0, 0x80 + orrs r0, r1 + strb r0, [r2] +_0802B086: + ldr r1, _0802B0B8 @ =0x0001609b + adds r0, r3, r1 + ldrb r2, [r0] + movs r0, 0 + movs r1, 0 + bl EmitBattleAnimation + ldrb r0, [r4] + bl MarkBufferBankForExecution + ldr r1, _0802B0BC @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802B0A8: .4byte gActiveBank +_0802B0AC: .4byte 0x02000000 +_0802B0B0: .4byte 0x00016003 +_0802B0B4: .4byte gBattleMons +_0802B0B8: .4byte 0x0001609b +_0802B0BC: .4byte gBattlescriptCurrInstr + thumb_func_end atkE6_castform_transform + + thumb_func_start atkE7_castform_switch +atkE7_castform_switch: @ 802B0C0 + push {r4,r5,lr} + ldr r1, _0802B0F4 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + ldr r5, _0802B0F8 @ =0x02000000 + ldr r1, _0802B0FC @ =0x00016003 + adds r0, r5, r1 + ldrb r0, [r0] + bl castform_switch + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _0802B0EC + ldr r0, _0802B100 @ =gUnknown_081D977D + bl b_push_move_exec + subs r1, r4, 0x1 + ldr r2, _0802B104 @ =0x0001609b + adds r0, r5, r2 + strb r1, [r0] +_0802B0EC: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0802B0F4: .4byte gBattlescriptCurrInstr +_0802B0F8: .4byte 0x02000000 +_0802B0FC: .4byte 0x00016003 +_0802B100: .4byte gUnknown_081D977D +_0802B104: .4byte 0x0001609b + thumb_func_end atkE7_castform_switch + + thumb_func_start atkE8_settypebasedhalvers +atkE8_settypebasedhalvers: @ 802B108 + push {r4,lr} + movs r4, 0 + ldr r2, _0802B144 @ =gBattleMoves + ldr r0, _0802B148 @ =gCurrentMove + ldrh r1, [r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0xC9 + bne _0802B158 + ldr r1, _0802B14C @ =gStatuses3 + ldr r0, _0802B150 @ =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 _0802B17C + orrs r1, r3 + str r1, [r2] + ldr r0, _0802B154 @ =gBattleCommunication + strb r4, [r0, 0x5] + b _0802B180 + .align 2, 0 +_0802B144: .4byte gBattleMoves +_0802B148: .4byte gCurrentMove +_0802B14C: .4byte gStatuses3 +_0802B150: .4byte gBankAttacker +_0802B154: .4byte gBattleCommunication +_0802B158: + ldr r1, _0802B18C @ =gStatuses3 + ldr r0, _0802B190 @ =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 _0802B17C + orrs r1, r3 + str r1, [r2] + ldr r1, _0802B194 @ =gBattleCommunication + movs r0, 0x1 + strb r0, [r1, 0x5] + movs r4, 0x1 +_0802B17C: + cmp r4, 0 + beq _0802B19C +_0802B180: + ldr r1, _0802B198 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _0802B1B6 + .align 2, 0 +_0802B18C: .4byte gStatuses3 +_0802B190: .4byte gBankAttacker +_0802B194: .4byte gBattleCommunication +_0802B198: .4byte gBattlescriptCurrInstr +_0802B19C: + ldr r3, _0802B1BC @ =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] +_0802B1B6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802B1BC: .4byte gBattlescriptCurrInstr + thumb_func_end atkE8_settypebasedhalvers + + thumb_func_start sub_802B1C0 +sub_802B1C0: @ 802B1C0 + 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 _0802B276 + str r0, [sp] + movs r0, 0x13 + movs r1, 0 + movs r2, 0x4D + movs r3, 0 + bl AbilityBattleEffects + lsls r0, 24 + cmp r0, 0 + bne _0802B276 + ldr r3, _0802B218 @ =gBattleWeather + ldrb r0, [r3] + ldr r2, _0802B21C @ =0x02000000 + cmp r0, 0 + beq _0802B202 + ldr r0, _0802B220 @ =0x0001601f + adds r1, r2, r0 + movs r0, 0x2 + strb r0, [r1] +_0802B202: + ldrh r1, [r3] + movs r0, 0x7 + ands r0, r1 + cmp r0, 0 + beq _0802B228 + ldr r0, _0802B224 @ =0x0001601c + adds r1, r2, r0 + movs r0, 0x8B + strb r0, [r1] + b _0802B276 + .align 2, 0 +_0802B218: .4byte gBattleWeather +_0802B21C: .4byte 0x02000000 +_0802B220: .4byte 0x0001601f +_0802B224: .4byte 0x0001601c +_0802B228: + movs r0, 0x18 + ands r0, r1 + cmp r0, 0 + beq _0802B240 + ldr r0, _0802B23C @ =0x0001601c + adds r1, r2, r0 + movs r0, 0x85 + strb r0, [r1] + b _0802B276 + .align 2, 0 +_0802B23C: .4byte 0x0001601c +_0802B240: + movs r0, 0x60 + ands r0, r1 + cmp r0, 0 + beq _0802B258 + ldr r0, _0802B254 @ =0x0001601c + adds r1, r2, r0 + movs r0, 0x8A + strb r0, [r1] + b _0802B276 + .align 2, 0 +_0802B254: .4byte 0x0001601c +_0802B258: + movs r3, 0x80 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _0802B270 + ldr r0, _0802B26C @ =0x0001601c + adds r1, r2, r0 + movs r0, 0x8F + strb r0, [r1] + b _0802B276 + .align 2, 0 +_0802B26C: .4byte 0x0001601c +_0802B270: + ldr r1, _0802B284 @ =0x0001601c + adds r0, r2, r1 + strb r3, [r0] +_0802B276: + ldr r1, _0802B288 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0802B284: .4byte 0x0001601c +_0802B288: .4byte gBattlescriptCurrInstr + thumb_func_end sub_802B1C0 + + thumb_func_start atkEA_recycleitem +atkEA_recycleitem: @ 802B28C + push {r4-r7,lr} + sub sp, 0x4 + ldr r7, _0802B2F0 @ =gActiveBank + ldr r0, _0802B2F4 @ =gBankAttacker + ldrb r0, [r0] + strb r0, [r7] + ldrb r2, [r7] + lsls r1, r2, 1 + ldr r0, _0802B2F8 @ =0x020160cc + adds r6, r1, r0 + ldrh r5, [r6] + cmp r5, 0 + beq _0802B308 + ldr r4, _0802B2FC @ =gBattleMons + movs r3, 0x58 + adds r0, r2, 0 + muls r0, r3 + adds r0, r4 + ldrh r0, [r0, 0x2E] + cmp r0, 0 + bne _0802B308 + ldr r1, _0802B300 @ =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 EmitSetAttributes + ldrb r0, [r7] + bl MarkBufferBankForExecution + ldr r1, _0802B304 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _0802B322 + .align 2, 0 +_0802B2F0: .4byte gActiveBank +_0802B2F4: .4byte gBankAttacker +_0802B2F8: .4byte 0x020160cc +_0802B2FC: .4byte gBattleMons +_0802B300: .4byte gLastUsedItem +_0802B304: .4byte gBattlescriptCurrInstr +_0802B308: + ldr r3, _0802B32C @ =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] +_0802B322: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802B32C: .4byte gBattlescriptCurrInstr + thumb_func_end atkEA_recycleitem + + thumb_func_start atkEB_settypetoterrain +atkEB_settypetoterrain: @ 802B330 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r0, _0802B3A0 @ =gBattleMons + mov r8, r0 + ldr r7, _0802B3A4 @ =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, _0802B3A8 @ =gTerrainToType + ldr r4, _0802B3AC @ =gBattleTerrain + ldrb r0, [r4] + adds r0, r5 + ldrb r2, [r0] + mov r1, r12 + ldrb r0, [r1] + adds r1, r2, 0 + cmp r0, r1 + beq _0802B3B8 + adds r0, r3, 0 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, r1 + beq _0802B3B8 + 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, _0802B3B0 @ =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, _0802B3B4 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _0802B3D2 + .align 2, 0 +_0802B3A0: .4byte gBattleMons +_0802B3A4: .4byte gBankAttacker +_0802B3A8: .4byte gTerrainToType +_0802B3AC: .4byte gBattleTerrain +_0802B3B0: .4byte gBattleTextBuff1 +_0802B3B4: .4byte gBattlescriptCurrInstr +_0802B3B8: + ldr r3, _0802B3DC @ =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] +_0802B3D2: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802B3DC: .4byte gBattlescriptCurrInstr + thumb_func_end atkEB_settypetoterrain + + thumb_func_start sub_802B3E0 +sub_802B3E0: @ 802B3E0 + push {r4,r5,lr} + ldr r5, _0802B45C @ =gBankAttacker + ldrb r0, [r5] + bl GetBankIdentity + movs r1, 0x2 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + bl GetBankByPlayerAI + ldr r4, _0802B460 @ =gActiveBank + strb r0, [r4] + ldr r0, _0802B464 @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0802B490 + ldr r0, _0802B468 @ =gAbsentBankFlags + ldrb r1, [r0] + ldr r2, _0802B46C @ =gBitTable + ldrb r3, [r4] + lsls r0, r3, 2 + adds r0, r2 + ldr r0, [r0] + ands r1, r0 + cmp r1, 0 + bne _0802B490 + ldr r0, _0802B470 @ =gActionForBanks + adds r0, r3, r0 + ldrb r0, [r0] + cmp r0, 0 + bne _0802B490 + ldr r1, _0802B474 @ =gChosenMovesByBanks + lsls r0, r3, 1 + adds r0, r1 + ldrh r2, [r0] + cmp r2, 0xE4 + bne _0802B490 + ldr r0, _0802B478 @ =gUnknown_02024A76 + adds r0, r3, r0 + movs r1, 0xB + strb r1, [r0] + ldr r0, _0802B47C @ =gCurrentMove + strh r2, [r0] + ldr r1, _0802B480 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + ldr r1, _0802B484 @ =0x02000000 + ldr r0, _0802B488 @ =0x00016002 + adds r2, r1, r0 + movs r0, 0x1 + strb r0, [r2] + ldrb r0, [r5] + ldr r2, _0802B48C @ =0x000160a7 + adds r1, r2 + strb r0, [r1] + ldrb r0, [r4] + strb r0, [r5] + b _0802B4AA + .align 2, 0 +_0802B45C: .4byte gBankAttacker +_0802B460: .4byte gActiveBank +_0802B464: .4byte gBattleTypeFlags +_0802B468: .4byte gAbsentBankFlags +_0802B46C: .4byte gBitTable +_0802B470: .4byte gActionForBanks +_0802B474: .4byte gChosenMovesByBanks +_0802B478: .4byte gUnknown_02024A76 +_0802B47C: .4byte gCurrentMove +_0802B480: .4byte gBattlescriptCurrInstr +_0802B484: .4byte 0x02000000 +_0802B488: .4byte 0x00016002 +_0802B48C: .4byte 0x000160a7 +_0802B490: + ldr r3, _0802B4B0 @ =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] +_0802B4AA: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0802B4B0: .4byte gBattlescriptCurrInstr + thumb_func_end sub_802B3E0 + + thumb_func_start sub_802B4B4 +sub_802B4B4: @ 802B4B4 + push {r4,r5,lr} + ldr r1, _0802B4DC @ =gEffectBank + ldr r3, _0802B4E0 @ =gBankAttacker + ldrb r0, [r3] + strb r0, [r1] + ldr r2, _0802B4E4 @ =gBankTarget + lsls r0, 24 + lsrs r0, 24 + adds r4, r1, 0 + ldrb r1, [r2] + cmp r0, r1 + bne _0802B4F0 + ldr r0, _0802B4E8 @ =0x02000000 + ldr r5, _0802B4EC @ =0x00016003 + adds r1, r0, r5 + ldrb r1, [r1] + strb r1, [r2] + strb r1, [r3] + b _0802B4FA + .align 2, 0 +_0802B4DC: .4byte gEffectBank +_0802B4E0: .4byte gBankAttacker +_0802B4E4: .4byte gBankTarget +_0802B4E8: .4byte 0x02000000 +_0802B4EC: .4byte 0x00016003 +_0802B4F0: + ldr r0, _0802B510 @ =0x02000000 + ldr r3, _0802B514 @ =0x00016003 + adds r1, r0, r3 + ldrb r1, [r1] + strb r1, [r2] +_0802B4FA: + ldrb r1, [r4] + ldr r5, _0802B514 @ =0x00016003 + adds r0, r5 + strb r1, [r0] + ldr r1, _0802B518 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0802B510: .4byte 0x02000000 +_0802B514: .4byte 0x00016003 +_0802B518: .4byte gBattlescriptCurrInstr + thumb_func_end sub_802B4B4 + + thumb_func_start sub_802B51C +sub_802B51C: @ 802B51C + push {r4,lr} + ldr r0, _0802B56C @ =gBankAttacker + ldrb r0, [r0] + bl GetBankSide + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0802B570 @ =gSideTimer + lsls r3, r0, 1 + adds r0, r3, r0 + lsls r0, 2 + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, 0 + bne _0802B544 + ldrb r2, [r4, 0x1] + cmp r2, 0 + beq _0802B58C +_0802B544: + ldr r2, _0802B574 @ =gSideAffecting + adds r2, r3, r2 + ldrh r1, [r2] + ldr r0, _0802B578 @ =0x0000fffe + ands r0, r1 + movs r3, 0 + ldr r1, _0802B57C @ =0x0000fffd + ands r0, r1 + strh r0, [r2] + strb r3, [r4] + strb r3, [r4, 0x1] + ldr r0, _0802B580 @ =0x02000000 + ldr r2, _0802B584 @ =0x00016002 + adds r1, r0, r2 + movs r2, 0x1 + strb r2, [r1] + ldr r3, _0802B588 @ =0x000160a1 + adds r0, r3 + b _0802B598 + .align 2, 0 +_0802B56C: .4byte gBankAttacker +_0802B570: .4byte gSideTimer +_0802B574: .4byte gSideAffecting +_0802B578: .4byte 0x0000fffe +_0802B57C: .4byte 0x0000fffd +_0802B580: .4byte 0x02000000 +_0802B584: .4byte 0x00016002 +_0802B588: .4byte 0x000160a1 +_0802B58C: + ldr r0, _0802B5A8 @ =0x02000000 + ldr r3, _0802B5AC @ =0x00016002 + adds r1, r0, r3 + strb r2, [r1] + ldr r1, _0802B5B0 @ =0x000160a1 + adds r0, r1 +_0802B598: + strb r2, [r0] + ldr r1, _0802B5B4 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0802B5A8: .4byte 0x02000000 +_0802B5AC: .4byte 0x00016002 +_0802B5B0: .4byte 0x000160a1 +_0802B5B4: .4byte gBattlescriptCurrInstr + thumb_func_end sub_802B51C + + thumb_func_start sub_802B5B8 +sub_802B5B8: @ 802B5B8 + push {r4-r7,lr} + movs r4, 0 + ldr r0, _0802B5F8 @ =gBattleExecBuffer + ldr r0, [r0] + cmp r0, 0 + beq _0802B5C6 + b _0802B94E +_0802B5C6: + ldr r5, _0802B5FC @ =gActiveBank + ldr r0, _0802B600 @ =gBankAttacker + ldrb r0, [r0] + strb r0, [r5] + ldr r6, _0802B604 @ =gBankTarget + movs r1, 0x1 + eors r0, r1 + strb r0, [r6] + ldr r0, _0802B608 @ =gBattleTypeFlags + ldrh r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0802B614 + movs r0, 0 + movs r1, 0x5 + bl dp01_build_cmdbuf_x0D_a + ldrb r0, [r5] + bl MarkBufferBankForExecution + ldr r1, _0802B60C @ =gBattlescriptCurrInstr + ldr r0, _0802B610 @ =gUnknown_081D9F35 + b _0802B94C + .align 2, 0 +_0802B5F8: .4byte gBattleExecBuffer +_0802B5FC: .4byte gActiveBank +_0802B600: .4byte gBankAttacker +_0802B604: .4byte gBankTarget +_0802B608: .4byte gBattleTypeFlags +_0802B60C: .4byte gBattlescriptCurrInstr +_0802B610: .4byte gUnknown_081D9F35 +_0802B614: + movs r0, 0x80 + lsls r0, 2 + ands r0, r1 + cmp r0, 0 + beq _0802B63C + movs r0, 0 + movs r1, 0x4 + bl dp01_build_cmdbuf_x0D_a + ldrb r0, [r5] + bl MarkBufferBankForExecution + ldr r1, _0802B634 @ =gBattlescriptCurrInstr + ldr r0, _0802B638 @ =gUnknown_081D9F00 + b _0802B94C + .align 2, 0 +_0802B634: .4byte gBattlescriptCurrInstr +_0802B638: .4byte gUnknown_081D9F00 +_0802B63C: + ldr r0, _0802B660 @ =gLastUsedItem + ldrh r0, [r0] + cmp r0, 0x5 + bne _0802B66C + ldr r0, _0802B664 @ =0x02000000 + ldr r1, _0802B668 @ =0x00016089 + adds r0, r1 + 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 _0802B684 + .align 2, 0 +_0802B660: .4byte gLastUsedItem +_0802B664: .4byte 0x02000000 +_0802B668: .4byte 0x00016089 +_0802B66C: + ldr r3, _0802B6A0 @ =gBaseStats + ldr r2, _0802B6A4 @ =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] +_0802B684: + ldr r2, _0802B6A8 @ =gLastUsedItem + ldrh r0, [r2] + cmp r0, 0x5 + bhi _0802B68E + b _0802B784 +_0802B68E: + subs r0, 0x6 + cmp r0, 0x6 + bls _0802B696 + b _0802B78E +_0802B696: + lsls r0, 2 + ldr r1, _0802B6AC @ =_0802B6B0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802B6A0: .4byte gBaseStats +_0802B6A4: .4byte gBattleMons +_0802B6A8: .4byte gLastUsedItem +_0802B6AC: .4byte _0802B6B0 + .align 2, 0 +_0802B6B0: + .4byte _0802B6CC + .4byte _0802B6FC + .4byte _0802B70E + .4byte _0802B73C + .4byte _0802B76C + .4byte _0802B72E + .4byte _0802B72E +_0802B6CC: + ldr r2, _0802B6F4 @ =gBattleMons + ldr r0, _0802B6F8 @ =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 _0802B760 + adds r0, 0x22 + ldrb r0, [r0] + cmp r0, 0xB + beq _0802B760 + cmp r1, 0x6 + beq _0802B760 + cmp r0, 0x6 + beq _0802B760 + b _0802B72E + .align 2, 0 +_0802B6F4: .4byte gBattleMons +_0802B6F8: .4byte gBankTarget +_0802B6FC: + bl sav1_map_get_light_level + lsls r0, 24 + lsrs r0, 24 + movs r4, 0xA + cmp r0, 0x5 + bne _0802B78E + movs r4, 0x23 + b _0802B78E +_0802B70E: + ldr r2, _0802B734 @ =gBattleMons + ldr r0, _0802B738 @ =gBankTarget + ldrb r1, [r0] + movs r0, 0x58 + muls r0, r1 + adds r0, r2 + adds r0, 0x2A + ldrb r1, [r0] + cmp r1, 0x27 + bhi _0802B72E + movs r0, 0x28 + subs r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x9 + bhi _0802B78E +_0802B72E: + movs r4, 0xA + b _0802B78E + .align 2, 0 +_0802B734: .4byte gBattleMons +_0802B738: .4byte gBankTarget +_0802B73C: + ldr r2, _0802B764 @ =gBattleMons + ldr r0, _0802B768 @ =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 GetNationalPokedexFlag + lsls r0, 24 + movs r4, 0xA + cmp r0, 0 + beq _0802B78E +_0802B760: + movs r4, 0x1E + b _0802B78E + .align 2, 0 +_0802B764: .4byte gBattleMons +_0802B768: .4byte gBankTarget +_0802B76C: + ldr r0, _0802B780 @ =gBattleResults + ldrb r0, [r0, 0x13] + adds r0, 0xA + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x28 + bls _0802B78E + movs r4, 0x28 + b _0802B78E + .align 2, 0 +_0802B780: .4byte gBattleResults +_0802B784: + ldr r1, _0802B7F4 @ =gBallCatchBonuses + ldrh r0, [r2] + subs r0, 0x2 + adds r0, r1 + ldrb r4, [r0] +_0802B78E: + adds r0, r5, 0 + muls r0, r4 + movs r1, 0xA + bl __divsi3 + ldr r5, _0802B7F8 @ =gBattleMons + ldr r1, _0802B7FC @ =gBankTarget + ldrb r1, [r1] + movs r7, 0x58 + adds r4, r1, 0 + muls r4, r7 + 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 _0802B7CA + lsls r6, 1 +_0802B7CA: + ands r4, r7 + cmp r4, 0 + beq _0802B7DC + lsls r0, r6, 4 + subs r0, r6 + movs r1, 0xA + bl __udivsi3 + adds r6, r0, 0 +_0802B7DC: + ldr r1, _0802B800 @ =gLastUsedItem + ldrh r0, [r1] + cmp r0, 0x5 + beq _0802B81C + cmp r0, 0x1 + bne _0802B808 + ldr r0, _0802B804 @ =gBattleResults + ldrb r1, [r0, 0x5] + movs r2, 0x2 + orrs r1, r2 + strb r1, [r0, 0x5] + b _0802B81C + .align 2, 0 +_0802B7F4: .4byte gBallCatchBonuses +_0802B7F8: .4byte gBattleMons +_0802B7FC: .4byte gBankTarget +_0802B800: .4byte gLastUsedItem +_0802B804: .4byte gBattleResults +_0802B808: + ldr r0, _0802B860 @ =gBattleResults + ldrh r1, [r1] + adds r0, r1 + adds r1, r0, 0 + adds r1, 0x34 + ldrb r0, [r1] + cmp r0, 0xFE + bhi _0802B81C + adds r0, 0x1 + strb r0, [r1] +_0802B81C: + cmp r6, 0xFE + bls _0802B880 + movs r0, 0 + movs r1, 0x4 + bl dp01_build_cmdbuf_x0D_a + ldr r0, _0802B864 @ =gActiveBank + ldrb r0, [r0] + bl MarkBufferBankForExecution + ldr r1, _0802B868 @ =gBattlescriptCurrInstr + ldr r0, _0802B86C @ =gUnknown_081D9EC2 + str r0, [r1] + ldr r1, _0802B870 @ =gBattlePartyID + ldr r0, _0802B874 @ =gBankTarget + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0802B878 @ =gEnemyParty + adds r0, r1 + ldr r2, _0802B87C @ =gLastUsedItem + movs r1, 0x26 + bl SetMonData + bl CalculatePlayerPartyCount + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x6 + beq _0802B90E + b _0802B938 + .align 2, 0 +_0802B860: .4byte gBattleResults +_0802B864: .4byte gActiveBank +_0802B868: .4byte gBattlescriptCurrInstr +_0802B86C: .4byte gUnknown_081D9EC2 +_0802B870: .4byte gBattlePartyID +_0802B874: .4byte gBankTarget +_0802B878: .4byte gEnemyParty +_0802B87C: .4byte gLastUsedItem +_0802B880: + 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, _0802B8A8 @ =0x000ffff0 + adds r1, r6, 0 + bl __udivsi3 + adds r6, r0, 0 + movs r4, 0 + b _0802B8B2 + .align 2, 0 +_0802B8A8: .4byte 0x000ffff0 +_0802B8AC: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 +_0802B8B2: + cmp r4, 0x3 + bhi _0802B8C2 + bl Random + lsls r0, 16 + lsrs r0, 16 + cmp r0, r6 + bcc _0802B8AC +_0802B8C2: + ldr r5, _0802B918 @ =gLastUsedItem + ldrh r0, [r5] + cmp r0, 0x1 + bne _0802B8CC + movs r4, 0x4 +_0802B8CC: + movs r0, 0 + adds r1, r4, 0 + bl dp01_build_cmdbuf_x0D_a + ldr r0, _0802B91C @ =gActiveBank + ldrb r0, [r0] + bl MarkBufferBankForExecution + cmp r4, 0x4 + bne _0802B944 + ldr r1, _0802B920 @ =gBattlescriptCurrInstr + ldr r0, _0802B924 @ =gUnknown_081D9EC2 + str r0, [r1] + ldr r1, _0802B928 @ =gBattlePartyID + ldr r0, _0802B92C @ =gBankTarget + ldrb r0, [r0] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + movs r0, 0x64 + muls r0, r1 + ldr r1, _0802B930 @ =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 _0802B938 +_0802B90E: + ldr r1, _0802B934 @ =gBattleCommunication + movs r0, 0 + strb r0, [r1, 0x5] + b _0802B94E + .align 2, 0 +_0802B918: .4byte gLastUsedItem +_0802B91C: .4byte gActiveBank +_0802B920: .4byte gBattlescriptCurrInstr +_0802B924: .4byte gUnknown_081D9EC2 +_0802B928: .4byte gBattlePartyID +_0802B92C: .4byte gBankTarget +_0802B930: .4byte gEnemyParty +_0802B934: .4byte gBattleCommunication +_0802B938: + ldr r1, _0802B940 @ =gBattleCommunication + movs r0, 0x1 + strb r0, [r1, 0x5] + b _0802B94E + .align 2, 0 +_0802B940: .4byte gBattleCommunication +_0802B944: + ldr r0, _0802B954 @ =gBattleCommunication + strb r4, [r0, 0x5] + ldr r1, _0802B958 @ =gBattlescriptCurrInstr + ldr r0, _0802B95C @ =gUnknown_081D9F0A +_0802B94C: + str r0, [r1] +_0802B94E: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802B954: .4byte gBattleCommunication +_0802B958: .4byte gBattlescriptCurrInstr +_0802B95C: .4byte gUnknown_081D9F0A + thumb_func_end sub_802B5B8 + + thumb_func_start sub_802B960 +sub_802B960: @ 802B960 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + ldr r0, _0802B9C8 @ =gBattlePartyID + mov r9, r0 + ldr r5, _0802B9CC @ =gBankAttacker + ldrb r0, [r5] + movs r4, 0x1 + eors r0, r4 + lsls r0, 1 + add r0, r9 + ldrh r0, [r0] + movs r1, 0x64 + mov r8, r1 + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + ldr r6, _0802B9D0 @ =gEnemyParty + adds r0, r6 + bl GiveMonToPlayer + ldr r2, _0802B9D4 @ =gBattleResults + ldr r1, _0802B9D8 @ =gBattleMons + ldrb r0, [r5] + eors r4, r0 + movs r0, 0x58 + muls r0, r4 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r2, 0x28] + lsls r4, 1 + add r4, r9 + ldrh r0, [r4] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + adds r0, r6 + adds r2, 0x2A + movs r1, 0x2 + bl GetMonData + ldr r1, _0802B9DC @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0802B9C8: .4byte gBattlePartyID +_0802B9CC: .4byte gBankAttacker +_0802B9D0: .4byte gEnemyParty +_0802B9D4: .4byte gBattleResults +_0802B9D8: .4byte gBattleMons +_0802B9DC: .4byte gBattlescriptCurrInstr + thumb_func_end sub_802B960 + + thumb_func_start sub_802B9E0 +sub_802B9E0: @ 802B9E0 + push {r4-r6,lr} + ldr r4, _0802BA20 @ =gBattleMons + ldr r6, _0802BA24 @ =gBankTarget + ldrb r0, [r6] + movs r5, 0x58 + muls r0, r5 + adds r0, r4 + ldrh r0, [r0] + bl SpeciesToNationalPokedexNum + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1 + bl GetNationalPokedexFlag + lsls r0, 24 + cmp r0, 0 + beq _0802BA2C + ldr r3, _0802BA28 @ =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 _0802BA82 + .align 2, 0 +_0802BA20: .4byte gBattleMons +_0802BA24: .4byte gBankTarget +_0802BA28: .4byte gBattlescriptCurrInstr +_0802BA2C: + ldrb r0, [r6] + muls r0, r5 + adds r0, r4 + ldrh r0, [r0] + bl SpeciesToNationalPokedexNum + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x3 + bl GetNationalPokedexFlag + ldrb r0, [r6] + adds r2, r0, 0 + muls r2, r5 + adds r0, r2, r4 + ldrh r0, [r0] + cmp r0, 0xC9 + bne _0802BA5C + ldr r0, _0802BA88 @ =gSaveBlock2 + adds r1, r4, 0 + adds r1, 0x48 + adds r1, r2, r1 + ldr r1, [r1] + str r1, [r0, 0x1C] +_0802BA5C: + ldrb r0, [r6] + adds r2, r0, 0 + muls r2, r5 + adds r0, r2, r4 + ldrh r1, [r0] + movs r0, 0x9A + lsls r0, 1 + cmp r1, r0 + bne _0802BA7A + ldr r0, _0802BA88 @ =gSaveBlock2 + adds r1, r4, 0 + adds r1, 0x48 + adds r1, r2, r1 + ldr r1, [r1] + str r1, [r0, 0x20] +_0802BA7A: + ldr r1, _0802BA8C @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] +_0802BA82: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0802BA88: .4byte gSaveBlock2 +_0802BA8C: .4byte gBattlescriptCurrInstr + thumb_func_end sub_802B9E0 + + thumb_func_start sub_802BA90 +sub_802BA90: @ 802BA90 + push {r4-r7,lr} + sub sp, 0x4 + ldr r7, _0802BAA8 @ =gBattleCommunication + ldrb r1, [r7] + cmp r1, 0x1 + beq _0802BAC6 + cmp r1, 0x1 + bgt _0802BAAC + cmp r1, 0 + beq _0802BAB8 + b _0802BBC4 + .align 2, 0 +_0802BAA8: .4byte gBattleCommunication +_0802BAAC: + cmp r1, 0x2 + beq _0802BB10 + cmp r1, 0x3 + bne _0802BAB6 + b _0802BBB0 +_0802BAB6: + b _0802BBC4 +_0802BAB8: + movs r0, 0x1 + negs r0, r0 + str r1, [sp] + movs r1, 0 + movs r2, 0 + movs r3, 0x10 + b _0802BB6E +_0802BAC6: + ldr r0, _0802BB04 @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0802BBC4 + ldr r4, _0802BB08 @ =gBattleMons + ldr r6, _0802BB0C @ =gBankTarget + ldrb r0, [r6] + movs r5, 0x58 + muls r0, r5 + adds r0, r4 + ldrh r0, [r0] + bl SpeciesToNationalPokedexNum + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r6] + adds r2, r1, 0 + muls r2, r5 + adds r1, r4, 0 + adds r1, 0x54 + adds r1, r2, r1 + ldr r1, [r1] + adds r4, 0x48 + adds r2, r4 + ldr r2, [r2] + bl sub_809070C + strb r0, [r7, 0x1] + b _0802BB72 + .align 2, 0 +_0802BB04: .4byte gPaletteFade +_0802BB08: .4byte gBattleMons +_0802BB0C: .4byte gBankTarget +_0802BB10: + ldr r0, _0802BB7C @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0802BBC4 + ldr r0, _0802BB80 @ =gMain + ldr r1, [r0, 0x4] + ldr r0, _0802BB84 @ =sub_800F808 + cmp r1, r0 + bne _0802BBC4 + ldr r2, _0802BB88 @ =gTasks + ldrb r1, [r7, 0x1] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + ldrb r4, [r0, 0x4] + cmp r4, 0 + bne _0802BBC4 + ldr r0, _0802BB8C @ =gBattleTerrainTiles_Building + ldr r1, _0802BB90 @ =0x06008000 + bl LZDecompressVram + ldr r0, _0802BB94 @ =gBattleTerrainTilemap_Building + ldr r1, _0802BB98 @ =0x0600d000 + bl LZDecompressVram + ldr r0, _0802BB9C @ =gBattleTerrainPalette_BattleTower + movs r1, 0x20 + movs r2, 0x60 + bl LoadCompressedPalette + ldr r1, _0802BBA0 @ =REG_BG3CNT + ldr r2, _0802BBA4 @ =0x00005a0b + adds r0, r2, 0 + strh r0, [r1] + ldr r1, _0802BBA8 @ =gUnknown_030041B0 + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + strh r0, [r1] + ldr r0, _0802BBAC @ =0x0000fffc + str r4, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0 +_0802BB6E: + bl BeginNormalPaletteFade +_0802BB72: + ldrb r0, [r7] + adds r0, 0x1 + strb r0, [r7] + b _0802BBC4 + .align 2, 0 +_0802BB7C: .4byte gPaletteFade +_0802BB80: .4byte gMain +_0802BB84: .4byte sub_800F808 +_0802BB88: .4byte gTasks +_0802BB8C: .4byte gBattleTerrainTiles_Building +_0802BB90: .4byte 0x06008000 +_0802BB94: .4byte gBattleTerrainTilemap_Building +_0802BB98: .4byte 0x0600d000 +_0802BB9C: .4byte gBattleTerrainPalette_BattleTower +_0802BBA0: .4byte REG_BG3CNT +_0802BBA4: .4byte 0x00005a0b +_0802BBA8: .4byte gUnknown_030041B0 +_0802BBAC: .4byte 0x0000fffc +_0802BBB0: + ldr r0, _0802BBCC @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0802BBC4 + ldr r1, _0802BBD0 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_0802BBC4: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802BBCC: .4byte gPaletteFade +_0802BBD0: .4byte gBattlescriptCurrInstr + thumb_func_end sub_802BA90 + + thumb_func_start sub_802BBD4 +sub_802BBD4: @ 802BBD4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, [sp, 0x20] + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r1, 24 + mov r12, r1 + lsls r2, 24 + lsrs r5, r2, 24 + lsls r3, 24 + lsrs r7, r3, 24 + lsls r4, 24 + lsrs r4, 24 + mov r8, r4 + mov r2, r12 + cmp r2, r7 + bgt _0802BC5A + lsls r1, r6, 1 + ldr r0, _0802BC20 @ =0x0600c000 + adds r1, r0 + mov r9, r1 +_0802BC06: + adds r1, r6, 0 + adds r0, r2, 0x1 + mov r10, r0 + cmp r1, r5 + bgt _0802BC54 + lsls r0, r2, 6 + mov r4, r9 + adds r3, r4, r0 +_0802BC16: + cmp r2, r12 + bne _0802BC28 + ldr r0, _0802BC24 @ =0x00001022 + b _0802BC36 + .align 2, 0 +_0802BC20: .4byte 0x0600c000 +_0802BC24: .4byte 0x00001022 +_0802BC28: + cmp r2, r7 + bne _0802BC34 + ldr r0, _0802BC30 @ =0x00001028 + b _0802BC36 + .align 2, 0 +_0802BC30: .4byte 0x00001028 +_0802BC34: + ldr r0, _0802BC68 @ =0x00001025 +_0802BC36: + cmp r1, r6 + beq _0802BC42 + adds r0, 0x1 + cmp r1, r5 + bne _0802BC42 + adds r0, 0x1 +_0802BC42: + mov r4, r8 + cmp r4, 0 + beq _0802BC4A + movs r0, 0 +_0802BC4A: + strh r0, [r3] + adds r3, 0x2 + adds r1, 0x1 + cmp r1, r5 + ble _0802BC16 +_0802BC54: + mov r2, r10 + cmp r2, r7 + ble _0802BC06 +_0802BC5A: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802BC68: .4byte 0x00001025 + thumb_func_end sub_802BBD4 + + thumb_func_start sub_802BC6C +sub_802BC6C: @ 802BC6C + push {lr} + ldr r0, _0802BC88 @ =gBattleCommunication + ldrb r1, [r0, 0x1] + lsls r1, 28 + movs r0, 0x90 + lsls r0, 23 + adds r1, r0 + lsrs r1, 24 + movs r0, 0xC8 + bl sub_814A880 + pop {r0} + bx r0 + .align 2, 0 +_0802BC88: .4byte gBattleCommunication + thumb_func_end sub_802BC6C + + thumb_func_start nullsub_6 +nullsub_6: @ 802BC8C + bx lr + thumb_func_end nullsub_6 + + thumb_func_start atkF3_receive_new_pokemon_maybe +atkF3_receive_new_pokemon_maybe: @ 802BC90 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + ldr r0, _0802BCB4 @ =gBattleCommunication + ldrb r1, [r0] + adds r4, r0, 0 + cmp r1, 0x4 + bls _0802BCA8 + b _0802BEDA +_0802BCA8: + lsls r0, r1, 2 + ldr r1, _0802BCB8 @ =_0802BCBC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802BCB4: .4byte gBattleCommunication +_0802BCB8: .4byte _0802BCBC + .align 2, 0 +_0802BCBC: + .4byte _0802BCD0 + .4byte _0802BCEC + .4byte _0802BD84 + .4byte _0802BE50 + .4byte _0802BEA4 +_0802BCD0: + bl sub_8023A80 + ldr r0, _0802BCE8 @ =gBattleCommunication + ldrb r1, [r0] + adds r1, 0x1 + movs r2, 0 + strb r1, [r0] + strb r2, [r0, 0x1] + bl sub_802BC6C + b _0802BEDA + .align 2, 0 +_0802BCE8: .4byte gBattleCommunication +_0802BCEC: + ldr r0, _0802BD60 @ =gMain + ldrh r1, [r0, 0x2E] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0802BD10 + ldrb r0, [r4, 0x1] + cmp r0, 0 + beq _0802BD10 + movs r0, 0x5 + bl PlaySE + bl nullsub_6 + movs r0, 0 + strb r0, [r4, 0x1] + bl sub_802BC6C +_0802BD10: + ldr r0, _0802BD60 @ =gMain + ldrh r1, [r0, 0x2E] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0802BD36 + ldr r4, _0802BD64 @ =gBattleCommunication + ldrb r0, [r4, 0x1] + cmp r0, 0 + bne _0802BD36 + movs r0, 0x5 + bl PlaySE + bl nullsub_6 + movs r0, 0x1 + strb r0, [r4, 0x1] + bl sub_802BC6C +_0802BD36: + ldr r0, _0802BD60 @ =gMain + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0802BD68 + movs r0, 0x5 + bl PlaySE + ldr r1, _0802BD64 @ =gBattleCommunication + ldrb r0, [r1, 0x1] + cmp r0, 0 + bne _0802BD7A + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + movs r0, 0x3 + bl BeginFastPaletteFade + b _0802BEDA + .align 2, 0 +_0802BD60: .4byte gMain +_0802BD64: .4byte gBattleCommunication +_0802BD68: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _0802BD72 + b _0802BEDA +_0802BD72: + movs r0, 0x5 + bl PlaySE + ldr r1, _0802BD80 @ =gBattleCommunication +_0802BD7A: + movs r0, 0x4 + strb r0, [r1] + b _0802BEDA + .align 2, 0 +_0802BD80: .4byte gBattleCommunication +_0802BD84: + ldr r0, _0802BE34 @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0802BD92 + b _0802BEDA +_0802BD92: + ldr r7, _0802BE38 @ =gBattlePartyID + ldr r0, _0802BE3C @ =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 r1, r9 + muls r1, r0 + adds r0, r1, 0 + ldr r1, _0802BE40 @ =gEnemyParty + mov r8, r1 + add r0, r8 + movs r1, 0x2 + ldr r2, _0802BE44 @ =0x02016079 + bl GetMonData + mov r1, r10 + ldrb r0, [r1] + 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 r1, r10 + ldrb r0, [r1] + 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 r1, r10 + ldrb r0, [r1] + 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 + str r0, [sp] + ldr r0, _0802BE48 @ =sub_800F808 + str r0, [sp, 0x4] + movs r0, 0x2 + ldr r1, _0802BE44 @ =0x02016079 + adds r2, r6, 0 + adds r3, r5, 0 + bl DoNamingScreen + ldr r1, _0802BE4C @ =gBattleCommunication + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0802BEDA + .align 2, 0 +_0802BE34: .4byte gPaletteFade +_0802BE38: .4byte gBattlePartyID +_0802BE3C: .4byte gBankAttacker +_0802BE40: .4byte gEnemyParty +_0802BE44: .4byte 0x02016079 +_0802BE48: .4byte sub_800F808 +_0802BE4C: .4byte gBattleCommunication +_0802BE50: + ldr r0, _0802BE88 @ =gMain + ldr r1, [r0, 0x4] + ldr r0, _0802BE8C @ =sub_800F808 + cmp r1, r0 + bne _0802BEDA + ldr r0, _0802BE90 @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0802BEDA + ldr r2, _0802BE94 @ =gBattlePartyID + ldr r0, _0802BE98 @ =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, _0802BE9C @ =gEnemyParty + adds r0, r1 + ldr r2, _0802BEA0 @ =0x02016079 + movs r1, 0x2 + bl SetMonData + b _0802BEC0 + .align 2, 0 +_0802BE88: .4byte gMain +_0802BE8C: .4byte sub_800F808 +_0802BE90: .4byte gPaletteFade +_0802BE94: .4byte gBattlePartyID +_0802BE98: .4byte gBankAttacker +_0802BE9C: .4byte gEnemyParty +_0802BEA0: .4byte 0x02016079 +_0802BEA4: + bl CalculatePlayerPartyCount + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x6 + bne _0802BEC0 + ldr r1, _0802BEBC @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x5 + str r0, [r1] + b _0802BEDA + .align 2, 0 +_0802BEBC: .4byte gBattlescriptCurrInstr +_0802BEC0: + ldr r3, _0802BEEC @ =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] +_0802BEDA: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0802BEEC: .4byte gBattlescriptCurrInstr + thumb_func_end atkF3_receive_new_pokemon_maybe + + thumb_func_start sub_802BEF0 +sub_802BEF0: @ 802BEF0 + ldr r2, _0802BF10 @ =gBattleMons + ldr r0, _0802BF14 @ =gBankAttacker + ldrb r1, [r0] + movs r0, 0x58 + muls r1, r0 + adds r1, r2 + ldr r0, _0802BF18 @ =gBattleMoveDamage + ldr r2, [r0] + ldrh r0, [r1, 0x28] + subs r0, r2 + strh r0, [r1, 0x28] + ldr r1, _0802BF1C @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + bx lr + .align 2, 0 +_0802BF10: .4byte gBattleMons +_0802BF14: .4byte gBankAttacker +_0802BF18: .4byte gBattleMoveDamage +_0802BF1C: .4byte gBattlescriptCurrInstr + thumb_func_end sub_802BEF0 + + thumb_func_start sub_802BF20 +sub_802BF20: @ 802BF20 + ldr r1, _0802BF3C @ =gBattleMons + ldr r0, _0802BF40 @ =gBankAttacker + ldrb r2, [r0] + movs r0, 0x58 + muls r0, r2 + adds r1, 0x4C + adds r0, r1 + movs r1, 0 + str r1, [r0] + ldr r1, _0802BF44 @ =gBattlescriptCurrInstr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + bx lr + .align 2, 0 +_0802BF3C: .4byte gBattleMons +_0802BF40: .4byte gBankAttacker +_0802BF44: .4byte gBattlescriptCurrInstr + thumb_func_end sub_802BF20 + + thumb_func_start sub_802BF48 +sub_802BF48: @ 802BF48 + ldr r1, _0802BF50 @ =gFightStateTracker + movs r0, 0xC + strb r0, [r1] + bx lr + .align 2, 0 +_0802BF50: .4byte gFightStateTracker + thumb_func_end sub_802BF48 + + thumb_func_start sub_802BF54 +sub_802BF54: @ 802BF54 + ldr r1, _0802BF64 @ =gFightStateTracker + movs r0, 0xC + strb r0, [r1] + ldr r1, _0802BF68 @ =gCurrentMoveTurn + ldr r0, _0802BF6C @ =gNoOfAllBanks + ldrb r0, [r0] + strb r0, [r1] + bx lr + .align 2, 0 +_0802BF64: .4byte gFightStateTracker +_0802BF68: .4byte gCurrentMoveTurn +_0802BF6C: .4byte gNoOfAllBanks + thumb_func_end sub_802BF54 + + .align 2, 0 @ Don't pad with nop. |