.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start atk00_attackcanceler atk00_attackcanceler: @ 8045FFC push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x4 ldr r0, =gBattleOutcome ldrb r0, [r0] cmp r0, 0 beq _08046020 ldr r1, =gFightStateTracker movs r0, 0xC strb r0, [r1] b _08046398 .pool _08046020: ldr r2, =gBattleMons ldr r0, =gBankAttacker ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r0, [r0, 0x28] cmp r0, 0 bne _08046064 ldr r2, =gHitMarker ldr r1, [r2] movs r0, 0x80 lsls r0, 2 ands r0, r1 cmp r0, 0 bne _08046064 movs r0, 0x80 lsls r0, 12 orrs r1, r0 str r1, [r2] ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082D8A4E b _08046396 .pool _08046064: bl sub_8041A6C lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0 beq _08046072 b _08046398 _08046072: ldr r0, =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 _0804608A b _08046398 _0804608A: ldr r4, =gBattleMons ldr r0, =gCurrMovePos ldrb r1, [r0] ldr r3, =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, =gHitMarker cmp r0, 0 bne _08046108 ldr r0, =gCurrentMove ldrh r0, [r0] cmp r0, 0xA5 beq _08046108 ldr r0, [r5] ldr r1, =0x00800200 ands r0, r1 cmp r0, 0 bne _08046108 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 _08046108 ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DB07A str r0, [r1] ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] b _08046398 .pool _08046108: ldr r0, [r5] ldr r1, =0xff7fffff ands r0, r1 str r0, [r5] movs r6, 0x80 lsls r6, 18 ands r0, r6 cmp r0, 0 bne _08046160 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 _08046160 bl sub_8045CBC lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0 beq _08046160 cmp r2, 0x2 bne _08046150 ldr r0, [r5] orrs r0, r6 str r0, [r5] b _08046398 .pool _08046150: ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r2, 0x1 orrs r1, r2 strb r1, [r0] b _08046398 .pool _08046160: ldr r2, =gHitMarker ldr r0, [r2] movs r1, 0x80 lsls r1, 18 orrs r0, r1 str r0, [r2] ldr r2, =gProtectStructs ldr r1, =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 _080461E8 ldr r2, =gBattleMoves ldr r0, =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 _080461E8 ldr r0, =gBankAttacker ldrb r0, [r0] ldr r2, =0x00000115 adds r1, r3, 0 bl sub_803F480 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, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DB194 b _08046396 .pool _080461E8: movs r2, 0 ldr r0, =gNoOfAllBanks ldrb r0, [r0] cmp r2, r0 bge _0804622A ldr r6, =gProtectStructs ldr r1, =gBattleMoves mov r12, r1 adds r5, r0, 0 ldr r7, =gTurnOrder _080461FC: adds r4, r2, r7 ldrb r3, [r4] lsls r0, r3, 4 adds r0, r6 ldrb r0, [r0] lsls r0, 26 cmp r0, 0 bge _08046224 ldr r0, =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 _08046224 b _08046350 _08046224: adds r2, 0x1 cmp r2, r5 blt _080461FC _0804622A: ldr r0, =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 _08046288 movs r0, 0x3 negs r0, r0 ands r0, r3 strb r0, [r1] ldr r4, =gLastUsedAbility movs r0, 0x1F strb r0, [r4] bl b_movescr_stack_push_cursor ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DB53E str r0, [r1] mov r1, r8 ldrb r0, [r1] ldrb r1, [r4] bl RecordAbilityBattle b _08046398 .pool _08046288: lsls r0, r2, 4 add r0, r9 ldrb r0, [r0] lsls r0, 31 cmp r0, 0 bne _08046296 b _08046390 _08046296: ldr r1, =gBattleMoves ldr r2, =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 _08046390 cmp r3, 0xAE bne _080462D4 ldr r2, =gBattleMons ldr r0, =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 _080462D4 adds r0, r1, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0x7 bne _08046390 _080462D4: ldrh r0, [r4] bl sub_8052F48 lsls r0, 24 cmp r0, 0 beq _080462FA ldr r1, =gBattleMons ldr r0, =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 _08046390 _080462FA: ldr r0, =gBankAttacker ldrb r0, [r0] bl CancelMultiTurnMoves ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r1, =gUnknown_02024250 ldr r3, =gBankTarget ldrb r0, [r3] lsls r0, 1 adds r0, r1 movs r2, 0 strh r2, [r0] ldr r1, =gUnknown_02024258 ldrb r0, [r3] lsls r0, 1 adds r0, r1 strh r2, [r0] ldr r1, =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x6] b _08046390 .pool _08046350: ldr r0, =gBankAttacker ldrb r0, [r0] ldr r2, =0x00000121 adds r1, r3, 0 bl sub_803F480 ldrb r1, [r4] lsls r1, 4 adds r1, r6 ldrb r2, [r1] movs r0, 0x21 negs r0, r0 ands r0, r2 strb r0, [r1] ldr r1, =gBattleScripting ldrb r0, [r4] strb r0, [r1, 0x17] bl b_movescr_stack_push_cursor ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DB1AC b _08046396 .pool _08046390: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 _08046396: str r0, [r1] _08046398: add sp, 0x4 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk00_attackcanceler thumb_func_start mcmd_jump_if_move_not_executed mcmd_jump_if_move_not_executed: @ 80463AC push {r4-r6,lr} sub sp, 0x4 lsls r0, 24 lsrs r0, 24 lsls r1, 16 lsrs r6, r1, 16 ldr r1, =gBattlescriptCurrInstr ldr r5, [r1] adds r4, r5, r0 ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 beq _0804640C ldr r1, =gUnknown_02024250 ldr r3, =gBankTarget ldrb r0, [r3] lsls r0, 1 adds r0, r1 movs r2, 0 strh r2, [r0] ldr r1, =gUnknown_02024258 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 _08046426 .pool _0804640C: bl b_feature_update_destiny_bond ldr r0, =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 _0804642A _08046426: ldr r0, =gBattlescriptCurrInstr str r4, [r0] _0804642A: add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end mcmd_jump_if_move_not_executed thumb_func_start atk40_801DBA0 atk40_801DBA0: @ 804643C push {lr} ldr r1, =gProtectStructs ldr r0, =gBankTarget ldrb r0, [r0] lsls r0, 4 adds r0, r1 ldrb r0, [r0] lsls r0, 31 cmp r0, 0 beq _0804649C ldr r2, =gBattleMoves ldr r0, =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 _0804649C ldr r2, =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, =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x6] b _080464A4 .pool _0804649C: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _080464A4: pop {r0} bx r0 .pool thumb_func_end atk40_801DBA0 thumb_func_start sub_80464AC sub_80464AC: @ 80464AC push {r4,lr} lsls r0, 16 lsrs r3, r0, 16 movs r4, 0 ldr r1, =gProtectStructs ldr r0, =gBankTarget ldrb r0, [r0] lsls r0, 4 adds r0, r1 ldrb r0, [r0] lsls r0, 31 cmp r0, 0 beq _080464F8 ldr r2, =gBattleMoves ldr r0, =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 _080464F8 ldr r2, =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, =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x6] movs r4, 0x1 _080464F8: adds r0, r4, 0 pop {r4} pop {r1} bx r1 .pool thumb_func_end sub_80464AC thumb_func_start sub_8046518 sub_8046518: @ 8046518 push {r4-r6,lr} sub sp, 0x4 lsls r0, 16 lsrs r5, r0, 16 ldr r2, =gStatuses3 ldr r3, =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 _0804654A ldr r1, =gDisableStructs lsls r0, r4, 3 subs r0, r4 lsls r0, 2 adds r0, r1 ldr r1, =gBankAttacker ldrb r0, [r0, 0x15] ldrb r1, [r1] cmp r0, r1 beq _08046634 _0804654A: ldr r0, =gHitMarker ldr r1, [r0] movs r2, 0x80 lsls r2, 9 ands r1, r2 adds r2, r0, 0 cmp r1, 0 bne _08046590 ldrb r0, [r3] lsls r0, 2 adds r0, r6 ldr r0, [r0] movs r1, 0x40 ands r0, r1 cmp r0, 0 beq _08046590 _0804656A: ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r2, 0x1 orrs r1, r2 strb r1, [r0] b _08046634 .pool _08046590: ldr r0, [r2] ldr r1, =0xfffeffff ands r0, r1 str r0, [r2] movs r1, 0x80 lsls r1, 10 ands r0, r1 cmp r0, 0 bne _080465B2 ldrb r0, [r3] lsls r0, 2 adds r0, r6 ldr r0, [r0] movs r1, 0x80 ands r0, r1 cmp r0, 0 bne _0804656A _080465B2: ldr r0, [r2] ldr r1, =0xfffdffff ands r0, r1 str r0, [r2] movs r1, 0x80 lsls r1, 11 ands r0, r1 cmp r0, 0 bne _080465D2 ldrb r0, [r3] lsls r0, 2 adds r0, r6 ldr r0, [r0] ands r0, r1 cmp r0, 0 bne _0804656A _080465D2: ldr r0, [r2] ldr r1, =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 _08046622 str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0x4D movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 bne _08046622 ldr r0, =gBattleWeather ldrh r1, [r0] movs r0, 0x7 ands r0, r1 cmp r0, 0 beq _08046622 ldr r0, =gBattleMoves adds r1, r4, r5 lsls r1, 2 adds r1, r0 ldrb r0, [r1] cmp r0, 0x98 beq _08046634 _08046622: ldr r1, =gBattleMoves adds r0, r4, r5 lsls r0, 2 adds r0, r1 ldrb r0, [r0] cmp r0, 0x11 beq _08046634 cmp r0, 0x4E bne _08046654 _08046634: movs r0, 0x7 adds r1, r5, 0 bl mcmd_jump_if_move_not_executed movs r0, 0x1 b _08046656 .pool _08046654: movs r0, 0 _08046656: add sp, 0x4 pop {r4-r6} pop {r1} bx r1 thumb_func_end sub_8046518 thumb_func_start atk01_accuracycheck atk01_accuracycheck: @ 8046660 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 ldr r0, =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 _0804671C ldr r2, =gStatuses3 ldr r3, =gBankTarget ldrb r4, [r3] lsls r0, r4, 2 adds r0, r2 ldr r1, [r0] movs r0, 0x18 ands r1, r0 cmp r1, 0 beq _080466D0 ldr r0, =0x0000ffff cmp r6, r0 bne _080466D0 ldr r1, =gDisableStructs lsls r0, r4, 3 subs r0, r4 lsls r0, 2 adds r0, r1 ldr r1, =gBankAttacker ldrb r0, [r0, 0x15] ldrb r1, [r1] cmp r0, r1 bne _080466D0 adds r0, r5, 0x7 str r0, [r7] b _080469D2 .pool _080466D0: ldrb r0, [r3] lsls r0, 2 adds r0, r2 ldr r0, [r0] ldr r1, =0x000400c0 ands r0, r1 cmp r0, 0 beq _08046700 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 _080469D2 .pool _08046700: movs r0, 0 bl sub_80464AC lsls r0, 24 cmp r0, 0 beq _0804670E b _080469D2 _0804670E: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x7 str r0, [r1] b _080469D2 .pool _0804671C: cmp r6, 0 bne _08046724 ldr r0, =gCurrentMove ldrh r6, [r0] _08046724: ldr r0, =gBattleStruct ldr r0, [r0] ldrb r0, [r0, 0x13] cmp r0, 0 beq _08046744 movs r1, 0x3F mov r10, r1 mov r2, r10 ands r2, r0 mov r10, r2 b _08046752 .pool _08046744: ldr r1, =gBattleMoves lsls r0, r6, 1 adds r0, r6 lsls r0, 2 adds r0, r1 ldrb r0, [r0, 0x2] mov r10, r0 _08046752: adds r0, r6, 0 bl sub_80464AC lsls r0, 24 cmp r0, 0 beq _08046760 b _080469D2 _08046760: adds r0, r6, 0 bl sub_8046518 lsls r0, 24 cmp r0, 0 beq _0804676E b _080469D2 _0804676E: ldr r3, =gBattleMons ldr r0, =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 _080467A8 ldr r0, =gBankAttacker ldrb r0, [r0] muls r0, r2 adds r0, r3 ldrb r5, [r0, 0x1E] b _080467BE .pool _080467A8: ldr r0, =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 _080467BE: lsls r0, r5, 24 cmp r0, 0 bge _080467C6 movs r5, 0 _080467C6: lsls r0, r5, 24 asrs r0, 24 cmp r0, 0xC ble _080467D0 movs r5, 0xC _080467D0: ldr r1, =gBattleMoves lsls r4, r6, 1 adds r0, r4, r6 lsls r0, 2 adds r7, r0, r1 ldrb r3, [r7, 0x3] mov r8, r3 movs r0, 0 str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0xD movs r3, 0 bl AbilityBattleEffects lsls r0, 24 lsrs r0, 24 str r4, [sp, 0x4] cmp r0, 0 bne _08046822 str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0x4D movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 bne _08046822 ldr r0, =gBattleWeather ldrh r1, [r0] movs r0, 0x60 ands r0, r1 cmp r0, 0 beq _08046822 ldrb r0, [r7] cmp r0, 0x98 bne _08046822 movs r0, 0x32 mov r8, r0 _08046822: ldr r1, =gUnknown_0831C0F4 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, =gBattleMons ldr r0, =gBankAttacker ldrb r0, [r0] movs r5, 0x58 muls r0, r5 adds r0, r7 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0xE bne _08046860 lsls r0, r4, 6 adds r0, r4 lsls r0, 1 movs r1, 0x64 bl __divsi3 lsls r0, 16 lsrs r4, r0, 16 _08046860: 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 _080468B8 str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0x4D movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 bne _080468B8 ldr r0, =gBankTarget ldrb r0, [r0] muls r0, r5 adds r0, r7 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x8 bne _080468B8 ldr r0, =gBattleWeather ldrh r1, [r0] movs r0, 0x18 ands r0, r1 cmp r0, 0 beq _080468B8 lsls r0, r4, 2 adds r0, r4 lsls r0, 4 movs r1, 0x64 bl __divsi3 lsls r0, 16 lsrs r4, r0, 16 _080468B8: ldr r2, =gBattleMons ldr r0, =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 _080468E4 mov r1, r10 cmp r1, 0x8 bhi _080468E4 lsls r0, r4, 2 adds r0, r4 lsls r0, 4 movs r1, 0x64 bl __divsi3 lsls r0, 16 lsrs r4, r0, 16 _080468E4: ldr r2, =gBankTarget mov r8, r2 ldrb r2, [r2] movs r7, 0x58 adds r0, r2, 0 muls r0, r7 mov r3, r9 adds r1, r0, r3 ldrh r0, [r1, 0x2E] cmp r0, 0xAF bne _08046928 ldr r1, =gEnigmaBerries lsls r0, r2, 3 subs r0, r2 lsls r0, 2 adds r0, r1 ldrb r5, [r0, 0x7] ldrb r2, [r0, 0x1A] b _08046944 .pool _08046928: 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 _08046944: ldr r0, =gUnknown_0202420F ldr r1, =gBankTarget ldrb r1, [r1] strb r1, [r0] cmp r5, 0x16 bne _08046960 movs r0, 0x64 subs r0, r2 muls r0, r4 movs r1, 0x64 bl __divsi3 lsls r0, 16 lsrs r4, r0, 16 _08046960: 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 _080469CA ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _080469C0 ldr r1, =gBattleMoves ldr r2, [sp, 0x4] adds r0, r2, r6 lsls r0, 2 adds r0, r1 ldrb r0, [r0, 0x6] cmp r0, 0x8 beq _080469A2 cmp r0, 0x20 bne _080469C0 _080469A2: ldr r1, =gBattleCommunication movs r0, 0x2 b _080469C4 .pool _080469C0: ldr r1, =gBattleCommunication movs r0, 0 _080469C4: strb r0, [r1, 0x6] bl b_wonderguard_and_levitate _080469CA: movs r0, 0x7 adds r1, r6, 0 bl mcmd_jump_if_move_not_executed _080469D2: add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk01_accuracycheck thumb_func_start atk02_attackstring atk02_attackstring: @ 80469E8 push {r4,r5,lr} ldr r0, =gBattleExecBuffer ldr r5, [r0] cmp r5, 0 bne _08046A20 ldr r4, =gHitMarker ldr r0, [r4] movs r1, 0xC0 lsls r1, 3 ands r0, r1 cmp r0, 0 bne _08046A14 ldr r0, =gBankAttacker ldrb r1, [r0] movs r0, 0x4 bl b_std_message ldr r0, [r4] movs r1, 0x80 lsls r1, 3 orrs r0, r1 str r0, [r4] _08046A14: ldr r0, =gBattlescriptCurrInstr ldr r1, [r0] adds r1, 0x1 str r1, [r0] ldr r0, =gBattleCommunication strb r5, [r0, 0x7] _08046A20: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end atk02_attackstring thumb_func_start atk03_ppreduce atk03_ppreduce: @ 8046A3C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 movs r6, 0x1 ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 beq _08046A54 b _08046BEE _08046A54: ldr r1, =gSpecialStatuses ldr r2, =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 _08046AF6 ldr r2, =gBattleMoves ldr r0, =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x6] cmp r0, 0x20 beq _08046AA6 cmp r0, 0x20 bgt _08046AA0 cmp r0, 0x8 beq _08046ABC b _08046AD6 .pool _08046AA0: cmp r0, 0x40 beq _08046ABC b _08046AD6 _08046AA6: 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 _08046AF6 _08046ABC: 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 _08046AF6 _08046AD6: ldr r1, =gBankTarget mov r2, r9 ldrb r0, [r2] ldrb r7, [r1] cmp r0, r7 beq _08046AF6 ldr r2, =gBattleMons ldrb r1, [r1] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x2E bne _08046AF6 adds r6, 0x1 _08046AF6: ldr r0, =gHitMarker ldr r4, [r0] movs r0, 0xA0 lsls r0, 4 ands r4, r0 cmp r4, 0 bne _08046BDC ldr r2, =gBattleMons ldr r3, =gCurrMovePos ldr r1, =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 _08046BDC ldr r0, =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 _08046B70 subs r0, r6 strb r0, [r2] b _08046B72 .pool _08046B70: strb r4, [r2] _08046B72: 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 _08046BDC ldr r1, =gDisableStructs lsls r0, r3, 3 subs r0, r3 lsls r0, 2 adds r0, r1 ldrb r1, [r0, 0x18] lsrs r1, 4 ldr r2, =gBitTable ldrb r0, [r7] lsls r0, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _08046BDC ldr r0, =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 dp01_build_cmdbuf_x02_a_b_varargs mov r7, r9 ldrb r0, [r7] bl dp01_battle_side_mark_buffer_for_execution _08046BDC: ldr r2, =gHitMarker ldr r0, [r2] ldr r1, =0xfffff7ff ands r0, r1 str r0, [r2] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] _08046BEE: add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk03_ppreduce thumb_func_start atk04_critcalc atk04_critcalc: @ 8046C18 push {r4-r7,lr} ldr r1, =gBattleMons ldr r0, =gBankAttacker ldrb r2, [r0] movs r0, 0x58 muls r0, r2 adds r0, r1 ldrh r0, [r0, 0x2E] cmp r0, 0xAF bne _08046C48 ldr r1, =gEnigmaBerries lsls r0, r2, 3 subs r0, r2 lsls r0, 2 adds r0, r1 ldrb r6, [r0, 0x7] b _08046C50 .pool _08046C48: bl ItemId_GetHoldEffect lsls r0, 24 lsrs r6, r0, 24 _08046C50: ldr r1, =gUnknown_0202420F ldr r3, =gBankAttacker ldrb r0, [r3] strb r0, [r1] ldr r4, =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, =gBattleMoves ldr r0, =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 _08046C90 adds r5, 0x1 _08046C90: adds r0, r5, 0 cmp r1, 0x4B bne _08046C98 adds r0, 0x1 _08046C98: cmp r1, 0xC8 bne _08046C9E adds r0, 0x1 _08046C9E: adds r2, r0, 0 cmp r1, 0xD1 bne _08046CA6 adds r2, 0x1 _08046CA6: movs r1, 0 cmp r6, 0x3F bne _08046CB6 adds r0, r7, r4 ldrh r0, [r0] cmp r0, 0x71 bne _08046CB6 movs r1, 0x1 _08046CB6: lsls r5, r1, 1 movs r3, 0 cmp r6, 0x42 bne _08046CD0 mov r0, r12 ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r4 ldrh r0, [r0] cmp r0, 0x53 bne _08046CD0 movs r3, 0x1 _08046CD0: lsls r1, r3, 1 cmp r6, 0x29 bne _08046CF0 adds r0, r5, 0x1 adds r0, r2, r0 b _08046CF2 .pool _08046CF0: adds r0, r2, r5 _08046CF2: adds r0, r1 lsls r0, 16 lsrs r0, 16 adds r5, r0, 0 cmp r5, 0x4 bls _08046D00 movs r5, 0x4 _08046D00: ldr r0, =gBankTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r4 adds r0, 0x20 ldrb r4, [r0] cmp r4, 0x4 beq _08046D70 cmp r4, 0x4B beq _08046D70 ldr r1, =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 _08046D70 ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x84 lsls r1, 2 ands r0, r1 cmp r0, 0 bne _08046D70 bl Random ldr r2, =gUnknown_0831C128 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 _08046D70 ldr r1, =gCritMultiplier movs r0, 0x2 b _08046D74 .pool _08046D70: ldr r1, =gCritMultiplier movs r0, 0x1 _08046D74: strb r0, [r1] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk04_critcalc thumb_func_start atk05_cmd5 atk05_cmd5: @ 8046D8C push {r4-r7,lr} sub sp, 0x10 ldr r4, =gUnknown_0202428E ldr r5, =gBankTarget ldrb r0, [r5] bl GetBankIdentity movs r1, 0x1 ands r1, r0 lsls r1, 1 adds r1, r4 ldrh r3, [r1] ldr r6, =gBankAttacker ldrb r0, [r6] movs r4, 0x58 muls r0, r4 ldr r2, =gBattleMons adds r0, r2 ldrb r1, [r5] muls r1, r4 adds r1, r2 ldr r7, =gCurrentMove ldrh r2, [r7] ldr r4, =gUnknown_02024400 ldrh r4, [r4] str r4, [sp] ldr r4, =gBattleStruct ldr r4, [r4] ldrb r4, [r4, 0x13] str r4, [sp, 0x4] ldrb r4, [r6] str r4, [sp, 0x8] ldrb r4, [r5] str r4, [sp, 0xC] bl sub_806957C ldr r4, =gBattleMoveDamage ldr r1, =gCritMultiplier ldrb r1, [r1] muls r1, r0 ldr r0, =gBattleScripting ldrb r0, [r0, 0xE] adds r3, r1, 0 muls r3, r0 str r3, [r4] ldr r1, =gStatuses3 ldrb r0, [r6] lsls r0, 2 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 2 ands r0, r1 cmp r0, 0 beq _08046E10 ldr r2, =gBattleMoves ldrh r1, [r7] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x2] cmp r0, 0xD bne _08046E10 lsls r0, r3, 1 str r0, [r4] _08046E10: ldr r1, =gProtectStructs ldr r0, =gBankAttacker ldrb r0, [r0] lsls r0, 4 adds r0, r1 ldrb r0, [r0] lsls r0, 28 cmp r0, 0 bge _08046E32 ldr r4, =gBattleMoveDamage ldr r1, [r4] lsls r0, r1, 4 subs r0, r1 movs r1, 0xA bl __divsi3 str r0, [r4] _08046E32: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] add sp, 0x10 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk05_cmd5 thumb_func_start sub_8046E7C sub_8046E7C: @ 8046E7C push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x10 adds r5, r1, 0 lsls r0, 24 lsrs r7, r0, 24 lsls r5, 24 lsrs r5, 24 ldr r4, =gUnknown_0202428E 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, =gBattleMons adds r0, r2 muls r1, r5 adds r1, r2 ldr r2, =gCurrentMove mov r8, r2 ldrh r2, [r2] ldr r6, =gUnknown_02024400 ldrh r4, [r6] str r4, [sp] ldr r4, =gBattleStruct ldr r4, [r4] ldrb r4, [r4, 0x13] str r4, [sp, 0x4] str r7, [sp, 0x8] str r5, [sp, 0xC] bl sub_806957C ldr r4, =gBattleMoveDamage movs r1, 0 strh r1, [r6] ldr r1, =gCritMultiplier ldrb r1, [r1] muls r1, r0 ldr r0, =gBattleScripting ldrb r0, [r0, 0xE] adds r3, r1, 0 muls r3, r0 str r3, [r4] ldr r1, =gStatuses3 lsls r0, r7, 2 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 2 ands r0, r1 cmp r0, 0 beq _08046F0A ldr r2, =gBattleMoves mov r0, r8 ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x2] cmp r0, 0xD bne _08046F0A lsls r0, r3, 1 str r0, [r4] _08046F0A: ldr r0, =gProtectStructs lsls r1, r7, 4 adds r1, r0 ldrb r0, [r1] lsls r0, 28 cmp r0, 0 bge _08046F28 ldr r4, =gBattleMoveDamage ldr r1, [r4] lsls r0, r1, 4 subs r0, r1 movs r1, 0xA bl __divsi3 str r0, [r4] _08046F28: add sp, 0x10 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_8046E7C thumb_func_start battle_attack_damage_modulate_by_effectivity battle_attack_damage_modulate_by_effectivity: @ 8046F60 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r5, =gBattleMoveDamage ldr r0, [r5] muls r0, r4 movs r1, 0xA bl __divsi3 str r0, [r5] cmp r0, 0 bne _08046F80 cmp r4, 0 beq _08046F80 movs r0, 0x1 str r0, [r5] _08046F80: cmp r4, 0x5 beq _08046FB0 cmp r4, 0x5 bgt _08046F94 cmp r4, 0 beq _08046F9A b _08047032 .pool _08046F94: cmp r4, 0x14 beq _08046FF0 b _08047032 _08046F9A: ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x8 orrs r0, r1 movs r1, 0xFB ands r0, r1 movs r1, 0xFD ands r0, r1 b _08047030 .pool _08046FB0: ldr r2, =gBattleMoves ldr r0, =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x1] cmp r0, 0 beq _08047032 ldr r2, =gBattleMoveFlags ldrb r1, [r2] movs r0, 0x29 ands r0, r1 cmp r0, 0 bne _08047032 movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _08046FEC movs r0, 0xFD ands r0, r1 b _08047030 .pool _08046FEC: movs r0, 0x4 b _0804702E _08046FF0: ldr r2, =gBattleMoves ldr r0, =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x1] cmp r0, 0 beq _08047032 ldr r2, =gBattleMoveFlags ldrb r1, [r2] movs r0, 0x29 ands r0, r1 cmp r0, 0 bne _08047032 movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _0804702C movs r0, 0xFB ands r0, r1 b _08047030 .pool _0804702C: movs r0, 0x2 _0804702E: orrs r0, r1 _08047030: strb r0, [r2] _08047032: pop {r4,r5} pop {r0} bx r0 thumb_func_end battle_attack_damage_modulate_by_effectivity thumb_func_start sub_8047038 sub_8047038: @ 8047038 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x8 movs r3, 0 ldr r1, =gCurrentMove ldrh r0, [r1] cmp r0, 0xA5 bne _0804704C b _08047260 _0804704C: ldr r0, =gBattleStruct ldr r0, [r0] ldrb r0, [r0, 0x13] cmp r0, 0 beq _08047068 movs r1, 0x3F mov r8, r1 ands r1, r0 mov r8, r1 b _08047078 .pool _08047068: ldr r2, =gBattleMoves ldrh r1, [r1] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x2] mov r8, r0 _08047078: ldr r2, =gBattleMons ldr r0, =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 _0804709A adds r0, r1, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, r8 bne _080470B0 _0804709A: ldr r4, =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] _080470B0: ldr r2, =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 _08047128 mov r1, r8 cmp r1, 0x4 bne _08047128 ldr r3, =gLastUsedAbility strb r0, [r3] ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x9 orrs r0, r1 strb r0, [r2] ldr r1, =gUnknown_02024250 ldrb r0, [r4] lsls r0, 1 adds r0, r1 movs r2, 0 strh r2, [r0] ldr r1, =gUnknown_02024258 ldrb r0, [r4] lsls r0, 1 adds r0, r1 strh r2, [r0] ldr r0, =gBattleCommunication mov r1, r8 strb r1, [r0, 0x6] ldrb r0, [r4] ldrb r1, [r3] bl RecordAbilityBattle b _080471C4 .pool _08047128: ldr r1, =gUnknown_0831ACE8 adds r0, r3, r1 ldrb r0, [r0] adds r2, r1, 0 b _080471A4 .pool _08047138: adds r3, 0x3 b _080471A0 _0804713C: ldr r5, =gUnknown_0831ACE8 adds r0, r3, r5 ldrb r0, [r0] cmp r0, r8 bne _08047198 adds r1, r3, 0x1 adds r1, r5 ldr r2, =gBattleMons ldr r7, =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 _08047172 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] _08047172: ldrb r0, [r7] muls r0, r6 adds r0, r2 adds r1, r0, 0 adds r1, 0x22 ldrb r1, [r1] cmp r4, r1 bne _08047198 adds r0, 0x21 ldrb r0, [r0] cmp r0, r4 beq _08047198 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] _08047198: adds r3, 0x3 ldr r5, =gBattleMons ldr r4, =gBankTarget ldr r2, =gUnknown_0831ACE8 _080471A0: adds r0, r3, r2 ldrb r0, [r0] _080471A4: cmp r0, 0xFF beq _080471C4 cmp r0, 0xFE bne _0804713C 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 _08047138 _080471C4: ldr r2, =gBattleMons ldr r5, =gBankTarget ldrb r1, [r5] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x20 ldrb r6, [r0] cmp r6, 0x19 bne _08047242 ldr r0, =gBankAttacker ldrb r0, [r0] ldr r7, =gCurrentMove ldrh r1, [r7] bl move_weather_interaction lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 bne _08047242 ldr r1, =gBattleMoveFlags mov r8, r1 ldrb r4, [r1] ands r0, r4 cmp r0, 0 beq _08047200 movs r0, 0x6 ands r0, r4 cmp r0, 0x6 bne _08047242 _08047200: ldr r2, =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 _08047242 ldr r3, =gLastUsedAbility strb r6, [r3] movs r0, 0x1 orrs r0, r4 mov r1, r8 strb r0, [r1] ldr r1, =gUnknown_02024250 ldrb r0, [r5] lsls r0, 1 adds r0, r1 movs r2, 0 strh r2, [r0] ldr r1, =gUnknown_02024258 ldrb r0, [r5] lsls r0, 1 adds r0, r1 strh r2, [r0] ldr r1, =gBattleCommunication movs r0, 0x3 strb r0, [r1, 0x6] ldrb r0, [r5] ldrb r1, [r3] bl RecordAbilityBattle _08047242: ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r0, 0x8 ands r0, r1 cmp r0, 0 beq _08047260 ldr r2, =gProtectStructs ldr r0, =gBankAttacker ldrb r1, [r0] lsls r1, 4 adds r1, r2 ldrb r0, [r1, 0x1] movs r2, 0x2 orrs r0, r2 strb r0, [r1, 0x1] _08047260: ldr r1, =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 .pool thumb_func_end sub_8047038 thumb_func_start b_wonderguard_and_levitate b_wonderguard_and_levitate: @ 80472A8 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} movs r6, 0 movs r5, 0 ldr r0, =gCurrentMove ldrh r1, [r0] mov r9, r0 cmp r1, 0xA5 bne _080472C0 b _08047508 _080472C0: ldr r2, =gBattleMoves lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r1, r0, r2 ldrb r0, [r1, 0x1] cmp r0, 0 bne _080472D2 b _08047508 _080472D2: ldr r0, =gBattleStruct ldr r0, [r0] ldrb r0, [r0, 0x13] cmp r0, 0 beq _080472F4 movs r1, 0x3F mov r12, r1 mov r2, r12 ands r2, r0 mov r12, r2 b _080472F8 .pool _080472F4: ldrb r1, [r1, 0x2] mov r12, r1 _080472F8: ldr r2, =gBattleMons ldr r3, =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 _0804733C mov r0, r12 cmp r0, 0x4 bne _0804733C ldr r0, =gLastUsedAbility strb r1, [r0] ldr r0, =gBattleCommunication mov r1, r12 strb r1, [r0, 0x6] ldrb r0, [r3] movs r1, 0x1A bl RecordAbilityBattle b _08047508 .pool _0804733C: ldr r1, =gUnknown_0831ACE8 adds r0, r5, r1 ldrb r0, [r0] adds r4, r1, 0 b _0804748E .pool _0804734C: adds r0, r5, r4 ldrb r0, [r0] cmp r0, r12 beq _08047356 b _08047488 _08047356: 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 _08047396 adds r0, r5, 0x2 adds r0, r4 ldrb r0, [r0] cmp r0, 0 bne _08047396 ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x8 orrs r0, r1 strb r0, [r2] ldr r1, =gProtectStructs ldr r0, =gBankAttacker ldrb r2, [r0] lsls r2, 4 adds r2, r1 ldrb r0, [r2, 0x1] movs r1, 0x2 orrs r0, r1 strb r0, [r2, 0x1] _08047396: 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 _080473DC adds r0, 0x21 ldrb r0, [r0] cmp r0, r2 beq _080473DC adds r0, r5, 0x2 adds r0, r4 ldrb r0, [r0] cmp r0, 0 bne _080473DC ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x8 orrs r0, r1 strb r0, [r2] ldr r1, =gProtectStructs ldr r0, =gBankAttacker ldrb r2, [r0] lsls r2, 4 adds r2, r1 ldrb r0, [r2, 0x1] movs r1, 0x2 orrs r0, r1 strb r0, [r2, 0x1] _080473DC: 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 _08047400 adds r0, r5, 0x2 adds r0, r4 ldrb r0, [r0] cmp r0, 0x14 bne _08047400 movs r0, 0x1 orrs r6, r0 _08047400: 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 _0804742E adds r0, 0x21 ldrb r0, [r0] cmp r0, r2 beq _0804742E adds r0, r5, 0x2 adds r0, r4 ldrb r0, [r0] cmp r0, 0x14 bne _0804742E movs r0, 0x1 orrs r6, r0 _0804742E: 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 _08047456 adds r0, r5, 0x2 adds r0, r4 ldrb r0, [r0] cmp r0, 0x5 bne _08047456 movs r0, 0x2 orrs r6, r0 lsls r0, r6, 24 lsrs r6, r0, 24 _08047456: 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 _08047488 adds r0, 0x21 ldrb r0, [r0] cmp r0, r2 beq _08047488 adds r0, r5, 0x2 adds r0, r4 ldrb r0, [r0] cmp r0, 0x5 bne _08047488 movs r0, 0x2 orrs r6, r0 lsls r0, r6, 24 lsrs r6, r0, 24 _08047488: adds r5, 0x3 adds r0, r5, r4 ldrb r0, [r0] _0804748E: cmp r0, 0xFF beq _080474B2 cmp r0, 0xFE beq _08047498 b _0804734C _08047498: 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 _08047488 _080474B2: 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 _08047508 ldr r0, =gBankAttacker ldrb r0, [r0] mov r2, r9 ldrh r1, [r2] bl move_weather_interaction lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 bne _08047508 movs r0, 0x3 ands r6, r0 cmp r6, 0x1 beq _08047508 ldr r2, =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 _08047508 ldr r0, =gLastUsedAbility strb r4, [r0] ldr r1, =gBattleCommunication movs r0, 0x3 strb r0, [r1, 0x6] mov r1, r8 ldrb r0, [r1] movs r1, 0x19 bl RecordAbilityBattle _08047508: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end b_wonderguard_and_levitate thumb_func_start b_attack_effectivity_adapt b_attack_effectivity_adapt: @ 804752C push {r4-r7,lr} adds r6, r2, 0 lsls r0, 24 lsrs r4, r0, 24 lsls r1, 16 lsrs r5, r1, 16 ldr r7, =gBattleMoveDamage ldr r0, [r7] muls r0, r4 movs r1, 0xA bl __divsi3 str r0, [r7] cmp r0, 0 bne _08047552 cmp r4, 0 beq _08047552 movs r0, 0x1 str r0, [r7] _08047552: cmp r4, 0x5 beq _0804757A cmp r4, 0x5 bgt _08047564 cmp r4, 0 beq _0804756A b _080475DE .pool _08047564: cmp r4, 0x14 beq _080475AC b _080475DE _0804756A: ldrb r0, [r6] movs r1, 0x8 orrs r0, r1 movs r1, 0xFB ands r0, r1 movs r1, 0xFD ands r0, r1 b _080475DC _0804757A: ldr r0, =gBattleMoves lsls r1, r5, 1 adds r1, r5 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0x1] cmp r0, 0 beq _080475DE ldrb r1, [r6] movs r0, 0x29 ands r0, r1 cmp r0, 0 bne _080475DE movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _080475A8 movs r0, 0xFD ands r0, r1 b _080475DC .pool _080475A8: movs r0, 0x4 b _080475DA _080475AC: ldr r0, =gBattleMoves lsls r1, r5, 1 adds r1, r5 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0x1] cmp r0, 0 beq _080475DE ldrb r1, [r6] movs r0, 0x29 ands r0, r1 cmp r0, 0 bne _080475DE movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _080475D8 movs r0, 0xFB ands r0, r1 b _080475DC .pool _080475D8: movs r0, 0x2 _080475DA: orrs r0, r1 _080475DC: strb r0, [r6] _080475DE: pop {r4-r7} pop {r0} bx r0 thumb_func_end b_attack_effectivity_adapt thumb_func_start move_effectiveness_something move_effectiveness_something: @ 80475E4 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x10 lsls r0, 16 lsrs r0, 16 mov r10, r0 lsls r1, 24 lsrs r1, 24 str r1, [sp, 0x4] lsls r2, 24 lsrs r2, 24 mov r9, r2 movs r0, 0 mov r8, r0 mov r0, sp mov r1, r8 strb r1, [r0] mov r2, r10 cmp r2, 0xA5 bne _08047616 movs r0, 0 b _0804779E _08047616: ldr r1, =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, =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 _0804764A adds r0, r3, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, r1 bne _0804765C _0804764A: ldr r4, =gBattleMoveDamage ldr r1, [r4] lsls r0, r1, 4 subs r0, r1 str r0, [r4] movs r1, 0xA bl __divsi3 str r0, [r4] _0804765C: 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 _08047690 ldr r3, [sp, 0x8] cmp r3, 0x4 bne _08047690 movs r1, 0x9 mov r0, sp ldrb r0, [r0] orrs r0, r1 mov r1, sp strb r0, [r1] b _08047740 .pool _08047690: ldr r1, =gUnknown_0831ACE8 mov r2, r8 adds r0, r2, r1 ldrb r0, [r0] adds r2, r1, 0 cmp r0, 0xFF beq _08047740 cmp r0, 0xFE bne _080476B6 movs r0, 0x58 mov r3, r9 muls r3, r0 adds r0, r3, 0 b _0804772E .pool _080476B0: movs r0, 0x3 add r8, r0 b _08047718 _080476B6: ldr r7, =gUnknown_0831ACE8 mov r1, r8 adds r0, r1, r7 ldrb r0, [r0] ldr r2, [sp, 0x8] cmp r0, r2 bne _08047710 adds r1, 0x1 adds r1, r7 ldr r2, =gBattleMons movs r0, 0x58 mov r3, r9 muls r3, r0 adds r0, r3, 0 adds r5, r0, r2 adds r6, r5, 0 adds r6, 0x21 ldrb r4, [r1] ldrb r0, [r6] cmp r4, r0 bne _080476F0 mov r0, r8 adds r0, 0x2 adds r0, r7 ldrb r0, [r0] mov r1, r10 mov r2, sp bl b_attack_effectivity_adapt _080476F0: adds r0, r5, 0 adds r0, 0x22 ldrb r0, [r0] cmp r4, r0 bne _08047710 ldrb r0, [r6] cmp r0, r4 beq _08047710 mov r0, r8 adds r0, 0x2 adds r0, r7 ldrb r0, [r0] mov r1, r10 mov r2, sp bl b_attack_effectivity_adapt _08047710: movs r1, 0x3 add r8, r1 ldr r5, =gBattleMons ldr r2, =gUnknown_0831ACE8 _08047718: mov r3, r8 adds r0, r3, r2 ldrb r0, [r0] cmp r0, 0xFF beq _08047740 cmp r0, 0xFE bne _080476B6 movs r0, 0x58 mov r1, r9 muls r1, r0 adds r0, r1, 0 _0804772E: 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 _080476B0 _08047740: movs r0, 0x58 mov r2, r9 muls r2, r0 adds r0, r2, 0 adds r0, r5 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x19 bne _0804779A mov r0, sp ldrb r1, [r0] movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _0804779A ldr r0, [sp, 0x4] mov r1, r10 bl move_weather_interaction lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x2 bne _0804779A mov r0, sp ldrb r3, [r0] adds r0, r1, 0 ands r0, r3 cmp r0, 0 beq _08047782 movs r0, 0x6 ands r0, r3 cmp r0, 0x6 bne _0804779A _08047782: ldr r0, =gBattleMoves ldr r1, [sp, 0xC] add r1, r10 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0x1] cmp r0, 0 beq _0804779A mov r0, sp movs r1, 0x1 orrs r1, r3 strb r1, [r0] _0804779A: mov r0, sp ldrb r0, [r0] _0804779E: add sp, 0x10 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 .pool thumb_func_end move_effectiveness_something thumb_func_start ai_rate_move ai_rate_move: @ 80477BC push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0xC lsls r0, 16 lsrs r6, r0, 16 lsls r1, 16 lsrs r1, 16 lsls r2, 24 lsrs r2, 24 str r2, [sp, 0x4] movs r7, 0 mov r0, sp strb r7, [r0] ldr r2, =gBaseStats lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0, 0x6] mov r9, r1 ldrb r0, [r0, 0x7] mov r8, r0 cmp r6, 0xA5 bne _080477FC movs r0, 0 b _080478A0 .pool _080477FC: ldr r2, =gBattleMoves lsls r1, r6, 1 adds r0, r1, r6 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x2] mov r10, r0 str r1, [sp, 0x8] ldr r3, [sp, 0x4] cmp r3, 0x1A bne _08047824 cmp r0, 0x4 bne _08047824 movs r1, 0x9 mov r0, sp strb r1, [r0] b _0804786A .pool _08047824: ldr r0, =gUnknown_0831ACE8 adds r1, r7, r0 ldrb r0, [r1] cmp r0, 0xFF beq _0804786A adds r4, r1, 0 _08047830: ldrb r0, [r4] cmp r0, 0xFE beq _0804785C cmp r0, r10 bne _0804785C ldrb r5, [r4, 0x1] cmp r5, r9 bne _0804784A ldrb r0, [r4, 0x2] adds r1, r6, 0 mov r2, sp bl b_attack_effectivity_adapt _0804784A: cmp r5, r8 bne _0804785C cmp r9, r8 beq _0804785C ldrb r0, [r4, 0x2] adds r1, r6, 0 mov r2, sp bl b_attack_effectivity_adapt _0804785C: adds r4, 0x3 adds r7, 0x3 ldr r1, =gUnknown_0831ACE8 adds r0, r7, r1 ldrb r0, [r0] cmp r0, 0xFF bne _08047830 _0804786A: ldr r3, [sp, 0x4] cmp r3, 0x19 bne _0804789C mov r0, sp ldrb r2, [r0] movs r0, 0x2 ands r0, r2 cmp r0, 0 beq _08047884 movs r0, 0x6 ands r0, r2 cmp r0, 0x6 bne _0804789C _08047884: ldr r0, =gBattleMoves ldr r3, [sp, 0x8] adds r1, r3, r6 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0x1] cmp r0, 0 beq _0804789C mov r0, sp movs r1, 0x8 orrs r1, r2 strb r1, [r0] _0804789C: mov r0, sp ldrb r0, [r0] _080478A0: add sp, 0xC pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 .pool thumb_func_end ai_rate_move thumb_func_start sub_80478B8 sub_80478B8: @ 80478B8 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, =gBattleMoveDamage ldr r0, [r4] cmp r0, 0 beq _080478EA muls r0, r1 str r0, [r4] movs r1, 0x64 bl __divsi3 str r0, [r4] cmp r0, 0 bne _080478EA movs r0, 0x1 str r0, [r4] _080478EA: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_80478B8 thumb_func_start atk07_cmd7 atk07_cmd7: @ 80478F4 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, =gBattleMoveDamage ldr r0, [r4] cmp r0, 0 beq _08047926 muls r0, r1 str r0, [r4] movs r1, 0x64 bl __divsi3 str r0, [r4] cmp r0, 0 bne _08047926 movs r0, 0x1 str r0, [r4] _08047926: ldr r7, =gBattleMons ldr r6, =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 _0804795C ldr r1, =gEnigmaBerries lsls r0, r2, 3 subs r0, r2 lsls r0, 2 adds r0, r1 ldrb r4, [r0, 0x7] ldrb r6, [r0, 0x1A] b _08047976 .pool _0804795C: 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 _08047976: ldr r1, =gUnknown_0202420F ldr r5, =gBankTarget ldrb r0, [r5] strb r0, [r1] cmp r4, 0x27 bne _080479B4 bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x64 bl __umodsi3 lsls r0, 16 lsrs r0, 16 cmp r0, r6 bcs _080479B4 ldrb r0, [r5] movs r1, 0x27 bl b_history__record_item_x12_of_player ldr r2, =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] _080479B4: ldr r2, =gBattleMons ldr r3, =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 _08047A84 ldr r2, =gBattleMoves ldr r0, =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0] cmp r0, 0x65 beq _08047A06 ldr r0, =gProtectStructs lsls r1, r4, 4 adds r1, r0 ldrb r0, [r1] lsls r0, 30 cmp r0, 0 blt _08047A06 ldr r0, =gSpecialStatuses lsls r1, r4, 2 adds r1, r4 lsls r1, 2 adds r1, r0 ldrb r0, [r1] lsrs r0, 7 cmp r0, 0 beq _08047A84 _08047A06: ldrb r0, [r3] movs r4, 0x58 muls r0, r4 adds r0, r5 ldrh r1, [r0, 0x28] ldr r2, =gBattleMoveDamage ldr r0, [r2] cmp r1, r0 bgt _08047A84 subs r0, r1, 0x1 str r0, [r2] ldr r1, =gProtectStructs ldrb r3, [r3] lsls r0, r3, 4 adds r0, r1 ldrb r0, [r0] lsls r0, 30 cmp r0, 0 bge _08047A5C ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r2, 0x40 orrs r1, r2 strb r1, [r0] b _08047A84 .pool _08047A5C: ldr r0, =gSpecialStatuses lsls r1, r3, 2 adds r1, r3 lsls r1, 2 adds r1, r0 ldrb r0, [r1] lsrs r0, 7 cmp r0, 0 beq _08047A84 ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x80 orrs r0, r1 strb r0, [r2] ldr r1, =gUnknown_02024208 adds r0, r3, 0 muls r0, r4 adds r0, r5 ldrh r0, [r0, 0x2E] strh r0, [r1] _08047A84: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk07_cmd7 thumb_func_start atk08_cmd8 atk08_cmd8: @ 8047AA4 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, =gBattleMoveDamage ldr r0, [r4] cmp r0, 0 beq _08047AD6 muls r0, r1 str r0, [r4] movs r1, 0x64 bl __divsi3 str r0, [r4] cmp r0, 0 bne _08047AD6 movs r0, 0x1 str r0, [r4] _08047AD6: ldr r7, =gBattleMons ldr r6, =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 _08047B0C ldr r1, =gEnigmaBerries lsls r0, r2, 3 subs r0, r2 lsls r0, 2 adds r0, r1 ldrb r4, [r0, 0x7] ldrb r6, [r0, 0x1A] b _08047B26 .pool _08047B0C: 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 _08047B26: ldr r1, =gUnknown_0202420F ldr r5, =gBankTarget ldrb r0, [r5] strb r0, [r1] cmp r4, 0x27 bne _08047B64 bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x64 bl __umodsi3 lsls r0, 16 lsrs r0, 16 cmp r0, r6 bcs _08047B64 ldrb r0, [r5] movs r1, 0x27 bl b_history__record_item_x12_of_player ldr r2, =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] _08047B64: ldr r4, =gBattleMons ldr r6, =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 _08047C10 ldr r5, =gProtectStructs lsls r0, r2, 4 adds r0, r5 ldrb r0, [r0] lsls r0, 30 cmp r0, 0 blt _08047BA2 ldr r0, =gSpecialStatuses lsls r1, r2, 2 adds r1, r2 lsls r1, 2 adds r1, r0 ldrb r0, [r1] lsrs r0, 7 cmp r0, 0 beq _08047C10 _08047BA2: adds r0, r3, r4 ldrh r1, [r0, 0x28] ldr r2, =gBattleMoveDamage ldr r0, [r2] cmp r1, r0 bgt _08047C10 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 _08047BE8 ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r2, 0x40 orrs r1, r2 strb r1, [r0] b _08047C10 .pool _08047BE8: ldr r0, =gSpecialStatuses lsls r1, r3, 2 adds r1, r3 lsls r1, 2 adds r1, r0 ldrb r0, [r1] lsrs r0, 7 cmp r0, 0 beq _08047C10 ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x80 orrs r0, r1 strb r0, [r2] ldr r1, =gUnknown_02024208 adds r0, r3, 0 muls r0, r7 adds r0, r4 ldrh r0, [r0, 0x2E] strh r0, [r1] _08047C10: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk08_cmd8 thumb_func_start atk09_attackanimation atk09_attackanimation: @ 8047C30 push {r4-r7,lr} sub sp, 0x10 ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 beq _08047C3E b _08047DB6 _08047C3E: ldr r0, =gHitMarker ldr r0, [r0] movs r1, 0x80 ands r0, r1 ldr r5, =gCurrentMove cmp r0, 0 beq _08047C8C ldrh r0, [r5] cmp r0, 0x90 beq _08047C8C cmp r0, 0xA4 beq _08047C8C ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push ldr r0, =gUnknown_082DABB9 str r0, [r4] ldr r1, =gBattleScripting ldrb r0, [r1, 0x18] adds r0, 0x1 strb r0, [r1, 0x18] ldrb r0, [r1, 0x19] adds r0, 0x1 strb r0, [r1, 0x19] b _08047DB6 .pool _08047C8C: ldr r2, =gBattleMoves ldrh r1, [r5] 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 _08047CB2 movs r0, 0x20 ands r0, r1 cmp r0, 0 bne _08047CB2 movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _08047CBA _08047CB2: ldr r0, =gBattleScripting ldrb r0, [r0, 0x19] cmp r0, 0 bne _08047D88 _08047CBA: ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 bne _08047DA8 ldr r1, =gActiveBank ldr r3, =gBankAttacker ldrb r0, [r3] strb r0, [r1] ldr r2, =gBattleMons ldr r0, =gBankTarget ldrb r1, [r0] movs r0, 0x58 adds r4, r1, 0 muls r4, r0 adds r0, r2, 0 adds r0, 0x50 adds r0, r4, r0 ldr r1, [r0] movs r0, 0x80 lsls r0, 17 ands r1, r0 adds r7, r3, 0 mov r12, r2 cmp r1, 0 beq _08047D18 ldr r0, =gUnknown_02024212 ldrb r6, [r0] b _08047D42 .pool _08047D18: ldr r3, =gUnknown_02024212 ldrb r0, [r3] cmp r0, 0x1 bls _08047D40 mov r1, r12 adds r0, r4, r1 ldrh r2, [r0, 0x28] ldr r0, =gBattleMoveDamage ldr r1, [r0] movs r6, 0x1 adds r4, r0, 0 cmp r2, r1 ble _08047D44 ldrb r6, [r3] b _08047D44 .pool _08047D40: ldrb r6, [r3] _08047D42: ldr r4, =gBattleMoveDamage _08047D44: ldrh r1, [r5] ldr r5, =gBattleScripting ldrb r2, [r5, 0x18] ldr r0, =gBattleMovePower ldrh r3, [r0] ldr r0, [r4] str r0, [sp] ldrb r4, [r7] movs r0, 0x58 muls r0, r4 add r0, r12 adds r0, 0x2B ldrb r0, [r0] str r0, [sp, 0x4] ldrb r4, [r7] lsls r0, r4, 3 subs r0, r4 lsls r0, 2 ldr r4, =gDisableStructs adds r0, r4 str r0, [sp, 0x8] str r6, [sp, 0xC] movs r0, 0 bl dp01_build_cmdbuf_x0F_aa_b_cc_dddd_e_mlc_weather_00_x1Cbytes ldrb r0, [r5, 0x18] adds r0, 0x1 strb r0, [r5, 0x18] ldrb r0, [r5, 0x19] adds r0, 0x1 strb r0, [r5, 0x19] ldrb r0, [r7] bl dp01_battle_side_mark_buffer_for_execution _08047D88: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] b _08047DB6 .pool _08047DA8: ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push ldr r0, =gUnknown_082DABB9 str r0, [r4] _08047DB6: add sp, 0x10 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk09_attackanimation thumb_func_start sub_8047DC8 sub_8047DC8: @ 8047DC8 push {lr} ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 bne _08047DDA ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] _08047DDA: pop {r0} bx r0 .pool thumb_func_end sub_8047DC8 thumb_func_start atk0B_graphicalhpupdate atk0B_graphicalhpupdate: @ 8047DE8 push {r4,lr} ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 bne _08047EAA ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 bne _08047EA2 ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r2, =gActiveBank strb r0, [r2] ldr r1, =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 _08047E68 ldr r0, =gDisableStructs lsls r1, r2, 3 subs r1, r2 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0xA] cmp r0, 0 beq _08047E68 ldr r0, =gHitMarker ldr r0, [r0] movs r1, 0x80 lsls r1, 1 ands r0, r1 cmp r0, 0 bne _08047E68 movs r0, 0x80 adds r1, r2, 0 bl b_std_message b _08047EA2 .pool _08047E68: ldr r0, =gBattleMoveDamage ldr r0, [r0] ldr r1, =0x00002710 cmp r0, r1 bgt _08047E76 lsls r0, 16 lsrs r1, r0, 16 _08047E76: movs r0, 0 bl dp01_build_cmdbuf_x18_0_aa_health_bar_update ldr r4, =gActiveBank ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution ldrb r0, [r4] bl GetBankSide lsls r0, 24 cmp r0, 0 bne _08047EA2 ldr r0, =gBattleMoveDamage ldr r0, [r0] cmp r0, 0 ble _08047EA2 ldr r0, =gUnknown_03005D10 ldrb r1, [r0, 0x5] movs r2, 0x1 orrs r1, r2 strb r1, [r0, 0x5] _08047EA2: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] _08047EAA: pop {r4} pop {r0} bx r0 .pool thumb_func_end atk0B_graphicalhpupdate thumb_func_start atk0C_datahpupdate atk0C_datahpupdate: @ 8047EC4 push {r4-r7,lr} sub sp, 0x4 ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 beq _08047ED2 b _080482A2 _08047ED2: ldr r0, =gBattleStruct ldr r0, [r0] ldrb r1, [r0, 0x13] cmp r1, 0 beq _08047EF4 movs r0, 0x40 ands r0, r1 cmp r0, 0 bne _08047EF4 movs r6, 0x3F ands r6, r1 b _08047F04 .pool _08047EF4: ldr r2, =gBattleMoves ldr r0, =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r6, [r0, 0x2] _08047F04: ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 beq _08047F12 b _08048274 _08047F12: ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r7, =gActiveBank strb r0, [r7] ldr r1, =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 _08048028 ldr r0, =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 _08048028 ldr r0, =gHitMarker ldr r3, [r0] movs r0, 0x80 lsls r0, 1 ands r3, r0 cmp r3, 0 bne _08048028 adds r5, r1, 0 ldr r6, =gBattleMoveDamage ldr r4, [r6] cmp r5, r4 blt _08047FBC ldr r0, =gSpecialStatuses lsls r1, r2, 2 adds r1, r2 lsls r1, 2 adds r0, 0x4 adds r1, r0 ldr r0, [r1] cmp r0, 0 bne _08047F76 str r4, [r1] _08047F76: 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, =gUnknown_020241F4 ldr r0, [r6] str r0, [r1] b _08047FEC .pool _08047FBC: ldr r0, =gSpecialStatuses lsls r1, r2, 2 adds r1, r2 lsls r1, 2 adds r0, 0x4 adds r1, r0 ldr r0, [r1] cmp r0, 0 bne _08047FD0 str r5, [r1] _08047FD0: ldr r2, =gUnknown_020241F4 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] _08047FEC: ldr r0, =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 _08048000 b _0804829A _08048000: ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x2 str r0, [r4] bl b_movescr_stack_push_cursor ldr r0, =gUnknown_082DB6FB str r0, [r4] b _080482A2 .pool _08048028: ldr r0, =gHitMarker ldr r2, [r0] ldr r1, =0xfffffeff ands r2, r1 str r2, [r0] ldr r1, =gBattleMoveDamage ldr r5, [r1] mov r12, r0 adds r7, r1, 0 cmp r5, 0 bge _0804807C ldr r4, =gBattleMons ldr r2, =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 _08048064 b _0804823A _08048064: strh r3, [r1, 0x28] b _0804823A .pool _0804807C: movs r0, 0x20 ands r0, r2 cmp r0, 0 beq _08048098 movs r0, 0x21 negs r0, r0 ands r2, r0 mov r0, r12 str r2, [r0] ldr r5, =gActiveBank b _080480E0 .pool _08048098: ldr r0, =gUnknown_020241F8 ldr r2, =gActiveBank ldrb r1, [r2] lsls r1, 2 adds r1, r0 ldr r0, [r1] adds r0, r5 str r0, [r1] ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] adds r5, r2, 0 cmp r0, 0 bne _080480D4 ldr r1, =gUnknown_02024288 ldrb r0, [r5] adds r0, r1 ldr r1, =gBankAttacker b _080480DC .pool _080480D4: ldr r1, =gUnknown_02024288 ldrb r0, [r5] adds r0, r1 ldr r1, =gBankTarget _080480DC: ldrb r1, [r1] strb r1, [r0] _080480E0: ldr r4, =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 _08048110 subs r0, r1 strh r0, [r2, 0x28] ldr r0, =gUnknown_020241F4 str r1, [r0] adds r7, r0, 0 b _08048120 .pool _08048110: ldr r2, =gUnknown_020241F4 str r0, [r2] ldrb r0, [r5] muls r0, r3 adds r0, r4 movs r1, 0 strh r1, [r0, 0x28] adds r7, r2, 0 _08048120: ldr r2, =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 _08048148 mov r1, r12 ldr r0, [r1] movs r1, 0x80 lsls r1, 13 ands r0, r1 cmp r0, 0 bne _08048148 ldr r0, [r7] str r0, [r3] _08048148: cmp r6, 0x8 bhi _080481D0 mov r1, r12 ldr r0, [r1] movs r1, 0x80 lsls r1, 13 ands r0, r1 cmp r0, 0 bne _080481CC ldr r0, =gCurrentMove ldrh r0, [r0] cmp r0, 0xDC beq _080481CC ldr r3, =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, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] cmp r0, 0 bne _080481AC ldrb r0, [r5] lsls r0, 4 adds r0, r3 ldr r2, =gBankAttacker b _080481B4 .pool _080481AC: ldrb r0, [r5] lsls r0, 4 adds r0, r3 ldr r2, =gBankTarget _080481B4: 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 _0804823A .pool _080481CC: cmp r6, 0x8 bls _0804823A _080481D0: mov r1, r12 ldr r0, [r1] movs r1, 0x80 lsls r1, 13 ands r0, r1 cmp r0, 0 bne _0804823A ldr r3, =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, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] cmp r0, 0 bne _08048220 ldrb r0, [r5] lsls r0, 4 adds r0, r3 ldr r2, =gBankAttacker b _08048228 .pool _08048220: ldrb r0, [r5] lsls r0, 4 adds r0, r3 ldr r2, =gBankTarget _08048228: 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] _0804823A: mov r1, r12 ldr r0, [r1] ldr r1, =0xffefffff ands r0, r1 mov r1, r12 str r0, [r1] ldrb r1, [r5] movs r0, 0x58 muls r0, r1 ldr r1, =gUnknown_020240AC adds r0, r1 str r0, [sp] movs r0, 0 movs r1, 0x2A movs r2, 0 movs r3, 0x2 bl dp01_build_cmdbuf_x02_a_b_varargs ldrb r0, [r5] bl dp01_battle_side_mark_buffer_for_execution b _0804829A .pool _08048274: ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r1, =gActiveBank strb r0, [r1] ldr r2, =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 _0804829A ldr r0, =0x0000ffff str r0, [r1] _0804829A: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] _080482A2: add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk0C_datahpupdate thumb_func_start atk0D_critmessage atk0D_critmessage: @ 80482BC push {lr} ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 bne _080482F2 ldr r0, =gCritMultiplier ldrb r0, [r0] cmp r0, 0x2 bne _080482EA ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 bne _080482EA ldr r0, =gBankAttacker ldrb r1, [r0] movs r0, 0xD9 bl b_std_message ldr r1, =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x7] _080482EA: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] _080482F2: pop {r0} bx r0 .pool thumb_func_end atk0D_critmessage thumb_func_start atk0E_missmessage atk0E_missmessage: @ 8048310 push {r4,lr} ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 bne _080483D0 ldr r4, =gActiveBank ldr r0, =gBankTarget ldrb r0, [r0] strb r0, [r4] ldr r1, =gBattleMoveFlags ldrb r2, [r1] movs r0, 0x1 ands r0, r2 cmp r0, 0 bne _080483C8 movs r0, 0xFE ands r0, r2 cmp r0, 0x10 beq _08048382 cmp r0, 0x10 bgt _0804835E cmp r0, 0x4 beq _08048372 cmp r0, 0x4 bgt _08048358 cmp r0, 0x2 beq _0804836C b _08048382 .pool _08048358: cmp r0, 0x8 beq _080483C8 b _08048382 _0804835E: cmp r0, 0x40 beq _08048382 cmp r0, 0x40 bgt _08048382 cmp r0, 0x20 beq _080483C8 b _08048382 _0804836C: movs r0, 0 movs r1, 0xE b _08048376 _08048372: movs r0, 0 movs r1, 0xC _08048376: bl dp01_build_cmdbuf_x2B_aa_0 ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution b _080483C8 _08048382: ldrb r1, [r1] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _08048392 movs r0, 0 movs r1, 0xE b _0804839E _08048392: movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _080483B0 movs r0, 0 movs r1, 0xC _0804839E: bl dp01_build_cmdbuf_x2B_aa_0 ldr r0, =gActiveBank ldrb r0, [r0] bl dp01_battle_side_mark_buffer_for_execution b _080483C8 .pool _080483B0: movs r0, 0x28 ands r0, r1 cmp r0, 0 bne _080483C8 movs r0, 0 movs r1, 0xD bl dp01_build_cmdbuf_x2B_aa_0 ldr r0, =gActiveBank ldrb r0, [r0] bl dp01_battle_side_mark_buffer_for_execution _080483C8: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] _080483D0: pop {r4} pop {r0} bx r0 .pool thumb_func_end atk0E_missmessage thumb_func_start atk0F_resultmessage atk0F_resultmessage: @ 80483E0 push {r4-r7,lr} movs r3, 0 ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 beq _080483EE b _08048580 _080483EE: ldr r1, =gBattleMoveFlags ldrb r2, [r1] movs r4, 0x1 adds r0, r4, 0 ands r0, r2 adds r6, r1, 0 ldr r7, =gBattleCommunication cmp r0, 0 beq _0804842C movs r0, 0x8 ands r0, r2 cmp r0, 0 beq _0804840E ldrb r0, [r7, 0x6] cmp r0, 0x2 bls _0804842C _0804840E: ldr r1, =gUnknown_085CC834 ldrb r0, [r7, 0x6] lsls r0, 1 adds r0, r1 ldrh r3, [r0] strb r4, [r7, 0x7] b _0804856A .pool _0804842C: movs r0, 0x1 strb r0, [r7, 0x7] ldrb r5, [r6] movs r0, 0xFE ands r0, r5 cmp r0, 0x10 beq _08048470 cmp r0, 0x10 bgt _08048452 cmp r0, 0x4 beq _0804846C cmp r0, 0x4 bgt _0804844C cmp r0, 0x2 beq _08048468 b _080484B8 _0804844C: cmp r0, 0x8 beq _080484C4 b _080484B8 _08048452: cmp r0, 0x40 beq _08048474 cmp r0, 0x40 bgt _08048462 cmp r0, 0x20 bne _08048460 b _08048564 _08048460: b _080484B8 _08048462: cmp r0, 0x80 beq _08048478 b _080484B8 _08048468: movs r3, 0xDE b _0804856E _0804846C: movs r3, 0xDD b _0804856E _08048470: movs r3, 0xDA b _0804856E _08048474: movs r3, 0x99 b _0804856E _08048478: ldr r4, =gUnknown_02024208 ldr r2, =gBattleMons ldr r3, =gBankTarget ldrb r1, [r3] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r0, [r0, 0x2E] strh r0, [r4] ldr r1, =gUnknown_0202420F ldrb r0, [r3] strb r0, [r1] movs r0, 0x3F ands r0, r5 strb r0, [r6] bl b_movescr_stack_push_cursor ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DB816 b _0804857E .pool _080484B8: adds r2, r6, 0 ldrb r5, [r2] movs r0, 0x8 ands r0, r5 cmp r0, 0 beq _080484C8 _080484C4: movs r3, 0x1B b _0804856E _080484C8: movs r0, 0x10 ands r0, r5 cmp r0, 0 beq _080484F0 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, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DB1CE b _0804857E .pool _080484F0: movs r0, 0x40 ands r0, r5 cmp r0, 0 beq _08048510 movs r0, 0x3F ands r0, r5 strb r0, [r2] bl b_movescr_stack_push_cursor ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DB1C7 b _0804857E .pool _08048510: movs r0, 0x80 ands r0, r5 cmp r0, 0 beq _08048558 ldr r4, =gUnknown_02024208 ldr r2, =gBattleMons ldr r3, =gBankTarget ldrb r1, [r3] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r0, [r0, 0x2E] strh r0, [r4] ldr r1, =gUnknown_0202420F ldrb r0, [r3] strb r0, [r1] movs r0, 0x3F ands r0, r5 strb r0, [r6] bl b_movescr_stack_push_cursor ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DB816 b _0804857E .pool _08048558: movs r0, 0x20 ands r0, r5 lsls r0, 24 lsrs r0, 24 cmp r0, 0 beq _08048568 _08048564: movs r3, 0xE5 b _0804856E _08048568: strb r0, [r7, 0x7] _0804856A: cmp r3, 0 beq _08048578 _0804856E: adds r0, r3, 0 ldr r1, =gBankAttacker ldrb r1, [r1] bl b_std_message _08048578: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 _0804857E: str r0, [r1] _08048580: pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk0F_resultmessage thumb_func_start atk10_printstring atk10_printstring: @ 8048590 push {r4,lr} ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 bne _080485BA ldr r4, =gBattlescriptCurrInstr ldr r1, [r4] ldrb r0, [r1, 0x1] ldrb r1, [r1, 0x2] lsls r1, 8 orrs r0, r1 ldr r1, =gBankAttacker ldrb r1, [r1] bl b_std_message ldr r0, [r4] adds r0, 0x3 str r0, [r4] ldr r1, =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x7] _080485BA: pop {r4} pop {r0} bx r0 .pool thumb_func_end atk10_printstring thumb_func_start atk11_printstring2 atk11_printstring2: @ 80485D0 push {r4,r5,lr} ldr r5, =gActiveBank ldr r0, =gBankAttacker ldrb r0, [r0] strb r0, [r5] ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r1, [r0, 0x1] ldrb r0, [r0, 0x2] lsls r0, 8 orrs r1, r0 movs r0, 0 bl dp01_build_cmdbuf_x11_TODO ldrb r0, [r5] bl dp01_battle_side_mark_buffer_for_execution ldr r0, [r4] adds r0, 0x3 str r0, [r4] ldr r1, =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x7] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end atk11_printstring2 thumb_func_start atk12_waitmessage atk12_waitmessage: @ 8048614 push {r4-r6,lr} ldr r0, =gBattleExecBuffer ldr r4, [r0] cmp r4, 0 bne _08048662 ldr r6, =gBattleCommunication ldrb r0, [r6, 0x7] cmp r0, 0 bne _0804863C ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x3 str r0, [r1] b _08048662 .pool _0804863C: ldr r5, =gBattlescriptCurrInstr ldr r2, [r5] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldr r3, =gUnknown_0202432C ldrh r0, [r3] adds r0, 0x1 strh r0, [r3] lsls r0, 16 lsrs r0, 16 cmp r0, r1 bcc _08048662 movs r1, 0 strh r4, [r3] adds r0, r2, 0x3 str r0, [r5] strb r1, [r6, 0x7] _08048662: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end atk12_waitmessage thumb_func_start atk13_printfromtable atk13_printfromtable: @ 8048670 push {r4,r5,lr} ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 bne _080486AE ldr r4, =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, =gBattleCommunication ldrb r0, [r5, 0x5] lsls r0, 1 adds r1, r0 ldrh r0, [r1] ldr r1, =gBankAttacker ldrb r1, [r1] bl b_std_message ldr r0, [r4] adds r0, 0x5 str r0, [r4] movs r0, 0x1 strb r0, [r5, 0x7] _080486AE: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end atk13_printfromtable thumb_func_start atk14_printfromtable2 atk14_printfromtable2: @ 80486C4 push {r4-r6,lr} ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 bne _0804870E ldr r5, =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, =gBattleCommunication ldrb r0, [r6, 0x5] lsls r0, 1 adds r1, r0 ldr r4, =gActiveBank ldr r0, =gBankAttacker ldrb r0, [r0] strb r0, [r4] ldrh r1, [r1] movs r0, 0 bl dp01_build_cmdbuf_x11_TODO ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution ldr r0, [r5] adds r0, 0x5 str r0, [r5] movs r0, 0x1 strb r0, [r6, 0x7] _0804870E: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end atk14_printfromtable2 thumb_func_start sub_8048728 sub_8048728: @ 8048728 push {r4,lr} lsls r0, 24 lsrs r2, r0, 24 movs r1, 0 ldr r0, =gNoOfAllBanks ldrb r3, [r0] cmp r1, r3 bge _0804874E ldr r4, =gTurnOrder ldrb r0, [r4] cmp r0, r2 beq _0804874E _08048740: adds r1, 0x1 cmp r1, r3 bge _0804874E adds r0, r1, r4 ldrb r0, [r0] cmp r0, r2 bne _08048740 _0804874E: lsls r0, r1, 24 lsrs r0, 24 pop {r4} pop {r1} bx r1 .pool thumb_func_end sub_8048728 thumb_func_start sub_8048760 sub_8048760: @ 8048760 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 lsls r0, 24 lsrs r5, r0, 24 lsls r1, 24 lsrs r6, r1, 24 movs r0, 0 mov r10, r0 movs r7, 0 movs r1, 0x1 str r1, [sp, 0x4] ldr r1, =gBattleCommunication ldrb r3, [r1, 0x3] movs r0, 0x40 ands r0, r3 cmp r0, 0 beq _080487B8 ldr r2, =gUnknown_0202420E ldr r0, =gBankAttacker ldrb r0, [r0] strb r0, [r2] movs r0, 0xBF ands r0, r3 adds r3, r1, 0 strb r0, [r3, 0x3] movs r7, 0x40 ldr r1, =gBattleScripting ldr r0, =gBankTarget b _080487C4 .pool _080487B8: ldr r2, =gUnknown_0202420E ldr r0, =gBankTarget ldrb r0, [r0] strb r0, [r2] ldr r1, =gBattleScripting ldr r0, =gBankAttacker _080487C4: ldrb r0, [r0] strb r0, [r1, 0x17] mov r9, r2 ldr r2, =gBattleMons mov r4, r9 ldrb r1, [r4] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x13 bne _08048828 ldr r0, =gHitMarker ldr r0, [r0] movs r1, 0x80 lsls r1, 6 ands r0, r1 cmp r0, 0 bne _08048828 cmp r5, 0 bne _08048828 ldr r1, =gBattleCommunication ldrb r0, [r1, 0x3] cmp r0, 0x9 bhi _08048828 ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] ldr r2, =gBattleCommunication strb r5, [r2, 0x3] bl _080499B8 .pool _08048828: mov r3, r9 ldrb r0, [r3] bl GetBankIdentity ldr r2, =gUnknown_0202428E 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 _08048880 ldr r0, =gHitMarker ldr r0, [r0] movs r1, 0x80 lsls r1, 6 ands r0, r1 cmp r0, 0 bne _08048880 cmp r5, 0 bne _08048880 ldr r0, =gBattleCommunication ldrb r1, [r0, 0x3] cmp r1, 0x7 bhi _08048880 ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] ldr r4, =gBattleCommunication strb r5, [r4, 0x3] bl _080499B8 .pool _08048880: ldr r3, =gBattleMons ldr r2, =gUnknown_0202420E ldrb r1, [r2] movs r0, 0x58 muls r0, r1 adds r0, r3 ldrh r4, [r0, 0x28] mov r9, r2 mov r8, r3 cmp r4, 0 bne _080488C4 ldr r1, =gBattleCommunication ldrb r0, [r1, 0x3] cmp r0, 0xB beq _080488C4 cmp r0, 0x1F beq _080488C4 ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] ldr r2, =gBattleCommunication strb r4, [r2, 0x3] bl _080499B8 .pool _080488C4: mov r3, r9 ldrb r1, [r3] movs r0, 0x58 muls r0, r1 mov r1, r8 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 17 ands r0, r1 cmp r0, 0 beq _080488FC cmp r7, 0x40 beq _080488FC ldr r0, =gBattlescriptCurrInstr ldr r1, [r0] adds r1, 0x1 str r1, [r0] movs r0, 0 ldr r4, =gBattleCommunication strb r0, [r4, 0x3] bl _080499B8 .pool _080488FC: ldr r1, =gBattleCommunication ldrb r0, [r1, 0x3] cmp r0, 0x6 bls _08048906 b _08048F40 _08048906: ldr r1, =gUnknown_0831C134 ldr r2, =gBattleCommunication ldrb r0, [r2, 0x3] lsls r0, 2 adds r0, r1 ldr r0, [r0] cmp r0, 0x10 bne _08048918 b _08048AFC _08048918: cmp r0, 0x10 bhi _08048930 cmp r0, 0x7 beq _0804894A cmp r0, 0x8 beq _08048A00 b _08048DF4 .pool _08048930: cmp r0, 0x40 bne _08048936 b _08048C84 _08048936: cmp r0, 0x40 bhi _08048942 cmp r0, 0x20 bne _08048940 b _08048BEA _08048940: b _08048DF4 _08048942: cmp r0, 0x80 bne _08048948 b _08048D02 _08048948: b _08048DF4 _0804894A: mov r3, r9 ldrb r1, [r3] movs r0, 0x58 muls r0, r1 add r0, r8 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x2B beq _080489AC ldr r0, =gActiveBank movs r1, 0 strb r1, [r0] ldr r1, =gNoOfAllBanks ldrb r3, [r1] adds r7, r0, 0 mov r12, r1 cmp r3, 0 beq _080489B8 mov r4, r8 ldr r0, [r4, 0x50] movs r1, 0x70 ands r0, r1 cmp r0, 0 bne _080489B8 adds r1, r7, 0 mov r6, r8 adds r6, 0x50 movs r5, 0x58 movs r4, 0x70 _08048984: ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] lsls r0, 24 lsrs r0, 24 cmp r0, r3 bcs _080489B8 ldrb r0, [r7] muls r0, r5 adds r0, r6 ldr r0, [r0] ands r0, r4 cmp r0, 0 beq _08048984 b _080489B8 .pool _080489AC: ldr r0, =gActiveBank ldr r2, =gNoOfAllBanks ldrb r1, [r2] strb r1, [r0] adds r7, r0, 0 mov r12, r2 _080489B8: mov r0, r9 ldrb r2, [r0] movs r0, 0x58 adds r1, r2, 0 muls r1, r0 mov r0, r8 adds r0, 0x4C adds r0, r1, r0 ldr r0, [r0] cmp r0, 0 beq _080489D0 b _08048DF4 _080489D0: ldrb r0, [r7] mov r3, r12 ldrb r3, [r3] cmp r0, r3 beq _080489DC b _08048DF4 _080489DC: mov r4, r8 adds r0, r1, r4 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x48 bne _080489EA b _08048DF4 _080489EA: cmp r0, 0xF bne _080489F0 b _08048DF4 _080489F0: adds r0, r2, 0 bl CancelMultiTurnMoves b _08048DE4 .pool _08048A00: mov r2, r9 ldrb r1, [r2] movs r0, 0x58 muls r0, r1 add r0, r8 adds r0, 0x20 ldrb r1, [r0] cmp r1, 0x11 bne _08048A70 cmp r5, 0x1 beq _08048A1A cmp r6, 0x80 bne _08048A70 _08048A1A: ldr r0, =gLastUsedAbility strb r1, [r0] mov r3, r9 ldrb r0, [r3] movs r1, 0x11 bl RecordAbilityBattle ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push ldr r0, =gUnknown_082DB5E9 str r0, [r4] ldr r2, =gHitMarker ldr r1, [r2] movs r0, 0x80 lsls r0, 6 ands r0, r1 cmp r0, 0 bne _08048A46 b _08048D20 _08048A46: movs r0, 0x1 ldr r4, =gBattleCommunication strb r0, [r4, 0x5] _08048A4C: ldr r0, =0xffffdfff ands r1, r0 str r1, [r2] bl _080499B2 .pool _08048A70: mov r2, r9 ldrb r0, [r2] movs r1, 0x58 muls r0, r1 add r0, r8 adds r1, r0, 0 adds r1, 0x21 ldrb r1, [r1] cmp r1, 0x3 beq _08048A94 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0x3 beq _08048A94 cmp r1, 0x8 beq _08048A94 cmp r0, 0x8 bne _08048AAE _08048A94: ldr r0, =gHitMarker ldr r0, [r0] movs r1, 0x80 lsls r1, 6 ands r0, r1 cmp r0, 0 beq _08048AAE cmp r5, 0x1 bne _08048AA8 b _08048D66 _08048AA8: cmp r6, 0x80 bne _08048AAE b _08048D66 _08048AAE: mov r3, r9 ldrb r1, [r3] movs r0, 0x58 muls r1, r0 mov r4, r8 adds r3, r1, r4 adds r0, r3, 0 adds r0, 0x21 ldrb r4, [r0] cmp r4, 0x3 bne _08048AC6 b _08048DF4 _08048AC6: adds r0, 0x1 ldrb r0, [r0] cmp r0, 0x3 bne _08048AD0 b _08048DF4 _08048AD0: cmp r4, 0x8 bne _08048AD6 b _08048DF4 _08048AD6: cmp r0, 0x8 bne _08048ADC b _08048DF4 _08048ADC: mov r0, r8 adds r0, 0x4C adds r0, r1, r0 ldr r0, [r0] cmp r0, 0 beq _08048AEA b _08048DF4 _08048AEA: adds r0, r3, 0 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x11 bne _08048AF6 b _08048DF4 _08048AF6: b _08048DE4 .pool _08048AFC: mov r2, r9 ldrb r1, [r2] movs r0, 0x58 muls r0, r1 add r0, r8 adds r0, 0x20 ldrb r1, [r0] cmp r1, 0x29 bne _08048B54 cmp r5, 0x1 beq _08048B16 cmp r6, 0x80 bne _08048B54 _08048B16: ldr r0, =gLastUsedAbility strb r1, [r0] mov r3, r9 ldrb r0, [r3] movs r1, 0x29 bl RecordAbilityBattle ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push ldr r0, =gUnknown_082DB5D1 str r0, [r4] ldr r2, =gHitMarker ldr r1, [r2] movs r0, 0x80 lsls r0, 6 ands r0, r1 cmp r0, 0 beq _08048B42 b _08048A46 _08048B42: b _08048D20 .pool _08048B54: mov r2, r9 ldrb r1, [r2] movs r0, 0x58 muls r0, r1 mov r3, r8 adds r1, r0, r3 adds r0, r1, 0 adds r0, 0x21 ldrb r0, [r0] cmp r0, 0xA beq _08048B74 adds r0, r1, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0xA bne _08048BA4 _08048B74: ldr r0, =gHitMarker ldr r0, [r0] movs r1, 0x80 lsls r1, 6 ands r0, r1 cmp r0, 0 beq _08048BA4 cmp r5, 0x1 beq _08048B8A cmp r6, 0x80 bne _08048BA4 _08048B8A: ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push ldr r0, =gUnknown_082DB5D1 b _08048D72 .pool _08048BA4: mov r4, r9 ldrb r0, [r4] movs r1, 0x58 adds r2, r0, 0 muls r2, r1 mov r0, r8 adds r1, r2, r0 adds r0, r1, 0 adds r0, 0x21 ldrb r0, [r0] cmp r0, 0xA bne _08048BBE b _08048DF4 _08048BBE: adds r0, r1, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0xA bne _08048BCA b _08048DF4 _08048BCA: adds r0, r1, 0 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x29 bne _08048BD6 b _08048DF4 _08048BD6: mov r0, r8 adds r0, 0x4C adds r0, r2, r0 ldr r0, [r0] cmp r0, 0 beq _08048BE4 b _08048DF4 _08048BE4: movs r1, 0x1 mov r10, r1 b _08048DF4 _08048BEA: 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 _08048C26 str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0x4D movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 bne _08048C26 ldr r0, =gBattleWeather ldrh r1, [r0] movs r0, 0x60 ands r0, r1 cmp r0, 0 beq _08048C26 movs r2, 0 str r2, [sp, 0x4] _08048C26: ldr r4, =gBattleMons ldr r0, =gUnknown_0202420E 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 _08048C40 b _08048DF4 _08048C40: adds r0, r1, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0xF bne _08048C4C b _08048DF4 _08048C4C: adds r0, r4, 0 adds r0, 0x4C adds r0, r2, r0 ldr r0, [r0] cmp r0, 0 beq _08048C5A b _08048DF4 _08048C5A: ldr r4, [sp, 0x4] cmp r4, 0 bne _08048C62 b _08048DF4 _08048C62: adds r0, r1, 0 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x28 bne _08048C6E b _08048DF4 _08048C6E: adds r0, r3, 0 bl CancelMultiTurnMoves b _08048DE4 .pool _08048C84: mov r2, r9 ldrb r1, [r2] movs r0, 0x58 muls r1, r0 mov r3, r8 adds r0, r1, r3 adds r0, 0x20 ldrb r2, [r0] cmp r2, 0x7 bne _08048CF4 cmp r5, 0x1 beq _08048CA2 cmp r6, 0x80 beq _08048CA2 b _08048DF4 _08048CA2: ldr r0, =gLastUsedAbility strb r2, [r0] mov r4, r9 ldrb r0, [r4] movs r1, 0x7 bl RecordAbilityBattle ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push ldr r0, =gUnknown_082DB5DD str r0, [r4] ldr r2, =gHitMarker ldr r1, [r2] movs r0, 0x80 lsls r0, 6 ands r0, r1 cmp r0, 0 beq _08048CE8 movs r0, 0x1 ldr r3, =gBattleCommunication strb r0, [r3, 0x5] b _08048A4C .pool _08048CE8: ldr r4, =gBattleCommunication strb r0, [r4, 0x5] bl _080499B2 .pool _08048CF4: mov r0, r8 adds r0, 0x4C adds r0, r1, r0 ldr r0, [r0] cmp r0, 0 bne _08048DF4 b _08048DE4 _08048D02: mov r2, r9 ldrb r1, [r2] movs r0, 0x58 muls r0, r1 add r0, r8 adds r0, 0x20 ldrb r1, [r0] cmp r1, 0x11 bne _08048D2C cmp r5, 0x1 bne _08048D1A b _08048A1A _08048D1A: cmp r6, 0x80 bne _08048D2C b _08048A1A _08048D20: ldr r1, =gBattleCommunication strb r0, [r1, 0x5] bl _080499B2 .pool _08048D2C: mov r2, r9 ldrb r0, [r2] movs r1, 0x58 muls r0, r1 add r0, r8 adds r1, r0, 0 adds r1, 0x21 ldrb r1, [r1] cmp r1, 0x3 beq _08048D50 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0x3 beq _08048D50 cmp r1, 0x8 beq _08048D50 cmp r0, 0x8 bne _08048D94 _08048D50: ldr r0, =gHitMarker ldr r0, [r0] movs r1, 0x80 lsls r1, 6 ands r0, r1 cmp r0, 0 beq _08048D94 cmp r5, 0x1 beq _08048D66 cmp r6, 0x80 bne _08048D94 _08048D66: ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push ldr r0, =gUnknown_082DB5E9 _08048D72: str r0, [r4] ldr r1, =gBattleCommunication movs r2, 0 movs r0, 0x2 strb r0, [r1, 0x5] strb r2, [r1, 0x3] bl _080499B8 .pool _08048D94: mov r3, r9 ldrb r0, [r3] movs r6, 0x58 muls r0, r6 mov r2, r8 adds r2, 0x4C adds r5, r0, r2 ldr r4, [r5] cmp r4, 0 bne _08048DF4 mov r3, r8 adds r1, r0, r3 adds r0, r1, 0 adds r0, 0x21 ldrb r3, [r0] cmp r3, 0x3 beq _08048DEA adds r0, 0x1 ldrb r0, [r0] cmp r0, 0x3 beq _08048DEA cmp r3, 0x8 beq _08048DEA cmp r0, 0x8 beq _08048DEA adds r0, r1, 0 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x11 beq _08048DF4 mov r4, r9 ldrb r0, [r4] adds r1, r0, 0 muls r1, r6 adds r1, r2 ldr r0, [r1] movs r2, 0x9 negs r2, r2 ands r0, r2 str r0, [r1] _08048DE4: movs r0, 0x1 mov r10, r0 b _08048DF4 _08048DEA: ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r2, 0x8 orrs r1, r2 strb r1, [r0] _08048DF4: mov r1, r10 cmp r1, 0x1 beq _08048DFC b _08048F1C _08048DFC: ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] adds r0, 0x1 bl b_movescr_stack_push ldr r1, =gUnknown_0831C134 ldr r0, =gBattleCommunication ldrb r0, [r0, 0x3] lsls r0, 2 adds r0, r1 ldr r3, [r0] cmp r3, 0x7 bne _08048E50 bl Random ldr r2, =gBattleMons ldr r1, =gUnknown_0202420E 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 _08048E64 .pool _08048E50: ldr r2, =gBattleMons ldr r0, =gUnknown_0202420E ldrb r1, [r0] movs r0, 0x58 muls r1, r0 adds r2, 0x4C adds r1, r2 ldr r0, [r1] orrs r0, r3 str r0, [r1] _08048E64: ldr r2, =gBattlescriptCurrInstr ldr r1, =gUnknown_0831C224 ldr r5, =gBattleCommunication ldrb r0, [r5, 0x3] lsls r0, 2 adds r0, r1 ldr r0, [r0] str r0, [r2] ldr r4, =gActiveBank ldr r1, =gUnknown_0202420E ldrb r0, [r1] strb r0, [r4] ldrb r1, [r1] movs r0, 0x58 muls r0, r1 ldr r1, =gUnknown_020240D0 adds r0, r1 str r0, [sp] movs r0, 0 movs r1, 0x28 movs r2, 0 movs r3, 0x4 bl dp01_build_cmdbuf_x02_a_b_varargs ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution ldr r2, =gHitMarker ldr r1, [r2] movs r0, 0x80 lsls r0, 6 ands r0, r1 cmp r0, 0 beq _08048ED8 movs r0, 0x1 strb r0, [r5, 0x5] ldr r0, =0xffffdfff ands r1, r0 str r1, [r2] b _08048EDA .pool _08048ED8: strb r0, [r5, 0x5] _08048EDA: ldr r0, =gBattleCommunication ldrb r2, [r0, 0x3] cmp r2, 0x2 beq _08048EF2 cmp r2, 0x6 beq _08048EF2 cmp r2, 0x5 beq _08048EF2 cmp r2, 0x3 beq _08048EF2 bl _080499B8 _08048EF2: ldr r0, =gBattleStruct ldr r0, [r0] adds r0, 0xB2 ldr r2, =gBattleCommunication ldrb r1, [r2, 0x3] strb r1, [r0] ldr r2, =gHitMarker ldr r0, [r2] movs r1, 0x80 lsls r1, 7 orrs r0, r1 str r0, [r2] bl _080499B8 .pool _08048F1C: mov r3, r10 cmp r3, 0 beq _08048F26 bl _080499B8 _08048F26: ldr r0, =gBattleCommunication strb r3, [r0, 0x3] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] bl _080499B8 .pool _08048F40: mov r4, r9 ldrb r1, [r4] movs r0, 0x58 muls r1, r0 mov r0, r8 adds r0, 0x50 adds r1, r0 ldr r2, =gUnknown_0831C134 ldr r0, =gBattleCommunication ldrb r3, [r0, 0x3] lsls r0, r3, 2 adds r0, r2 ldr r1, [r1] ldr r0, [r0] ands r1, r0 cmp r1, 0 beq _08048F66 bl _08049994 _08048F66: subs r0, r3, 0x7 cmp r0, 0x34 bls _08048F70 bl _080499B2 _08048F70: lsls r0, 2 ldr r1, =_08048F88 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _08048F88: .4byte _0804905C .4byte _080490D0 .4byte _08049244 .4byte _0804915C .4byte _080491D8 .4byte _0804927C .4byte _080492C4 .4byte _08049390 .4byte _080493D4 .4byte _080493D4 .4byte _080493D4 .4byte _080493D4 .4byte _080493D4 .4byte _080493D4 .4byte _080493D4 .4byte _0804941C .4byte _0804941C .4byte _0804941C .4byte _0804941C .4byte _0804941C .4byte _0804941C .4byte _0804941C .4byte _080494FC .4byte _08049544 .4byte _08049564 .4byte _08049720 .4byte _0804975C .4byte _08049778 .4byte _08049790 .4byte _080497A8 .4byte _08049808 .4byte _08049820 .4byte _08049468 .4byte _08049468 .4byte _08049468 .4byte _08049468 .4byte _08049468 .4byte _08049468 .4byte _08049468 .4byte _080494B0 .4byte _080494B0 .4byte _080494B0 .4byte _080494B0 .4byte _080494B0 .4byte _080494B0 .4byte _080494B0 .4byte _08049864 .4byte _080498C0 .4byte _080499B2 .4byte _080499B2 .4byte _080499B2 .4byte _080499B2 .4byte _080499A4 _0804905C: mov r1, r9 ldrb r0, [r1] movs r5, 0x58 adds r1, r0, 0 muls r1, r5 mov r2, r8 adds r0, r1, r2 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x14 bne _08049076 bl _08049994 _08049076: mov r4, r8 adds r4, 0x50 adds r0, r1, r4 ldr r0, [r0] movs r1, 0x7 ands r0, r1 cmp r0, 0 beq _0804908A bl _08049994 _0804908A: bl Random mov r3, r9 ldrb r1, [r3] adds r2, r1, 0 muls r2, r5 adds r2, r4 lsls r0, 16 movs r1, 0xC0 lsls r1, 10 ands r1, r0 lsrs r1, 16 adds r1, 0x2 ldr r0, [r2] orrs r0, r1 str r0, [r2] ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push ldr r1, =gUnknown_0831C224 ldr r0, =gBattleCommunication ldrb r0, [r0, 0x3] lsls r0, 2 adds r0, r1 ldr r0, [r0] bl _080499B0 .pool _080490D0: mov r4, r9 ldrb r2, [r4] movs r4, 0x58 adds r0, r2, 0 muls r0, r4 add r0, r8 adds r0, 0x20 ldrb r1, [r0] cmp r1, 0x27 bne _08049114 cmp r5, 0x1 beq _080490F0 cmp r6, 0x80 beq _080490F0 bl _08049994 _080490F0: ldr r0, =gLastUsedAbility strb r1, [r0] mov r1, r9 ldrb r0, [r1] movs r1, 0x27 bl RecordAbilityBattle ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DB603 str r0, [r1] bl _080499B2 .pool _08049114: adds r0, r2, 0 bl sub_8048728 ldr r1, =gUnknown_02024082 lsls r0, 24 lsrs r0, 24 ldrb r1, [r1] cmp r0, r1 bhi _0804912A bl _08049994 _0804912A: mov r2, r9 ldrb r0, [r2] adds r2, r0, 0 muls r2, r4 mov r0, r8 adds r0, 0x50 adds r2, r0 ldr r1, =gUnknown_0831C134 ldr r0, =gBattleCommunication ldrb r0, [r0, 0x3] lsls r0, 2 adds r0, r1 ldr r1, [r2] ldr r0, [r0] orrs r1, r0 str r1, [r2] bl _08049994 .pool _0804915C: mov r3, r9 ldrb r0, [r3] movs r5, 0x58 muls r0, r5 mov r4, r8 adds r4, 0x50 adds r2, r0, r4 ldr r1, [r2] movs r0, 0x70 ands r0, r1 cmp r0, 0 beq _08049178 bl _08049994 _08049178: movs r0, 0x80 lsls r0, 5 orrs r1, r0 str r1, [r2] ldr r1, =gUnknown_02024268 ldrb r0, [r3] lsls r0, 1 adds r0, r1 ldr r1, =gCurrentMove ldrh r1, [r1] strh r1, [r0] bl Random mov r2, r9 ldrb r1, [r2] adds r2, r1, 0 muls r2, r5 adds r2, r4 movs r1, 0x3 ands r1, r0 adds r1, 0x2 lsls r1, 4 ldr r0, [r2] orrs r0, r1 str r0, [r2] ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push ldr r1, =gUnknown_0831C224 ldr r0, =gBattleCommunication ldrb r0, [r0, 0x3] lsls r0, 2 adds r0, r1 ldr r0, [r0] bl _080499B0 .pool _080491D8: ldr r5, =gBankAttacker ldrb r0, [r5] bl GetBankIdentity movs r1, 0x1 ands r1, r0 cmp r1, 0 bne _08049210 ldr r4, =gUnknown_0202432E ldrh r3, [r4] ldr r2, =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 _08049210 ldr r3, =0x0000ffff adds r0, r3, 0 strh r0, [r4] _08049210: ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push ldr r1, =gUnknown_0831C224 ldr r0, =gBattleCommunication ldrb r0, [r0, 0x3] lsls r0, 2 adds r0, r1 ldr r0, [r0] b _080499B0 .pool _08049244: mov r4, r9 ldrb r1, [r4] movs r0, 0x58 muls r0, r1 mov r1, r8 adds r1, 0x4C adds r0, r1 ldr r0, [r0] cmp r0, 0 beq _0804925A b _08049994 _0804925A: bl Random ldr r4, =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_8048760 b _080499B2 .pool _0804927C: mov r0, r9 ldrb r1, [r0] movs r0, 0x58 adds r2, r1, 0 muls r2, r0 mov r0, r8 adds r0, 0x50 adds r2, r0 ldr r0, [r2] movs r1, 0x80 lsls r1, 5 orrs r0, r1 str r0, [r2] ldr r1, =gUnknown_02024268 mov r2, r9 ldrb r0, [r2] lsls r0, 1 adds r0, r1 ldr r1, =gCurrentMove ldrh r1, [r1] strh r1, [r0] ldr r0, =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 _08049994 .pool _080492C4: mov r3, r9 ldrb r0, [r3] movs r6, 0x58 muls r0, r6 mov r4, r8 adds r4, 0x50 adds r0, r4 ldr r5, [r0] movs r0, 0xE0 lsls r0, 8 ands r5, r0 cmp r5, 0 beq _080492E0 b _08049994 _080492E0: bl Random mov r2, r9 ldrb r1, [r2] adds r2, r1, 0 muls r2, r6 adds r2, r4 movs r1, 0x3 ands r1, r0 adds r1, 0x3 lsls r1, 13 ldr r0, [r2] orrs r0, r1 str r0, [r2] mov r3, r9 ldrb r1, [r3] ldr r2, =gBattleStruct ldr r0, [r2] lsls r1, 1 adds r1, r0 ldr r6, =gCurrentMove ldrh r0, [r6] strb r0, [r1, 0x4] ldrb r1, [r3] ldr r0, [r2] lsls r1, 1 adds r1, r0 ldrh r0, [r6] lsrs r0, 8 strb r0, [r1, 0x5] ldrb r1, [r3] ldr r0, [r2] adds r1, r0 ldr r0, =gBankAttacker ldrb r0, [r0] strb r0, [r1, 0x14] ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push ldr r1, =gUnknown_0831C224 ldr r2, =gBattleCommunication ldrb r0, [r2, 0x3] lsls r0, 2 adds r0, r1 ldr r0, [r0] str r0, [r4] strb r5, [r2, 0x5] ldr r3, =gUnknown_085CC982 ldrh r0, [r3] ldrh r4, [r6] cmp r0, r4 bne _0804934E b _080499B2 _0804934E: adds r1, r2, 0 adds r2, r6, 0 _08049352: ldrb r0, [r1, 0x5] adds r0, 0x1 strb r0, [r1, 0x5] lsls r0, 24 lsrs r0, 24 cmp r0, 0x4 bls _08049362 b _080499B2 _08049362: ldrb r0, [r1, 0x5] lsls r0, 1 adds r0, r3 ldrh r0, [r0] ldrh r4, [r2] cmp r0, r4 bne _08049352 b _080499B2 .pool _08049390: ldr r1, =gBattleMoveDamage ldr r0, =gUnknown_020241F4 ldr r0, [r0] cmp r0, 0 bge _0804939C adds r0, 0x3 _0804939C: asrs r0, 2 str r0, [r1] cmp r0, 0 bne _080493A8 movs r0, 0x1 str r0, [r1] _080493A8: ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push ldr r1, =gUnknown_0831C224 ldr r0, =gBattleCommunication ldrb r0, [r0, 0x3] lsls r0, 2 adds r0, r1 ldr r0, [r0] b _080499B0 .pool _080493D4: ldr r4, =gBattleCommunication ldrb r1, [r4, 0x3] adds r1, 0xF2 lsls r1, 24 lsrs r1, 24 movs r0, 0x10 adds r2, r7, 0 movs r3, 0 bl sub_8050A1C lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0 beq _080493F2 b _08049994 _080493F2: ldr r2, =gBattleScripting ldrb r1, [r4, 0x3] movs r0, 0x3F ands r0, r1 strb r0, [r2, 0x10] strb r3, [r2, 0x11] ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push ldr r0, =gUnknown_082D8CD4 b _080499B0 .pool _0804941C: movs r0, 0x70 negs r0, r0 ldr r4, =gBattleCommunication ldrb r1, [r4, 0x3] adds r1, 0xEB lsls r1, 24 lsrs r1, 24 adds r2, r7, 0 movs r3, 0 bl sub_8050A1C lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0 beq _0804943C b _08049994 _0804943C: ldr r2, =gBattleScripting ldrb r1, [r4, 0x3] movs r0, 0x3F ands r0, r1 strb r0, [r2, 0x10] strb r3, [r2, 0x11] ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push ldr r0, =gUnknown_082D8D65 b _080499B0 .pool _08049468: ldr r4, =gBattleCommunication ldrb r1, [r4, 0x3] adds r1, 0xDA lsls r1, 24 lsrs r1, 24 movs r0, 0x20 adds r2, r7, 0 movs r3, 0 bl sub_8050A1C lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0 beq _08049486 b _08049994 _08049486: ldr r2, =gBattleScripting ldrb r1, [r4, 0x3] movs r0, 0x3F ands r0, r1 strb r0, [r2, 0x10] strb r3, [r2, 0x11] ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push ldr r0, =gUnknown_082D8CD4 b _080499B0 .pool _080494B0: movs r0, 0x60 negs r0, r0 ldr r4, =gBattleCommunication ldrb r1, [r4, 0x3] adds r1, 0xD3 lsls r1, 24 lsrs r1, 24 adds r2, r7, 0 movs r3, 0 bl sub_8050A1C lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0 beq _080494D0 b _08049994 _080494D0: ldr r2, =gBattleScripting ldrb r1, [r4, 0x3] movs r0, 0x3F ands r0, r1 strb r0, [r2, 0x10] strb r3, [r2, 0x11] ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push ldr r0, =gUnknown_082D8D65 b _080499B0 .pool _080494FC: mov r0, r9 ldrb r1, [r0] movs r0, 0x58 adds r2, r1, 0 muls r2, r0 mov r0, r8 adds r0, 0x50 adds r2, r0 ldr r0, [r2] movs r1, 0x80 lsls r1, 15 orrs r0, r1 str r0, [r2] ldr r2, =gDisableStructs mov r3, r9 ldrb r1, [r3] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x2 strb r1, [r0, 0x19] ldr r1, =gUnknown_02024268 ldrb r0, [r3] lsls r0, 1 adds r0, r1 ldr r1, =gCurrentMove ldrh r1, [r1] strh r1, [r0] b _08049994 .pool _08049544: ldr r0, =gBankAttacker ldrb r1, [r0] movs r0, 0x58 adds r2, r1, 0 muls r2, r0 mov r0, r8 adds r0, 0x50 adds r2, r0 ldr r0, [r2] movs r1, 0x80 lsls r1, 16 _0804955A: orrs r0, r1 str r0, [r2] b _08049994 .pool _08049564: ldr r5, =gBattleTypeFlags ldr r0, [r5] movs r1, 0x80 lsls r1, 19 ands r0, r1 cmp r0, 0 beq _08049574 b _08049994 _08049574: ldr r6, =gBankAttacker ldrb r0, [r6] bl GetBankSide lsls r0, 24 lsrs r4, r0, 24 ldrb r0, [r6] bl GetBankSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _080495A8 ldr r0, [r5] ldr r1, =0x0a3f0902 ands r0, r1 cmp r0, 0 bne _080495D4 b _08049994 .pool _080495A8: ldr r0, [r5] ldr r1, =0x0a3f0902 ands r0, r1 cmp r0, 0 bne _080495D4 ldr r0, =gUnknown_020243D0 adds r0, 0x29 adds r0, r4, r0 ldrb r1, [r0] ldr r3, =gBitTable ldr r2, =gBattlePartyID ldrb r0, [r6] 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 _080495D4 b _08049994 _080495D4: ldr r2, =gBattleMons ldr r1, =gBankTarget ldrb r0, [r1] movs r5, 0x58 muls r0, r5 adds r4, r0, r2 ldrh r0, [r4, 0x2E] adds r7, r1, 0 mov r8, r2 cmp r0, 0 beq _0804963C adds r0, r4, 0 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x3C bne _0804963C bl b_movescr_stack_push_cursor ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DB682 str r0, [r1] ldr r1, =gLastUsedAbility ldrb r0, [r7] muls r0, r5 add r0, r8 adds r0, 0x20 ldrb r0, [r0] strb r0, [r1] ldrb r0, [r7] ldrb r1, [r1] bl RecordAbilityBattle b _080499B2 .pool _0804963C: ldr r4, =gBankAttacker mov r10, r4 ldrb r2, [r4] movs r0, 0x58 mov r9, r0 mov r0, r9 muls r0, r2 add r0, r8 ldrh r4, [r0, 0x2E] cmp r4, 0 beq _08049654 b _08049994 _08049654: ldrb r0, [r7] mov r1, r9 muls r1, r0 adds r0, r1, 0 add r0, r8 ldrh r3, [r0, 0x2E] adds r1, r3, 0 cmp r1, 0xAF bne _08049668 b _08049994 _08049668: adds r0, r3, 0 subs r0, 0x79 lsls r0, 16 lsrs r0, 16 cmp r0, 0xB bhi _08049676 b _08049994 _08049676: cmp r1, 0 bne _0804967C b _08049994 _0804967C: ldr r5, =gBattleStruct lsls r0, r2, 1 adds r0, 0xD0 ldr r1, [r5] adds r1, r0 ldr r2, =gUnknown_02024208 strh r3, [r1] strh r3, [r2] ldrb r0, [r7] mov r3, r9 muls r3, r0 adds r0, r3, 0 add r0, r8 movs r6, 0 strh r4, [r0, 0x2E] ldr r4, =gActiveBank mov r1, r10 ldrb r0, [r1] strb r0, [r4] str r2, [sp] movs r0, 0 movs r1, 0x2 movs r2, 0 movs r3, 0x2 bl dp01_build_cmdbuf_x02_a_b_varargs mov r2, r10 ldrb r0, [r2] bl dp01_battle_side_mark_buffer_for_execution ldrb r0, [r7] strb r0, [r4] ldrb r0, [r7] mov r3, r9 muls r3, r0 adds r0, r3, 0 mov r1, r8 adds r1, 0x2E adds r0, r1 str r0, [sp] movs r0, 0 movs r1, 0x2 movs r2, 0 movs r3, 0x2 bl dp01_build_cmdbuf_x02_a_b_varargs ldrb r0, [r7] bl dp01_battle_side_mark_buffer_for_execution ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push ldr r0, =gUnknown_082DB422 str r0, [r4] ldrb r0, [r7] ldr r1, [r5] lsls r0, 1 adds r0, r1 adds r0, 0xC8 strb r6, [r0] ldrb r0, [r7] ldr r1, [r5] lsls r0, 1 adds r0, r1 adds r0, 0xC9 strb r6, [r0] b _080499B2 .pool _08049720: ldr r3, =gBankTarget ldrb r1, [r3] movs r0, 0x58 adds r2, r1, 0 muls r2, r0 mov r0, r8 adds r0, 0x50 adds r2, r0 ldr r0, [r2] movs r1, 0x80 lsls r1, 19 orrs r0, r1 str r0, [r2] ldr r2, =gDisableStructs ldrb r1, [r3] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r2 ldr r1, =gBankAttacker ldrb r1, [r1] strb r1, [r0, 0x14] b _08049994 .pool _0804975C: ldr r0, =gBankTarget ldrb r1, [r0] movs r0, 0x58 adds r2, r1, 0 muls r2, r0 mov r0, r8 adds r0, 0x50 adds r2, r0 ldr r0, [r2] movs r1, 0x80 lsls r1, 20 b _0804955A .pool _08049778: ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push ldr r0, =gUnknown_082DAF27 b _080499B0 .pool _08049790: ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push ldr r0, =gUnknown_082DAFC3 b _080499B0 .pool _080497A8: ldr r6, =gBankTarget ldrb r0, [r6] movs r2, 0x58 muls r0, r2 mov r1, r8 adds r1, 0x4C adds r5, r0, r1 ldr r4, [r5] movs r0, 0x40 ands r0, r4 cmp r0, 0 bne _080497C2 b _08049994 _080497C2: movs r0, 0x41 negs r0, r0 ands r4, r0 str r4, [r5] ldr r4, =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 dp01_build_cmdbuf_x02_a_b_varargs ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push ldr r0, =gUnknown_082DB361 b _080499B0 .pool _08049808: ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push ldr r0, =gUnknown_082DB117 b _080499B0 .pool _08049820: ldr r4, =gBattleMoveDamage ldr r0, =gUnknown_020241F4 ldr r0, [r0] movs r1, 0x3 bl __divsi3 str r0, [r4] cmp r0, 0 bne _08049836 movs r0, 0x1 str r0, [r4] _08049836: ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push ldr r1, =gUnknown_0831C224 ldr r0, =gBattleCommunication ldrb r0, [r0, 0x3] lsls r0, 2 adds r0, r1 ldr r0, [r0] b _080499B0 .pool _08049864: mov r4, r9 ldrb r0, [r4] movs r5, 0x58 muls r0, r5 mov r4, r8 adds r4, 0x50 adds r2, r0, r4 ldr r1, [r2] movs r0, 0xC0 lsls r0, 4 ands r0, r1 cmp r0, 0 beq _08049880 b _08049994 _08049880: movs r0, 0x80 lsls r0, 5 orrs r1, r0 str r1, [r2] ldr r1, =gUnknown_02024268 mov r2, r9 ldrb r0, [r2] lsls r0, 1 adds r0, r1 ldr r1, =gCurrentMove ldrh r1, [r1] strh r1, [r0] bl Random mov r3, r9 ldrb r1, [r3] adds r2, r1, 0 muls r2, r5 adds r2, r4 movs r1, 0x1 ands r1, r0 adds r1, 0x2 lsls r1, 10 ldr r0, [r2] orrs r0, r1 str r0, [r2] b _080499B2 .pool _080498C0: mov r4, r9 ldrb r3, [r4] movs r5, 0x58 adds r0, r3, 0 muls r0, r5 mov r2, r8 adds r1, r0, r2 adds r0, r1, 0 adds r0, 0x20 ldrb r2, [r0] cmp r2, 0x3C bne _08049900 ldrh r0, [r1, 0x2E] cmp r0, 0 beq _08049994 ldr r0, =gLastUsedAbility strb r2, [r0] ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DB63F str r0, [r1] ldrb r0, [r4] movs r1, 0x3C bl RecordAbilityBattle b _080499B2 .pool _08049900: ldrh r0, [r1, 0x2E] cmp r0, 0 beq _08049994 adds r0, r3, 0 bl GetBankSide lsls r0, 24 lsrs r4, r0, 24 ldr r1, =gUnknown_02024208 mov r3, r9 ldrb r0, [r3] muls r0, r5 add r0, r8 ldrh r0, [r0, 0x2E] strh r0, [r1] ldrb r0, [r3] muls r0, r5 add r0, r8 movs r5, 0 movs r1, 0 strh r1, [r0, 0x2E] ldr r2, =gUnknown_020243D0 adds r2, 0x29 adds r2, r4, r2 ldr r3, =gBitTable ldr r1, =gBattlePartyID mov r4, r9 ldrb r0, [r4] lsls r0, 1 adds r0, r1 ldrh r0, [r0] lsls r0, 2 adds r0, r3 ldr r0, [r0] ldrb r1, [r2] orrs r0, r1 strb r0, [r2] ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push ldr r0, =gUnknown_082DB168 str r0, [r4] mov r1, r9 ldrb r0, [r1] ldr r2, =gBattleStruct ldr r1, [r2] lsls r0, 1 adds r0, r1 adds r0, 0xC8 strb r5, [r0] mov r3, r9 ldrb r0, [r3] ldr r1, [r2] lsls r0, 1 adds r0, r1 adds r0, 0xC9 strb r5, [r0] b _080499B2 .pool _08049994: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] b _080499B2 .pool _080499A4: ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push ldr r0, =gUnknown_082DB1D5 _080499B0: str r0, [r4] _080499B2: ldr r1, =gBattleCommunication movs r0, 0 strb r0, [r1, 0x3] _080499B8: add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_8048760 thumb_func_start atk15_seteffectwithchancetarget atk15_seteffectwithchancetarget: @ 80499D4 push {r4,lr} ldr r2, =gBattleMons ldr r0, =gBankAttacker ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x20 bne _08049A10 ldr r2, =gBattleMoves ldr r0, =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x5] lsls r4, r0, 1 b _08049A20 .pool _08049A10: ldr r2, =gBattleMoves ldr r0, =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r4, [r0, 0x5] _08049A20: ldr r3, =gBattleCommunication ldrb r2, [r3, 0x3] movs r0, 0x80 ands r0, r2 cmp r0, 0 beq _08049A50 ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 bne _08049A50 movs r0, 0x7F ands r0, r2 strb r0, [r3, 0x3] b _08049A7E .pool _08049A50: bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x64 bl __umodsi3 lsls r0, 16 lsrs r0, 16 cmp r0, r4 bcs _08049A9A ldr r0, =gBattleCommunication ldrb r0, [r0, 0x3] cmp r0, 0 beq _08049A9A ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 bne _08049A9A cmp r4, 0x63 bls _08049A90 _08049A7E: movs r0, 0 movs r1, 0x80 bl sub_8048760 b _08049AA2 .pool _08049A90: movs r0, 0 movs r1, 0 bl sub_8048760 b _08049AA2 _08049A9A: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] _08049AA2: ldr r0, =gBattleCommunication movs r1, 0 strb r1, [r0, 0x3] ldr r0, =gBattleScripting strb r1, [r0, 0x16] pop {r4} pop {r0} bx r0 .pool thumb_func_end atk15_seteffectwithchancetarget thumb_func_start sub_8049AC0 sub_8049AC0: @ 8049AC0 push {lr} movs r0, 0x1 movs r1, 0 bl sub_8048760 pop {r0} bx r0 thumb_func_end sub_8049AC0 thumb_func_start sub_8049AD0 sub_8049AD0: @ 8049AD0 push {lr} movs r0, 0 movs r1, 0 bl sub_8048760 pop {r0} bx r0 thumb_func_end sub_8049AD0 thumb_func_start sub_8049AE0 sub_8049AE0: @ 8049AE0 push {lr} ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r2, =gActiveBank strb r0, [r2] ldr r3, =gBattleCommunication ldrb r0, [r3, 0x3] cmp r0, 0x6 bhi _08049B14 ldr r1, =gBattleMons ldrb r2, [r2] movs r0, 0x58 muls r2, r0 adds r1, 0x4C b _08049B1E .pool _08049B14: ldr r1, =gBattleMons ldrb r2, [r2] movs r0, 0x58 muls r2, r0 adds r1, 0x50 _08049B1E: adds r2, r1 ldr r1, =gUnknown_0831C134 ldrb r0, [r3, 0x3] lsls r0, 2 adds r0, r1 ldr r1, [r0] ldr r0, [r2] bics r0, r1 str r0, [r2] ldr r0, =gBattleCommunication movs r2, 0 strb r2, [r0, 0x3] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] ldr r0, =gBattleScripting strb r2, [r0, 0x16] pop {r0} bx r0 .pool thumb_func_end sub_8049AE0 thumb_func_start atk19_faintpokemon atk19_faintpokemon: @ 8049B5C push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x4 ldr r0, =gBattlescriptCurrInstr ldr r2, [r0] ldrb r1, [r2, 0x2] adds r6, r0, 0 cmp r1, 0 beq _08049BE0 ldrb r0, [r2, 0x1] bl get_battle_side_of_something ldr r5, =gActiveBank strb r0, [r5] ldr r2, =gHitMarker ldr r1, =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 _08049B94 b _08049E2C _08049B94: 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, =gUnknown_0202428E lsls r0, 24 lsrs r0, 23 adds r0, r1 ldrh r2, [r0] ldr r1, =0x0000fdff ands r1, r2 strh r1, [r0] b _08049E32 .pool _08049BE0: ldrb r0, [r2, 0x1] cmp r0, 0x1 bne _08049C08 ldr r1, =gActiveBank ldr r0, =gBankAttacker ldrb r0, [r0] strb r0, [r1] ldr r0, =gBankTarget ldrb r0, [r0] mov r9, r0 ldr r4, =gUnknown_082DA7AA b _08049C18 .pool _08049C08: ldr r1, =gActiveBank ldr r0, =gBankTarget ldrb r0, [r0] strb r0, [r1] ldr r0, =gBankAttacker ldrb r0, [r0] mov r9, r0 ldr r4, =gUnknown_082DA7B7 _08049C18: mov r8, r1 ldr r0, =gAbsentBankFlags ldrb r1, [r0] ldr r2, =gBitTable mov r7, r8 ldrb r3, [r7] lsls r0, r3, 2 adds r0, r2 ldr r2, [r0] ands r1, r2 cmp r1, 0 beq _08049C32 b _08049E2C _08049C32: ldr r1, =gBattleMons movs r0, 0x58 muls r0, r3 adds r0, r1 ldrh r0, [r0, 0x28] cmp r0, 0 beq _08049C42 b _08049E2C _08049C42: ldr r5, =gHitMarker lsls r1, r2, 28 ldr r0, [r5] orrs r0, r1 str r0, [r5] ldr r0, [r6] adds r0, 0x7 bl b_movescr_stack_push str r4, [r6] ldrb r0, [r7] bl GetBankSide lsls r0, 24 cmp r0, 0 bne _08049CA4 ldr r0, [r5] movs r1, 0x80 lsls r1, 15 orrs r0, r1 str r0, [r5] ldr r1, =gUnknown_03005D10 ldrb r0, [r1] cmp r0, 0xFE bhi _08049C78 adds r0, 0x1 strb r0, [r1] _08049C78: ldrb r0, [r7] bl sub_80570F4 b _08049CCE .pool _08049CA4: ldr r4, =gUnknown_03005D10 ldrb r0, [r4, 0x1] cmp r0, 0xFE bhi _08049CB0 adds r0, 0x1 strb r0, [r4, 0x1] _08049CB0: ldr r1, =gBattlePartyID mov r2, r8 ldrb r0, [r2] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, =gEnemyParty adds r0, r1 movs r1, 0xB movs r2, 0 bl GetMonData strh r0, [r4, 0x20] _08049CCE: ldr r2, =gHitMarker ldr r1, [r2] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _08049D0C ldr r6, =gBattleMons ldr r0, =gBankAttacker ldrb r0, [r0] movs r5, 0x58 muls r0, r5 adds r0, r6 ldrh r0, [r0, 0x28] cmp r0, 0 beq _08049D0C movs r0, 0x41 negs r0, r0 ands r1, r0 str r1, [r2] ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] bl b_movescr_stack_push ldr r1, =gBattleMoveDamage mov r0, r9 muls r0, r5 adds r0, r6 ldrh r0, [r0, 0x28] str r0, [r1] ldr r0, =gUnknown_082DAE3E str r0, [r4] _08049D0C: ldr r1, =gStatuses3 ldr r6, =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 _08049D24 b _08049E32 _08049D24: ldr r0, =gHitMarker ldr r5, [r0] movs r0, 0x80 lsls r0, 17 ands r5, r0 cmp r5, 0 beq _08049D34 b _08049E32 _08049D34: ldr r3, =gBankAttacker mov r8, r3 ldrb r0, [r3] bl GetBankSide adds r4, r0, 0 ldrb r0, [r6] bl GetBankSide lsls r4, 24 lsls r0, 24 cmp r4, r0 beq _08049E32 ldr r0, =gBattleMons mov r9, r0 mov r2, r8 ldrb r1, [r2] movs r7, 0x58 adds r2, r1, 0 muls r2, r7 adds r0, r2, r0 ldrh r0, [r0, 0x28] cmp r0, 0 beq _08049E32 ldr r0, =gCurrentMove ldrh r0, [r0] cmp r0, 0xA5 beq _08049E32 ldr r0, =gBattleStruct ldr r0, [r0] adds r0, r1, r0 adds r0, 0x80 ldrb r4, [r0] adds r0, r4, r2 mov r6, r9 adds r6, 0x24 adds r0, r6 strb r5, [r0] ldr r5, =gBattlescriptCurrInstr ldr r0, [r5] bl b_movescr_stack_push ldr r0, =gUnknown_082DB18D str r0, [r5] ldr r5, =gActiveBank mov r3, r8 ldrb r0, [r3] 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 dp01_build_cmdbuf_x02_a_b_varargs ldrb r0, [r5] bl dp01_battle_side_mark_buffer_for_execution ldr r1, =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 _08049E32 .pool _08049E2C: ldr r0, [r6] adds r0, 0x7 str r0, [r6] _08049E32: add sp, 0x4 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 thumb_func_end atk19_faintpokemon thumb_func_start sub_8049E40 sub_8049E40: @ 8049E40 push {r4,r5,lr} ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 bne _08049E6A ldr r5, =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r4, =gActiveBank strb r0, [r4] movs r0, 0 bl dp01_build_cmdbuf_x0A_A_A_A ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution ldr r0, [r5] adds r0, 0x2 str r0, [r5] _08049E6A: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_8049E40 thumb_func_start sub_8049E7C sub_8049E7C: @ 8049E7C push {r4,r5,lr} sub sp, 0x4 ldr r0, =gBattleExecBuffer ldr r5, [r0] cmp r5, 0 bne _08049EE8 ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r4, =gActiveBank strb r0, [r4] ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x80 lsls r1, 11 ands r0, r1 cmp r0, 0 beq _08049EB4 ldr r2, =gBattleMons ldrb r1, [r4] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r0, [r0, 0x28] cmp r0, 0 bne _08049EDC _08049EB4: ldr r1, =gBattleMons ldrb r0, [r4] movs r2, 0x58 muls r0, r2 adds r1, 0x4C adds r0, r1 str r5, [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 dp01_build_cmdbuf_x02_a_b_varargs ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution _08049EDC: bl sub_803A75C ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] _08049EE8: add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_8049E7C thumb_func_start atk1C_jumpifstatus atk1C_jumpifstatus: @ 8049F04 push {r4,r5,lr} ldr r5, =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] bl get_battle_side_of_something 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, =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 _08049F68 adds r0, r1, r2 ldrh r0, [r0, 0x28] cmp r0, 0 beq _08049F68 str r3, [r5] b _08049F70 .pool _08049F68: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0xA str r0, [r1] _08049F70: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end atk1C_jumpifstatus thumb_func_start atk1D_jumpifsecondarystatus atk1D_jumpifsecondarystatus: @ 8049F7C push {r4,r5,lr} ldr r5, =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] bl get_battle_side_of_something 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, =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 _08049FE0 adds r0, r1, r2 ldrh r0, [r0, 0x28] cmp r0, 0 beq _08049FE0 str r3, [r5] b _08049FE8 .pool _08049FE0: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0xA str r0, [r1] _08049FE8: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end atk1D_jumpifsecondarystatus thumb_func_start atk1E_jumpifability atk1E_jumpifability: @ 8049FF4 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x4 ldr r6, =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 _0804A054 ldr r0, =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 _0804A0C8 ldr r1, =gLastUsedAbility strb r5, [r1] str r7, [r6] subs r4, 0x1 lsls r0, r4, 24 lsrs r0, 24 ldrb r1, [r1] b _0804A0B0 .pool _0804A054: cmp r0, 0x9 bne _0804A08C ldr r0, =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 _0804A0C8 ldr r1, =gLastUsedAbility strb r5, [r1] str r7, [r6] subs r4, 0x1 lsls r0, r4, 24 lsrs r0, 24 ldrb r1, [r1] b _0804A0B0 .pool _0804A08C: ldrb r0, [r2, 0x1] bl get_battle_side_of_something lsls r0, 24 lsrs r4, r0, 24 ldr r1, =gBattleMons movs r0, 0x58 muls r0, r4 adds r0, r1 adds r0, 0x20 ldrb r1, [r0] cmp r1, r8 bne _0804A0C8 ldr r0, =gLastUsedAbility strb r1, [r0] str r7, [r6] ldrb r1, [r0] adds r0, r4, 0 _0804A0B0: bl RecordAbilityBattle ldr r0, =gBattleScripting strb r4, [r0, 0x15] b _0804A0CE .pool _0804A0C8: ldr r0, [r6] adds r0, 0x7 str r0, [r6] _0804A0CE: add sp, 0x4 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end atk1E_jumpifability thumb_func_start sub_804A0DC sub_804A0DC: @ 804A0DC push {r4-r6,lr} ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r4, [r0, 0x1] cmp r4, 0x1 bne _0804A0FC ldr r0, =gBankAttacker ldrb r0, [r0] bl GetBankIdentity b _0804A106 .pool _0804A0FC: ldr r0, =gBankTarget ldrb r0, [r0] bl GetBankIdentity movs r4, 0x1 _0804A106: ands r4, r0 ldr r6, =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, =gUnknown_0202428E lsls r0, r4, 1 adds r0, r1 ldrh r0, [r0] ands r2, r0 cmp r2, 0 beq _0804A148 str r5, [r6] b _0804A14E .pool _0804A148: adds r0, r3, 0 adds r0, 0x8 str r0, [r6] _0804A14E: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_804A0DC thumb_func_start sub_804A154 sub_804A154: @ 804A154 push {r4,r5,lr} movs r5, 0 ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] bl get_battle_side_of_something lsls r0, 24 lsrs r0, 24 ldr r2, =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 _0804A212 lsls r0, 2 ldr r1, =_0804A194 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0804A194: .4byte _0804A1AC .4byte _0804A1BC .4byte _0804A1CC .4byte _0804A1DC .4byte _0804A1EC .4byte _0804A200 _0804A1AC: ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x4] cmp r2, r0 bne _0804A212 b _0804A20C .pool _0804A1BC: ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x4] cmp r2, r0 beq _0804A212 b _0804A20C .pool _0804A1CC: ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x4] cmp r2, r0 bls _0804A212 b _0804A20C .pool _0804A1DC: ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x4] cmp r2, r0 bcs _0804A212 b _0804A20C .pool _0804A1EC: ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x4] ands r2, r0 cmp r2, 0 beq _0804A212 b _0804A20C .pool _0804A200: ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x4] ands r2, r0 cmp r2, 0 bne _0804A212 _0804A20C: adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 _0804A212: cmp r5, 0 beq _0804A238 ldr r3, =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 _0804A240 .pool _0804A238: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x9 str r0, [r1] _0804A240: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_804A154 thumb_func_start atk21_jumpifspecialstatusflag atk21_jumpifspecialstatusflag: @ 804A24C push {r4-r6,lr} ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r5, =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 _0804A2AC ldr r0, =gStatuses3 ldrb r1, [r5] lsls r1, 2 adds r1, r0 ldr r0, [r1] ands r0, r6 cmp r0, 0 bne _0804A2C4 b _0804A2BC .pool _0804A2AC: ldr r0, =gStatuses3 ldrb r1, [r5] lsls r1, 2 adds r1, r0 ldr r0, [r1] ands r0, r6 cmp r0, 0 beq _0804A2C4 _0804A2BC: str r3, [r4] b _0804A2CA .pool _0804A2C4: adds r0, r2, 0 adds r0, 0xB str r0, [r4] _0804A2CA: pop {r4-r6} pop {r0} bx r0 thumb_func_end atk21_jumpifspecialstatusflag thumb_func_start sub_804A2D0 sub_804A2D0: @ 804A2D0 push {r4-r6,lr} ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] bl get_battle_side_of_something 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, =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 _0804A314 adds r0, r1, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, r5 bne _0804A320 _0804A314: str r6, [r4] b _0804A324 .pool _0804A320: adds r0, r3, 0x7 str r0, [r4] _0804A324: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_804A2D0 thumb_func_start sub_804A32C sub_804A32C: @ 804A32C push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} movs r6, 0 ldr r0, =gBattleStruct ldr r0, [r0] adds r0, 0x50 mov r9, r0 ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r1, =gUnknown_0202420D strb r0, [r1] ldr r2, =gUnknown_020243FE movs r1, 0x2 ands r1, r0 lsls r1, 24 lsrs r1, 25 adds r1, r2 ldrb r1, [r1] mov r8, r1 ldr r0, =gBattleScripting ldrb r0, [r0, 0x1C] cmp r0, 0x6 bls _0804A368 bl _0804ACB2 _0804A368: lsls r0, 2 ldr r1, =_0804A38C adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0804A38C: .4byte _0804A3A8 .4byte _0804A414 .4byte _0804A52E .4byte _0804A850 .4byte _0804A954 .4byte _0804AC40 .4byte _0804AC88 _0804A3A8: ldr r4, =gUnknown_0202420D ldrb r0, [r4] bl GetBankSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _0804A3BC bl _0804AC7C _0804A3BC: ldr r0, =gBattleTypeFlags ldr r0, [r0] ldr r1, =0x063f0982 ands r0, r1 cmp r0, 0 beq _0804A3CC bl _0804AC7C _0804A3CC: ldr r1, =gBattleScripting ldrb r0, [r1, 0x1C] adds r0, 0x1 strb r0, [r1, 0x1C] ldr r0, =gBattleStruct ldr r2, [r0] adds r2, 0xDF ldr r3, =gBitTable ldr r1, =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 _0804ACB2 .pool _0804A414: movs r5, 0 movs r7, 0 _0804A418: movs r0, 0x64 adds r1, r7, 0 muls r1, r0 ldr r0, =gPlayerParty adds r4, r1, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0804A486 adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _0804A486 ldr r0, =gBitTable lsls r1, r7, 2 adds r1, r0 ldr r0, [r1] mov r1, r8 ands r0, r1 cmp r0, 0 beq _0804A44C adds r5, 0x1 _0804A44C: adds r0, r4, 0 movs r1, 0xC bl GetMonData lsls r0, 16 lsrs r0, 16 cmp r0, 0xAF bne _0804A478 ldr r0, =gSaveBlock1Ptr ldr r0, [r0] ldr r2, =0x00003226 adds r0, r2 ldrb r4, [r0] b _0804A480 .pool _0804A478: bl ItemId_GetHoldEffect lsls r0, 24 lsrs r4, r0, 24 _0804A480: cmp r4, 0x19 bne _0804A486 adds r6, 0x1 _0804A486: adds r7, 0x1 cmp r7, 0x5 ble _0804A418 ldr r3, =gBaseStats ldr r2, =gBattleMons ldr r0, =gUnknown_0202420D 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 _0804A4FC lsrs r4, r0, 17 adds r0, r4, 0 adds r1, r5, 0 bl __divsi3 mov r1, r9 strh r0, [r1] lsls r0, 16 cmp r0, 0 bne _0804A4D2 movs r0, 0x1 strh r0, [r1] _0804A4D2: ldr r5, =gUnknown_02024402 adds r0, r4, 0 adds r1, r6, 0 bl __divsi3 strh r0, [r5] lsls r0, 16 cmp r0, 0 bne _0804A516 movs r0, 0x1 strh r0, [r5] b _0804A516 .pool _0804A4FC: adds r0, r1, 0 adds r1, r5, 0 bl __divsi3 mov r2, r9 strh r0, [r2] lsls r0, 16 cmp r0, 0 bne _0804A512 movs r0, 0x1 strh r0, [r2] _0804A512: ldr r0, =gUnknown_02024402 strh r6, [r0] _0804A516: ldr r1, =gBattleScripting ldrb r0, [r1, 0x1C] adds r0, 0x1 movs r2, 0 strb r0, [r1, 0x1C] ldr r1, =gBattleStruct ldr r0, [r1] strb r2, [r0, 0x10] ldr r0, [r1] adds r0, 0x53 mov r4, r8 strb r4, [r0] _0804A52E: ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 beq _0804A538 b _0804ACB2 _0804A538: ldr r0, =gBattleStruct ldr r0, [r0] ldrb r1, [r0, 0x10] movs r0, 0x64 muls r0, r1 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0xC bl GetMonData lsls r0, 16 lsrs r0, 16 cmp r0, 0xAF bne _0804A57C ldr r0, =gSaveBlock1Ptr ldr r0, [r0] ldr r1, =0x00003226 adds r0, r1 ldrb r4, [r0] b _0804A584 .pool _0804A57C: bl ItemId_GetHoldEffect lsls r0, 24 lsrs r4, r0, 24 _0804A584: ldr r5, =gBattleStruct cmp r4, 0x19 beq _0804A5AC ldr r0, [r5] adds r1, r0, 0 adds r1, 0x53 ldrb r0, [r1] movs r2, 0x1 ands r2, r0 cmp r2, 0 bne _0804A5AC lsrs r0, 1 strb r0, [r1] ldr r1, =gBattleScripting b _0804A5D0 .pool _0804A5AC: ldr r0, [r5] ldrb r1, [r0, 0x10] movs r0, 0x64 muls r0, r1 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x38 bl GetMonData cmp r0, 0x64 bne _0804A5E8 ldr r1, [r5] adds r1, 0x53 ldrb r0, [r1] lsrs r0, 1 strb r0, [r1] ldr r1, =gBattleScripting movs r2, 0 _0804A5D0: movs r0, 0x5 strb r0, [r1, 0x1C] ldr r0, =gBattleMoveDamage str r2, [r0] b _0804ACB2 .pool _0804A5E8: ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x8 ands r0, r1 cmp r0, 0 bne _0804A616 ldr r0, =gBattleMons ldrh r0, [r0, 0x28] cmp r0, 0 beq _0804A616 ldr r0, [r5] ldrb r0, [r0, 0x12] cmp r0, 0 bne _0804A616 bl sub_805EA60 ldr r0, =0x00000161 bl PlayBGM ldr r1, [r5] ldrb r0, [r1, 0x12] adds r0, 0x1 strb r0, [r1, 0x12] _0804A616: ldr r5, =gBattleStruct ldr r0, [r5] ldrb r1, [r0, 0x10] movs r0, 0x64 muls r0, r1 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0x39 bl GetMonData cmp r0, 0 bne _0804A630 b _0804A824 _0804A630: ldr r0, [r5] adds r0, 0x53 ldrb r0, [r0] movs r3, 0x1 ands r3, r0 cmp r3, 0 beq _0804A664 ldr r1, =gBattleMoveDamage mov r2, r9 ldrh r0, [r2] str r0, [r1] mov r9, r1 b _0804A66A .pool _0804A664: ldr r0, =gBattleMoveDamage str r3, [r0] mov r9, r0 _0804A66A: cmp r4, 0x19 bne _0804A67A ldr r0, =gUnknown_02024402 ldrh r1, [r0] mov r2, r9 ldr r0, [r2] adds r0, r1 str r0, [r2] _0804A67A: cmp r4, 0x28 bne _0804A68E mov r4, r9 ldr r1, [r4] movs r0, 0x96 muls r0, r1 movs r1, 0x64 bl __divsi3 str r0, [r4] _0804A68E: ldr r5, =gBattleTypeFlags ldr r0, [r5] movs r1, 0x8 ands r0, r1 cmp r0, 0 beq _0804A6AA ldr r4, =gBattleMoveDamage ldr r1, [r4] movs r0, 0x96 muls r0, r1 movs r1, 0x64 bl __divsi3 str r0, [r4] _0804A6AA: ldr r4, =gBattleStruct ldr r0, [r4] ldrb r1, [r0, 0x10] movs r0, 0x64 muls r0, r1 ldr r1, =gPlayerParty adds r0, r1 bl sub_806E8A8 lsls r0, 24 cmp r0, 0 beq _0804A714 ldr r0, [r5] movs r1, 0x80 lsls r1, 15 ands r0, r1 cmp r0, 0 beq _0804A6F8 ldr r0, [r4] ldrb r0, [r0, 0x10] cmp r0, 0x2 bls _0804A6F8 ldr r7, =0x00000149 ldr r0, =gBattleMoveDamage mov r9, r0 b _0804A71A .pool _0804A6F8: ldr r4, =gBattleMoveDamage ldr r1, [r4] movs r0, 0x96 muls r0, r1 movs r1, 0x64 bl __divsi3 str r0, [r4] movs r7, 0xA5 lsls r7, 1 mov r9, r4 b _0804A71A .pool _0804A714: ldr r7, =0x00000149 ldr r1, =gBattleMoveDamage mov r9, r1 _0804A71A: ldr r0, =gBattleTypeFlags ldr r1, [r0] movs r0, 0x1 ands r1, r0 cmp r1, 0 beq _0804A786 ldr r0, =gBattlePartyID ldr r1, =gBattleStruct ldr r4, [r1] ldrh r0, [r0, 0x4] adds r5, r1, 0 ldr r3, =gBitTable ldr r2, =gAbsentBankFlags ldrb r1, [r4, 0x10] cmp r0, r1 bne _0804A76C ldrb r1, [r2] ldr r0, [r3, 0x8] ands r1, r0 cmp r1, 0 bne _0804A76C adds r1, r4, 0 adds r1, 0x8F movs r0, 0x2 strb r0, [r1] b _0804A78E .pool _0804A76C: ldrb r2, [r2] ldr r0, [r3] ands r2, r0 cmp r2, 0 bne _0804A77E ldr r0, [r5] adds r0, 0x8F strb r2, [r0] b _0804A78E _0804A77E: ldr r0, [r5] adds r0, 0x8F movs r1, 0x2 b _0804A78C _0804A786: ldr r0, =gBattleStruct ldr r0, [r0] adds r0, 0x8F _0804A78C: strb r1, [r0] _0804A78E: ldr r1, =gBattleTextBuff1 movs r2, 0 mov r12, r2 movs r3, 0xFD strb r3, [r1] movs r5, 0x4 strb r5, [r1, 0x1] ldr r6, =gBattleStruct ldr r2, [r6] movs r4, 0x8F adds r4, r2 mov r8, r4 ldrb r0, [r4] strb r0, [r1, 0x2] ldrb r0, [r2, 0x10] strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldr r1, =gBattleTextBuff2 strb r3, [r1] mov r0, r12 strb r0, [r1, 0x1] strb r7, [r1, 0x2] movs r4, 0xFF lsls r4, 8 ands r7, r4 asrs r0, r7, 8 strb r0, [r1, 0x3] movs r0, 0x1 negs r0, r0 strb r0, [r1, 0x4] ldr r1, =gUnknown_02022F78 strb r3, [r1] movs r0, 0x1 strb r0, [r1, 0x1] strb r5, [r1, 0x2] movs r0, 0x5 strb r0, [r1, 0x3] mov r0, r9 ldr r2, [r0] strb r2, [r1, 0x4] adds r0, r2, 0 ands r0, r4 asrs r0, 8 strb r0, [r1, 0x5] movs r0, 0xFF lsls r0, 16 ands r0, r2 asrs r0, 16 strb r0, [r1, 0x6] lsrs r2, 24 strb r2, [r1, 0x7] movs r0, 0x1 negs r0, r0 strb r0, [r1, 0x8] mov r2, r8 ldrb r1, [r2] movs r0, 0xD bl b_std_message ldr r0, [r6] ldrb r1, [r0, 0x10] movs r0, 0x64 muls r0, r1 ldr r1, =gPlayerParty adds r0, r1 ldr r3, =gBattleMons ldr r1, =gUnknown_0202420D ldrb r2, [r1] movs r1, 0x58 muls r1, r2 adds r1, r3 ldrh r1, [r1] bl sub_806DADC _0804A824: ldr r0, =gBattleStruct ldr r1, [r0] adds r1, 0x53 ldrb r0, [r1] lsrs r0, 1 strb r0, [r1] b _0804A92A .pool _0804A850: ldr r0, =gBattleExecBuffer ldr r2, [r0] cmp r2, 0 beq _0804A85A b _0804ACB2 _0804A85A: ldr r1, =gBattleBufferB ldr r7, =gBattleStruct ldr r0, [r7] adds r0, 0x8F ldrb r0, [r0] lsls r0, 9 adds r0, r1 strb r2, [r0] ldr r0, [r7] ldrb r0, [r0, 0x10] movs r6, 0x64 muls r0, r6 ldr r5, =gPlayerParty adds r0, r5 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _0804A92A ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r6 adds r0, r5 movs r1, 0x38 bl GetMonData cmp r0, 0x64 beq _0804A92A ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r6 adds r0, r5 movs r1, 0x3A bl GetMonData ldr r4, =gBattleResources ldr r1, [r4] ldr r1, [r1, 0x10] strh r0, [r1] ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r6 adds r0, r5 movs r1, 0x3B bl GetMonData ldr r1, [r4] ldr r1, [r1, 0x10] strh r0, [r1, 0x2] ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r6 adds r0, r5 movs r1, 0x3C bl GetMonData ldr r1, [r4] ldr r1, [r1, 0x10] strh r0, [r1, 0x4] ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r6 adds r0, r5 movs r1, 0x3D bl GetMonData ldr r1, [r4] ldr r1, [r1, 0x10] strh r0, [r1, 0x6] ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r6 adds r0, r5 movs r1, 0x3E bl GetMonData ldr r1, [r4] ldr r1, [r1, 0x10] strh r0, [r1, 0x8] ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r6 adds r0, r5 movs r1, 0x3F bl GetMonData ldr r1, [r4] ldr r1, [r1, 0x10] strh r0, [r1, 0xA] ldr r4, =gActiveBank ldr r1, [r7] adds r0, r1, 0 adds r0, 0x8F ldrb r0, [r0] strb r0, [r4] ldrb r1, [r1, 0x10] ldr r0, =gBattleMoveDamage ldrh r2, [r0] movs r0, 0 bl dp01_build_cmdbuf_x19_a_bb ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution _0804A92A: ldr r1, =gBattleScripting ldrb r0, [r1, 0x1C] adds r0, 0x1 strb r0, [r1, 0x1C] b _0804ACB2 .pool _0804A954: ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 beq _0804A95E b _0804ACB2 _0804A95E: ldr r1, =gActiveBank ldr r0, =gBattleStruct ldr r4, [r0] adds r0, r4, 0 adds r0, 0x8F ldrb r0, [r0] strb r0, [r1] ldr r3, =gBattleBufferB ldrb r2, [r1] lsls r1, r2, 9 adds r0, r1, r3 ldrb r0, [r0] cmp r0, 0x21 beq _0804A97C b _0804AC28 _0804A97C: adds r0, r3, 0x1 adds r0, r1, r0 ldrb r0, [r0] cmp r0, 0xB beq _0804A988 b _0804AC28 _0804A988: ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x8 ands r0, r1 cmp r0, 0 beq _0804A9B2 ldr r0, =gBattlePartyID lsls r1, r2, 1 adds r1, r0 ldrh r0, [r1] ldrb r4, [r4, 0x10] cmp r0, r4 bne _0804A9B2 adds r1, r0, 0 movs r0, 0x64 muls r0, r1 ldr r1, =gPlayerParty adds r0, r1 adds r1, r2, 0 bl sub_805E990 _0804A9B2: ldr r1, =gBattleTextBuff1 movs r3, 0xFD strb r3, [r1] movs r0, 0x4 strb r0, [r1, 0x1] ldr r6, =gActiveBank ldrb r0, [r6] strb r0, [r1, 0x2] ldr r4, =gBattleStruct mov r9, r4 ldr r2, [r4] ldrb r0, [r2, 0x10] strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldr r4, =gBattleTextBuff2 strb r3, [r4] movs r0, 0x1 strb r0, [r4, 0x1] strb r0, [r4, 0x2] movs r0, 0x3 strb r0, [r4, 0x3] ldrb r0, [r2, 0x10] movs r1, 0x64 mov r8, r1 mov r2, r8 muls r2, r0 adds r0, r2, 0 ldr r7, =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, =gUnknown_03005D54 ldr r1, =gBitTable mov r4, r9 ldr r5, [r4] ldrb r0, [r5, 0x10] lsls r0, 2 adds r0, r1 ldr r0, [r0] ldrb r1, [r2] orrs r0, r1 strb r0, [r2] ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DABBD str r0, [r1] ldr r4, =gBattleMoveDamage ldr r2, =gBattleBufferB ldrb r1, [r6] lsls r1, 9 adds r0, r2, 0x2 adds r0, r1, r0 ldrb r3, [r0] adds r2, 0x3 adds r1, r2 ldrb r0, [r1] lsls r0, 8 orrs r3, r0 str r3, [r4] ldrb r0, [r5, 0x10] mov r1, r8 muls r1, r0 adds r0, r1, 0 adds r0, r7 movs r1, 0 bl happiness_algorithm ldr r1, =gBattlePartyID mov r2, r9 ldr r0, [r2] ldrb r2, [r0, 0x10] ldrh r0, [r1] cmp r0, r2 bne _0804AB1E ldr r4, =gBattleMons ldrh r0, [r4, 0x28] cmp r0, 0 beq _0804AB1E mov r0, r8 muls r0, r2 adds r0, r7 movs r1, 0x38 bl GetMonData adds r1, r4, 0 adds r1, 0x2A strb r0, [r1] mov r1, r9 ldr r0, [r1] ldrb r0, [r0, 0x10] mov r2, r8 muls r2, r0 adds r0, r2, 0 adds r0, r7 movs r1, 0x39 bl GetMonData strh r0, [r4, 0x28] mov r1, r9 ldr r0, [r1] ldrb r0, [r0, 0x10] mov r2, r8 muls r2, r0 adds r0, r2, 0 adds r0, r7 movs r1, 0x3A bl GetMonData strh r0, [r4, 0x2C] mov r1, r9 ldr r0, [r1] ldrb r0, [r0, 0x10] mov r2, r8 muls r2, r0 adds r0, r2, 0 adds r0, r7 movs r1, 0x3B bl GetMonData strh r0, [r4, 0x2] mov r1, r9 ldr r0, [r1] ldrb r0, [r0, 0x10] mov r2, r8 muls r2, r0 adds r0, r2, 0 adds r0, r7 movs r1, 0x3C bl GetMonData strh r0, [r4, 0x4] mov r1, r9 ldr r0, [r1] ldrb r0, [r0, 0x10] mov r2, r8 muls r2, r0 adds r0, r2, 0 adds r0, r7 movs r1, 0x3D bl GetMonData strh r0, [r4, 0x6] mov r1, r9 ldr r0, [r1] ldrb r0, [r0, 0x10] mov r2, r8 muls r2, r0 adds r0, r2, 0 adds r0, r7 movs r1, 0x3D bl GetMonData strh r0, [r4, 0x6] mov r1, r9 ldr r0, [r1] ldrb r0, [r0, 0x10] mov r2, r8 muls r2, r0 adds r0, r2, 0 adds r0, r7 movs r1, 0x3E bl GetMonData strh r0, [r4, 0x8] mov r1, r9 ldr r0, [r1] ldrb r0, [r0, 0x10] mov r2, r8 muls r2, r0 adds r0, r2, 0 adds r0, r7 movs r1, 0x3F bl GetMonData strh r0, [r4, 0xA] _0804AB1E: ldr r0, =gBattlePartyID ldr r7, =gBattleStruct ldr r1, [r7] ldrb r2, [r1, 0x10] ldrh r0, [r0, 0x4] cmp r0, r2 beq _0804AB2E b _0804AC2E _0804AB2E: ldr r6, =gBattleMons movs r4, 0xD8 adds r4, r6 mov r8, r4 ldrh r0, [r4] cmp r0, 0 beq _0804AC2E ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _0804AC2E movs r5, 0x64 adds r0, r2, 0 muls r0, r5 ldr r4, =gPlayerParty adds r0, r4 movs r1, 0x38 bl GetMonData adds r1, r6, 0 adds r1, 0xDA strb r0, [r1] ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r5 adds r0, r4 movs r1, 0x39 bl GetMonData mov r1, r8 strh r0, [r1] ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r5 adds r0, r4 movs r1, 0x3A bl GetMonData adds r1, r6, 0 adds r1, 0xDC strh r0, [r1] ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r5 adds r0, r4 movs r1, 0x3B bl GetMonData adds r1, r6, 0 adds r1, 0xB2 strh r0, [r1] ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r5 adds r0, r4 movs r1, 0x3C bl GetMonData adds r1, r6, 0 adds r1, 0xB4 strh r0, [r1] ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r5 adds r0, r4 movs r1, 0x3D bl GetMonData movs r2, 0xB6 adds r2, r6 mov r8, r2 strh r0, [r2] ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r5 adds r0, r4 movs r1, 0x3D bl GetMonData mov r1, r8 strh r0, [r1] ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r5 adds r0, r4 movs r1, 0x3E bl GetMonData adds r1, r6, 0 adds r1, 0xB8 strh r0, [r1] b _0804AC2E .pool _0804AC28: ldr r1, =gBattleMoveDamage movs r0, 0 str r0, [r1] _0804AC2E: ldr r1, =gBattleScripting movs r0, 0x5 strb r0, [r1, 0x1C] b _0804ACB2 .pool _0804AC40: ldr r0, =gBattleMoveDamage ldr r0, [r0] cmp r0, 0 beq _0804AC58 ldr r1, =gBattleScripting movs r0, 0x3 strb r0, [r1, 0x1C] b _0804ACB2 .pool _0804AC58: ldr r2, =gBattleStruct ldr r1, [r2] ldrb r0, [r1, 0x10] adds r0, 0x1 strb r0, [r1, 0x10] ldr r0, [r2] ldrb r0, [r0, 0x10] cmp r0, 0x5 bhi _0804AC7C ldr r1, =gBattleScripting movs r0, 0x2 strb r0, [r1, 0x1C] b _0804ACB2 .pool _0804AC7C: ldr r1, =gBattleScripting movs r0, 0x6 strb r0, [r1, 0x1C] b _0804ACB2 .pool _0804AC88: ldr r0, =gBattleExecBuffer ldr r5, [r0] cmp r5, 0 bne _0804ACB2 ldr r4, =gBattleMons ldr r2, =gUnknown_0202420D 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, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] _0804ACB2: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_804A32C thumb_func_start sub_804ACD0 sub_804ACD0: @ 804ACD0 push {r4-r7,lr} mov r7, r8 push {r7} movs r6, 0 ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 beq _0804ACE2 b _0804AF22 _0804ACE2: ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x80 lsls r1, 15 ands r0, r1 cmp r0, 0 beq _0804AD48 ldr r0, =gUnknown_02038BCE ldrh r1, [r0] ldr r0, =0x00000c03 cmp r1, r0 bne _0804AD48 movs r5, 0 _0804ACFC: movs r0, 0x64 adds r1, r5, 0 muls r1, r0 ldr r0, =gPlayerParty adds r4, r1, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0804AD2C adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 bne _0804AD2C adds r0, r4, 0 movs r1, 0x39 bl GetMonData adds r0, r6, r0 lsls r0, 16 lsrs r6, r0, 16 _0804AD2C: adds r5, 0x1 cmp r5, 0x2 ble _0804ACFC b _0804ADA8 .pool _0804AD48: movs r5, 0 _0804AD4A: movs r0, 0x64 adds r1, r5, 0 muls r1, r0 ldr r0, =gPlayerParty adds r4, r1, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0804ADA2 adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 bne _0804ADA2 ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x80 lsls r1, 11 ands r0, r1 cmp r0, 0 beq _0804AD94 ldr r0, =gBattleStruct ldr r0, [r0] movs r1, 0xA8 lsls r1, 2 adds r0, r1 ldrb r1, [r0] ldr r2, =gBitTable lsls r0, r5, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _0804ADA2 _0804AD94: adds r0, r4, 0 movs r1, 0x39 bl GetMonData adds r0, r6, r0 lsls r0, 16 lsrs r6, r0, 16 _0804ADA2: adds r5, 0x1 cmp r5, 0x5 ble _0804AD4A _0804ADA8: cmp r6, 0 bne _0804ADB6 ldr r0, =gBattleOutcome ldrb r1, [r0] movs r2, 0x2 orrs r1, r2 strb r1, [r0] _0804ADB6: movs r6, 0 movs r5, 0 _0804ADBA: movs r0, 0x64 adds r1, r5, 0 muls r1, r0 ldr r0, =gEnemyParty adds r4, r1, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0804AE10 adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 bne _0804AE10 ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x80 lsls r1, 11 ands r0, r1 cmp r0, 0 beq _0804AE02 ldr r0, =gBattleStruct ldr r0, [r0] ldr r1, =0x000002a1 adds r0, r1 ldrb r1, [r0] ldr r2, =gBitTable lsls r0, r5, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _0804AE10 _0804AE02: adds r0, r4, 0 movs r1, 0x39 bl GetMonData adds r0, r6, r0 lsls r0, 16 lsrs r6, r0, 16 _0804AE10: adds r5, 0x1 cmp r5, 0x5 ble _0804ADBA ldr r2, =gBattleOutcome cmp r6, 0 bne _0804AE24 ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] _0804AE24: ldrb r0, [r2] cmp r0, 0 bne _0804AF1A ldr r0, =gBattleTypeFlags ldr r1, [r0] ldr r2, =0x02000002 ands r1, r2 mov r8, r0 cmp r1, 0 beq _0804AF1A movs r3, 0 movs r5, 0 ldr r0, =gNoOfAllBanks ldrb r1, [r0] mov r12, r0 ldr r7, =gBattlescriptCurrInstr cmp r3, r1 bge _0804AE70 ldr r0, =gHitMarker movs r6, 0x80 lsls r6, 21 ldr r4, [r0] adds r2, r1, 0 ldr r1, =gSpecialStatuses _0804AE54: adds r0, r6, 0 lsls r0, r5 ands r0, r4 cmp r0, 0 beq _0804AE68 ldrb r0, [r1] lsls r0, 25 cmp r0, 0 blt _0804AE68 adds r3, 0x1 _0804AE68: adds r1, 0x28 adds r5, 0x2 cmp r5, r2 blt _0804AE54 _0804AE70: movs r2, 0 movs r5, 0x1 mov r4, r12 ldrb r1, [r4] cmp r5, r1 bge _0804AEAA ldr r0, =gHitMarker movs r4, 0x80 lsls r4, 21 mov r12, r4 ldr r6, [r0] ldr r0, =gSpecialStatuses adds r4, r1, 0 adds r1, r0, 0 adds r1, 0x14 _0804AE8E: mov r0, r12 lsls r0, r5 ands r0, r6 cmp r0, 0 beq _0804AEA2 ldrb r0, [r1] lsls r0, 25 cmp r0, 0 blt _0804AEA2 adds r2, 0x1 _0804AEA2: adds r1, 0x28 adds r5, 0x2 cmp r5, r4 blt _0804AE8E _0804AEAA: mov r1, r8 ldr r0, [r1] movs r1, 0x40 ands r0, r1 cmp r0, 0 beq _0804AEF0 adds r0, r2, r3 cmp r0, 0x1 bgt _0804AEF8 b _0804AF12 .pool _0804AEF0: cmp r2, 0 beq _0804AF12 cmp r3, 0 beq _0804AF12 _0804AEF8: 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 _0804AF22 _0804AF12: ldr r0, [r7] adds r0, 0x5 str r0, [r7] b _0804AF22 _0804AF1A: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0804AF22: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_804ACD0 thumb_func_start sub_804AF30 sub_804AF30: @ 804AF30 ldr r1, =gBattleMoveFlags movs r0, 0 strb r0, [r1] ldr r0, =gBattleScripting movs r2, 0 movs r1, 0x1 strb r1, [r0, 0xE] ldr r0, =gCritMultiplier strb r1, [r0] ldr r0, =gBattleCommunication strb r2, [r0, 0x3] strb r2, [r0, 0x6] ldr r2, =gHitMarker ldr r0, [r2] subs r1, 0x42 ands r0, r1 ldr r1, =0xffffbfff ands r0, r1 str r0, [r2] bx lr .pool thumb_func_end sub_804AF30 thumb_func_start atk25_cmd25 atk25_cmd25: @ 804AF70 push {lr} bl sub_804AF30 ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .pool thumb_func_end atk25_cmd25 thumb_func_start atk26_80225F0_storebyteforjump atk26_80225F0_storebyteforjump: @ 804AF88 ldr r3, =gUnknown_02024212 ldr r2, =gBattlescriptCurrInstr ldr r0, [r2] ldrb r1, [r0, 0x1] strb r1, [r3] adds r0, 0x2 str r0, [r2] bx lr .pool thumb_func_end atk26_80225F0_storebyteforjump thumb_func_start atk27_cmd27 atk27_cmd27: @ 804AFA0 push {lr} ldr r1, =gUnknown_02024212 ldrb r0, [r1] subs r0, 0x1 strb r0, [r1] lsls r0, 24 cmp r0, 0 bne _0804AFC4 ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0804AFDE .pool _0804AFC4: ldr r3, =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] _0804AFDE: pop {r0} bx r0 .pool thumb_func_end atk27_cmd27 thumb_func_start atk28_goto atk28_goto: @ 804AFE8 ldr r3, =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 .pool thumb_func_end atk28_goto thumb_func_start atk29_jumpifbyte atk29_jumpifbyte: @ 804B008 push {r4-r6,lr} ldr r3, =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 _0804B0A0 lsls r0, r6, 2 ldr r1, =_0804B054 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0804B054: .4byte _0804B06C .4byte _0804B074 .4byte _0804B07C .4byte _0804B084 .4byte _0804B08C .4byte _0804B096 _0804B06C: ldrb r0, [r5] cmp r0, r4 bne _0804B0A0 b _0804B09E _0804B074: ldrb r0, [r5] cmp r0, r4 beq _0804B0A0 b _0804B09E _0804B07C: ldrb r0, [r5] cmp r0, r4 bls _0804B0A0 b _0804B09E _0804B084: ldrb r0, [r5] cmp r0, r4 bcs _0804B0A0 b _0804B09E _0804B08C: ldrb r0, [r5] ands r4, r0 cmp r4, 0 beq _0804B0A0 b _0804B09E _0804B096: ldrb r0, [r5] ands r4, r0 cmp r4, 0 bne _0804B0A0 _0804B09E: str r2, [r3] _0804B0A0: pop {r4-r6} pop {r0} bx r0 thumb_func_end atk29_jumpifbyte thumb_func_start sub_804B0A8 sub_804B0A8: @ 804B0A8 push {r4-r6,lr} ldr r3, =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 _0804B148 lsls r0, r6, 2 ldr r1, =_0804B0FC adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0804B0FC: .4byte _0804B114 .4byte _0804B11C .4byte _0804B124 .4byte _0804B12C .4byte _0804B134 .4byte _0804B13E _0804B114: ldrh r0, [r5] cmp r0, r4 bne _0804B148 b _0804B146 _0804B11C: ldrh r0, [r5] cmp r0, r4 beq _0804B148 b _0804B146 _0804B124: ldrh r0, [r5] cmp r0, r4 bls _0804B148 b _0804B146 _0804B12C: ldrh r0, [r5] cmp r0, r4 bcs _0804B148 b _0804B146 _0804B134: ldrh r0, [r5] ands r4, r0 cmp r4, 0 beq _0804B148 b _0804B146 _0804B13E: ldrh r0, [r5] ands r4, r0 cmp r4, 0 bne _0804B148 _0804B146: str r2, [r3] _0804B148: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_804B0A8 thumb_func_start sub_804B150 sub_804B150: @ 804B150 push {r4-r6,lr} ldr r3, =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 _0804B1FC lsls r0, r6, 2 ldr r1, =_0804B1B0 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0804B1B0: .4byte _0804B1C8 .4byte _0804B1D0 .4byte _0804B1D8 .4byte _0804B1E0 .4byte _0804B1E8 .4byte _0804B1F2 _0804B1C8: ldr r0, [r5] cmp r0, r4 bne _0804B1FC b _0804B1FA _0804B1D0: ldr r0, [r5] cmp r0, r4 beq _0804B1FC b _0804B1FA _0804B1D8: ldr r0, [r5] cmp r0, r4 bls _0804B1FC b _0804B1FA _0804B1E0: ldr r0, [r5] cmp r0, r4 bcs _0804B1FC b _0804B1FA _0804B1E8: ldr r0, [r5] ands r0, r4 cmp r0, 0 beq _0804B1FC b _0804B1FA _0804B1F2: ldr r0, [r5] ands r0, r4 cmp r0, 0 bne _0804B1FC _0804B1FA: str r2, [r3] _0804B1FC: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_804B150 thumb_func_start sub_804B204 sub_804B204: @ 804B204 push {r4-r7,lr} ldr r2, =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 _0804B27C ldrb r0, [r5] ldrb r7, [r4] cmp r0, r7 beq _0804B260 adds r0, r3, 0 b _0804B278 .pool _0804B260: adds r5, 0x1 adds r4, 0x1 adds r0, r1, 0x1 lsls r0, 24 lsrs r1, r0, 24 cmp r1, r6 bcs _0804B27C ldrb r0, [r5] ldrb r3, [r4] cmp r0, r3 beq _0804B260 ldr r0, [r2] _0804B278: adds r0, 0xE str r0, [r2] _0804B27C: cmp r1, r6 bne _0804B284 mov r7, r12 str r7, [r2] _0804B284: pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_804B204 thumb_func_start sub_804B28C sub_804B28C: @ 804B28C push {r4-r7,lr} movs r7, 0 ldr r3, =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 _0804B2F6 _0804B2DA: ldrb r0, [r5] ldrb r2, [r4] cmp r0, r2 bne _0804B2E8 adds r0, r7, 0x1 lsls r0, 24 lsrs r7, r0, 24 _0804B2E8: adds r5, 0x1 adds r4, 0x1 adds r0, r1, 0x1 lsls r0, 24 lsrs r1, r0, 24 cmp r1, r6 bcc _0804B2DA _0804B2F6: cmp r7, r6 beq _0804B304 mov r0, r12 b _0804B308 .pool _0804B304: ldr r0, [r3] adds r0, 0xE _0804B308: str r0, [r3] pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_804B28C thumb_func_start sub_804B310 sub_804B310: @ 804B310 ldr r3, =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 .pool thumb_func_end sub_804B310 thumb_func_start sub_804B338 sub_804B338: @ 804B338 ldr r3, =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 .pool thumb_func_end sub_804B338 thumb_func_start sub_804B364 sub_804B364: @ 804B364 ldr r3, =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 .pool thumb_func_end sub_804B364 thumb_func_start atk31_copyarray atk31_copyarray: @ 804B390 push {r4-r6,lr} ldr r3, =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 _0804B3D4 _0804B3C6: adds r0, r6, r2 adds r1, r5, r2 ldrb r1, [r1] strb r1, [r0] adds r2, 0x1 cmp r2, r4 blt _0804B3C6 _0804B3D4: ldr r0, [r3] adds r0, 0xA str r0, [r3] pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end atk31_copyarray thumb_func_start atk32_memcpy_with_offset atk32_memcpy_with_offset: @ 804B3E4 push {r4-r7,lr} ldr r3, =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 _0804B440 _0804B42E: 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 _0804B42E _0804B440: ldr r0, [r3] adds r0, 0xE str r0, [r3] pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk32_memcpy_with_offset thumb_func_start atk33_orbyte atk33_orbyte: @ 804B450 ldr r3, =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 .pool thumb_func_end atk33_orbyte thumb_func_start atk34_orhalfword atk34_orhalfword: @ 804B47C push {r4,lr} ldr r4, =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 .pool thumb_func_end atk34_orhalfword thumb_func_start atk35_orword atk35_orword: @ 804B4B4 push {r4,lr} ldr r4, =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 .pool thumb_func_end atk35_orword thumb_func_start atk36_bicbyte atk36_bicbyte: @ 804B4F8 ldr r3, =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 .pool thumb_func_end atk36_bicbyte thumb_func_start atk37_bichalfword atk37_bichalfword: @ 804B524 push {r4,lr} ldr r4, =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 .pool thumb_func_end atk37_bichalfword thumb_func_start atk38_bicword atk38_bicword: @ 804B55C push {r4,lr} ldr r4, =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 .pool thumb_func_end atk38_bicword thumb_func_start atk39_pause atk39_pause: @ 804B5A0 push {r4,r5,lr} ldr r0, =gBattleExecBuffer ldr r4, [r0] cmp r4, 0 bne _0804B5CC ldr r5, =gBattlescriptCurrInstr ldr r2, [r5] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldr r3, =gUnknown_0202432C ldrh r0, [r3] adds r0, 0x1 strh r0, [r3] lsls r0, 16 lsrs r0, 16 cmp r0, r1 bcc _0804B5CC strh r4, [r3] adds r0, r2, 0x3 str r0, [r5] _0804B5CC: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end atk39_pause thumb_func_start sub_804B5E0 sub_804B5E0: @ 804B5E0 push {lr} ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 bne _0804B5F2 ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] _0804B5F2: pop {r0} bx r0 .pool thumb_func_end sub_804B5E0 thumb_func_start atk3B_8022C68 atk3B_8022C68: @ 804B600 push {lr} ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] cmp r0, 0 bne _0804B620 ldr r0, =gActiveBank ldr r1, =gBankTarget b _0804B624 .pool _0804B620: ldr r0, =gActiveBank ldr r1, =gBankAttacker _0804B624: ldrb r1, [r1] strb r1, [r0] ldr r0, =gBattleMoveDamage ldrh r1, [r0] movs r0, 0 bl dp01_build_cmdbuf_x18_0_aa_health_bar_update ldr r0, =gActiveBank ldrb r0, [r0] bl dp01_battle_side_mark_buffer_for_execution ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] pop {r0} bx r0 .pool thumb_func_end atk3B_8022C68 thumb_func_start atk3C_return atk3C_return: @ 804B658 push {lr} bl b_movescr_stack_pop_cursor pop {r0} bx r0 thumb_func_end atk3C_return thumb_func_start sub_804B664 sub_804B664: @ 804B664 push {lr} ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x80 lsls r1, 11 ands r0, r1 cmp r0, 0 beq _0804B67C ldr r0, =gBankAttacker ldrb r0, [r0] bl sub_81A5718 _0804B67C: ldr r0, =gBattleMoveFlags movs r1, 0 strb r1, [r0] ldr r0, =gActiveBank strb r1, [r0] ldr r1, =gFightStateTracker movs r0, 0xB strb r0, [r1] pop {r0} bx r0 .pool thumb_func_end sub_804B664 thumb_func_start atk3E_end2 atk3E_end2: @ 804B6A4 ldr r1, =gActiveBank movs r0, 0 strb r0, [r1] ldr r1, =gFightStateTracker movs r0, 0xB strb r0, [r1] bx lr .pool thumb_func_end atk3E_end2 thumb_func_start atk3F_end3 atk3F_end3: @ 804B6BC push {lr} bl b_movescr_stack_pop_cursor ldr r3, =gBattleResources ldr r0, [r3] ldr r0, [r0, 0xC] adds r1, r0, 0 adds r1, 0x20 ldrb r0, [r1] cmp r0, 0 beq _0804B6D6 subs r0, 0x1 strb r0, [r1] _0804B6D6: ldr r2, =gBattleMainFunc ldr r0, [r3] ldr r1, [r0, 0xC] adds r0, r1, 0 adds r0, 0x20 ldrb r0, [r0] lsls r0, 2 adds r1, r0 ldr r0, [r1] str r0, [r2] pop {r0} bx r0 .pool thumb_func_end atk3F_end3 thumb_func_start atk41_call atk41_call: @ 804B6F8 push {r4,lr} ldr r4, =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 .pool thumb_func_end atk41_call thumb_func_start atk42_jumpiftype2 atk42_jumpiftype2: @ 804B728 push {r4,lr} ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] bl get_battle_side_of_something lsls r0, 24 lsrs r0, 24 ldr r3, [r4] ldr r2, =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 _0804B756 adds r0, 0x22 ldrb r0, [r0] cmp r2, r0 bne _0804B778 _0804B756: 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 _0804B77C .pool _0804B778: adds r0, r3, 0x7 str r0, [r4] _0804B77C: pop {r4} pop {r0} bx r0 thumb_func_end atk42_jumpiftype2 thumb_func_start sub_804B784 sub_804B784: @ 804B784 push {r4,lr} sub sp, 0x4 ldr r4, =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 _0804B7C0 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 _0804B7C6 .pool _0804B7C0: ldr r0, [r4] adds r0, 0x6 str r0, [r4] _0804B7C6: add sp, 0x4 pop {r4} pop {r0} bx r0 thumb_func_end sub_804B784 thumb_func_start sub_804B7D0 sub_804B7D0: @ 804B7D0 ldr r0, =gBankAttacker ldrb r0, [r0] ldr r1, =gBattleStruct ldr r1, [r1] adds r0, r1 adds r0, 0x54 movs r1, 0x1 strb r1, [r0] bx lr .pool thumb_func_end sub_804B7D0 thumb_func_start atk46_cmd46 atk46_cmd46: @ 804B7EC push {r4-r6,lr} ldr r5, =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r6, =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 _0804B822 cmp r0, 0x11 beq _0804B822 cmp r0, 0x2 bne _0804B848 _0804B822: ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r1, [r0, 0x2] ldrh r2, [r3] movs r0, 0 bl dp01_build_cmdbuf_x34_a_bb_aka_battle_anim ldr r0, =gActiveBank ldrb r0, [r0] bl dp01_battle_side_mark_buffer_for_execution ldr r0, [r4] adds r0, 0x7 str r0, [r4] b _0804B8AA .pool _0804B848: ldr r0, =gHitMarker ldr r0, [r0] movs r1, 0x80 ands r0, r1 cmp r0, 0 beq _0804B868 adds r0, r2, 0x7 bl b_movescr_stack_push ldr r0, =gUnknown_082DABB9 b _0804B8A8 .pool _0804B868: adds r0, r4, 0 subs r0, 0xA lsls r0, 24 lsrs r0, 24 cmp r0, 0x3 bls _0804B894 ldr r1, =gStatuses3 ldrb r0, [r6] lsls r0, 2 adds r0, r1 ldr r0, [r0] ldr r1, =0x000400c0 ands r0, r1 cmp r0, 0 beq _0804B894 adds r0, r2, 0x7 b _0804B8A8 .pool _0804B894: ldrb r1, [r2, 0x2] ldrh r2, [r3] movs r0, 0 bl dp01_build_cmdbuf_x34_a_bb_aka_battle_anim ldrb r0, [r6] bl dp01_battle_side_mark_buffer_for_execution ldr r0, [r5] adds r0, 0x7 _0804B8A8: str r0, [r5] _0804B8AA: pop {r4-r6} pop {r0} bx r0 thumb_func_end atk46_cmd46 thumb_func_start sub_804B8B0 sub_804B8B0: @ 804B8B0 push {r4-r7,lr} ldr r6, =gBattlescriptCurrInstr ldr r0, [r6] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r7, =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 _0804B8FA cmp r0, 0x11 beq _0804B8FA cmp r0, 0x2 bne _0804B920 _0804B8FA: ldrb r1, [r3] ldrh r2, [r4] movs r0, 0 bl dp01_build_cmdbuf_x34_a_bb_aka_battle_anim ldr r0, =gActiveBank ldrb r0, [r0] bl dp01_battle_side_mark_buffer_for_execution ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0xA str r0, [r1] b _0804B976 .pool _0804B920: ldr r0, =gHitMarker ldr r0, [r0] movs r1, 0x80 ands r0, r1 cmp r0, 0 beq _0804B934 adds r0, r2, 0 b _0804B972 .pool _0804B934: adds r0, r5, 0 subs r0, 0xA lsls r0, 24 lsrs r0, 24 cmp r0, 0x3 bls _0804B960 ldr r1, =gStatuses3 ldrb r0, [r7] lsls r0, 2 adds r0, r1 ldr r0, [r0] ldr r1, =0x000400c0 ands r0, r1 cmp r0, 0 beq _0804B960 adds r0, r2, 0 b _0804B972 .pool _0804B960: ldrb r1, [r3] ldrh r2, [r4] movs r0, 0 bl dp01_build_cmdbuf_x34_a_bb_aka_battle_anim ldrb r0, [r7] bl dp01_battle_side_mark_buffer_for_execution ldr r0, [r6] _0804B972: adds r0, 0xA str r0, [r6] _0804B976: pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_804B8B0 thumb_func_start sub_804B97C sub_804B97C: @ 804B97C push {r4,lr} movs r3, 0 ldr r1, =gBattleScripting ldrb r0, [r1, 0x1A] movs r2, 0xF0 ands r2, r0 adds r4, r1, 0 cmp r2, 0x20 beq _0804B9AA cmp r2, 0x20 bgt _0804B99C cmp r2, 0x10 beq _0804B9A6 b _0804B9B4 .pool _0804B99C: cmp r2, 0x90 beq _0804B9AE cmp r2, 0xA0 beq _0804B9B2 b _0804B9B4 _0804B9A6: movs r3, 0xF b _0804B9B4 _0804B9AA: movs r3, 0x27 b _0804B9B4 _0804B9AE: movs r3, 0x16 b _0804B9B4 _0804B9B2: movs r3, 0x2E _0804B9B4: ldrb r1, [r4, 0x1A] movs r0, 0xF ands r0, r1 adds r0, r3, r0 subs r0, 0x1 movs r1, 0 strb r0, [r4, 0x10] strb r1, [r4, 0x11] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_804B97C thumb_func_start atk48_playstatchangeanimation atk48_playstatchangeanimation: @ 804B9D8 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, =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] str r3, [sp] bl get_battle_side_of_something ldr r2, =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 _0804BAEC movs r0, 0x2 ands r0, r1 movs r1, 0x15 cmp r0, 0 beq _0804BA18 movs r1, 0x2D _0804BA18: cmp r4, 0 beq _0804BAC0 movs r0, 0x1 mov r10, r0 ldr r0, =gUnknown_0202409C mov r9, r0 lsls r5, r1, 16 _0804BA26: adds r0, r4, 0 mov r1, r10 ands r0, r1 cmp r0, 0 beq _0804BAB2 ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r1, [r0, 0x3] movs r0, 0x8 ands r0, r1 cmp r0, 0 beq _0804BA58 ldr r0, =gActiveBank ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r7, r0 b _0804BAA0 .pool _0804BA58: ldr r6, =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, =gSideTimers adds r0, r1 ldrb r0, [r0, 0x4] ldr r3, [sp] cmp r0, 0 bne _0804BAB2 ldr r0, =gBattleMons ldrb r2, [r6] movs r1, 0x58 muls r2, r1 adds r0, r2, r0 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x1D beq _0804BAB2 cmp r0, 0x49 beq _0804BAB2 cmp r0, 0x33 bne _0804BA96 cmp r7, 0x6 beq _0804BAB2 _0804BA96: cmp r0, 0x34 bne _0804BA9E cmp r7, 0x1 beq _0804BAB2 _0804BA9E: adds r0, r7, r2 _0804BAA0: add r0, r9 ldrb r0, [r0] lsls r0, 24 asrs r0, 24 cmp r0, 0 ble _0804BAB2 lsrs r0, r5, 16 mov r8, r0 adds r3, 0x1 _0804BAB2: lsrs r4, 1 movs r1, 0x80 lsls r1, 9 adds r5, r1 adds r7, 0x1 cmp r4, 0 bne _0804BA26 _0804BAC0: ldr r0, =gBattlescriptCurrInstr mov r9, r0 cmp r3, 0x1 ble _0804BB4E ldr r0, [r0] ldrb r1, [r0, 0x3] movs r0, 0x2 ands r0, r1 movs r1, 0x39 mov r8, r1 cmp r0, 0 beq _0804BB4E movs r0, 0x3A b _0804BB4C .pool _0804BAEC: movs r0, 0x2 ands r0, r1 movs r1, 0xE cmp r0, 0 beq _0804BAF8 movs r1, 0x26 _0804BAF8: mov r9, r5 cmp r4, 0 beq _0804BB34 ldr r6, =gUnknown_0202409C adds r5, r2, 0 lsls r2, r1, 16 _0804BB04: movs r0, 0x1 ands r0, r4 cmp r0, 0 beq _0804BB26 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 _0804BB26 lsrs r1, r2, 16 mov r8, r1 adds r3, 0x1 _0804BB26: lsrs r4, 1 movs r0, 0x80 lsls r0, 9 adds r2, r0 adds r7, 0x1 cmp r4, 0 bne _0804BB04 _0804BB34: cmp r3, 0x1 ble _0804BB4E 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 _0804BB4E movs r0, 0x38 _0804BB4C: mov r8, r0 _0804BB4E: mov r1, r9 ldr r2, [r1] ldrb r1, [r2, 0x3] movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _0804BB6C cmp r3, 0x1 bgt _0804BB6C adds r0, r2, 0x4 mov r1, r9 b _0804BBBA .pool _0804BB6C: cmp r3, 0 beq _0804BBB4 ldr r4, =gBattleScripting ldrb r0, [r4, 0x1B] cmp r0, 0 bne _0804BBB4 movs r0, 0 movs r1, 0x1 mov r2, r8 str r3, [sp] bl dp01_build_cmdbuf_x34_a_bb_aka_battle_anim ldr r0, =gActiveBank ldrb r0, [r0] bl dp01_battle_side_mark_buffer_for_execution ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r1, [r0, 0x3] movs r0, 0x4 ands r0, r1 ldr r3, [sp] cmp r0, 0 beq _0804BBA4 cmp r3, 0x1 ble _0804BBA4 movs r0, 0x1 strb r0, [r4, 0x1B] _0804BBA4: ldr r1, =gBattlescriptCurrInstr b _0804BBB6 .pool _0804BBB4: mov r1, r9 _0804BBB6: ldr r0, [r1] adds r0, 0x4 _0804BBBA: 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_804BBCC sub_804BBCC: @ 804BBCC push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x1C movs r0, 0 mov r10, r0 ldr r2, =gUnknown_020241EC ldrh r1, [r2] ldr r0, =0x0000ffff movs r3, 0 str r3, [sp, 0x18] cmp r1, r0 beq _0804BBEE ldrh r2, [r2] str r2, [sp, 0x18] _0804BBEE: ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r4, [r0, 0x1] str r4, [sp, 0x10] ldrb r0, [r0, 0x2] str r0, [sp, 0x14] ldr r1, =gBattleMons ldr r0, =gBankAttacker ldrb r2, [r0] movs r0, 0x58 muls r0, r2 adds r1, r0, r1 ldrh r0, [r1, 0x2E] cmp r0, 0xAF bne _0804BC34 ldr r1, =gEnigmaBerries lsls r0, r2, 3 subs r0, r2 lsls r0, 2 adds r0, r1 ldrb r0, [r0, 0x7] b _0804BC3E .pool _0804BC34: ldrh r0, [r1, 0x2E] bl ItemId_GetHoldEffect lsls r0, 24 lsrs r0, 24 _0804BC3E: str r0, [sp, 0x8] ldr r1, =gBattleStruct ldr r0, =gBankAttacker ldrb r0, [r0] lsls r0, 1 adds r0, 0xC8 ldr r1, [r1] adds r0, r1, r0 str r0, [sp, 0xC] ldrb r0, [r1, 0x13] cmp r0, 0 beq _0804BCF0 movs r5, 0x3F ands r5, r0 str r5, [sp, 0x4] b _0804BD02 .pool _0804BC68: ldr r4, =gActiveBank strb r2, [r4] movs r0, 0 movs r1, 0x1 bl dp01_build_cmdbuf_x33_a_33_33 ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution b _0804C15A .pool _0804BC80: ldr r4, =gActiveBank strb r2, [r4] movs r0, 0 movs r1, 0 bl dp01_build_cmdbuf_x33_a_33_33 ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution ldrb r1, [r6] lsls r1, 2 adds r1, r5 ldr r0, [r1] ldr r2, =0xfffbff3f ands r0, r2 str r0, [r1] b _0804C15A .pool _0804BCAC: strb r2, [r7] ldr r0, [r5] orrs r0, r6 str r0, [r5] ldr r0, =gBattleScripting strb r4, [r0, 0x14] bl sub_804AF30 ldr r2, =gUnknown_082D86A8 mov r0, r8 ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 add r0, r9 ldrb r0, [r0] lsls r0, 2 adds r0, r2 ldr r0, [r0] bl b_movescr_stack_push ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DB87D bl _0804C5B8 .pool _0804BCF0: ldr r2, =gBattleMoves ldr r0, =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x2] str r0, [sp, 0x4] _0804BD02: ldr r1, =gBattleScripting mov r12, r1 b _0804BD1E .pool _0804BD14: mov r2, r10 cmp r2, 0 beq _0804BD1E bl _0804C5A4 _0804BD1E: mov r3, r12 ldrb r0, [r3, 0x14] cmp r0, 0x11 bls _0804BD2A bl _0804C570 _0804BD2A: lsls r0, 2 ldr r1, =_0804BD38 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0804BD38: .4byte _0804BD80 .4byte _0804BE5C .4byte _0804BF18 .4byte _0804BF3C .4byte _0804BF54 .4byte _0804BF7C .4byte _0804BFA0 .4byte _0804C048 .4byte _0804C0BE .4byte _0804C0F4 .4byte _0804C194 .4byte _0804C088 .4byte _0804C0A8 .4byte _0804C1D8 .4byte _0804C21C .4byte _0804C3FC .4byte _0804C4E4 .4byte _0804C570 _0804BD80: ldr r6, =gBattleMons ldr r5, =gBankTarget ldrb r3, [r5] movs r7, 0x58 adds r2, r3, 0 muls r2, r7 adds r0, r6, 0 adds r0, 0x50 adds r0, r2, r0 ldr r0, [r0] movs r1, 0x80 lsls r1, 16 ands r0, r1 cmp r0, 0 bne _0804BDA0 b _0804C184 _0804BDA0: adds r0, r2, r6 ldrh r0, [r0, 0x28] cmp r0, 0 bne _0804BDAA b _0804C184 _0804BDAA: ldr r0, =gBankAttacker ldrb r1, [r0] cmp r1, r3 bne _0804BDB4 b _0804C184 _0804BDB4: adds r0, r1, 0 bl GetBankSide adds r4, r0, 0 ldrb r0, [r5] bl GetBankSide lsls r4, 24 lsls r0, 24 cmp r4, r0 bne _0804BDCC b _0804C184 _0804BDCC: ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 beq _0804BDDA b _0804C184 _0804BDDA: ldr r2, =gSpecialStatuses ldrb r3, [r5] lsls r0, r3, 2 adds r0, r3 lsls r1, r0, 2 adds r0, r2, 0 adds r0, 0x8 adds r0, r1, r0 ldr r0, [r0] cmp r0, 0 bne _0804BDFE adds r0, r2, 0 adds r0, 0xC adds r0, r1, r0 ldr r0, [r0] cmp r0, 0 bne _0804BDFE b _0804C184 _0804BDFE: ldr r2, =gBattleMoves ldr r0, =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x1] cmp r0, 0 bne _0804BE14 b _0804C184 _0804BE14: adds r0, r3, 0 muls r0, r7 adds r1, r0, r6 ldrb r2, [r1, 0x19] movs r0, 0x19 ldrsb r0, [r1, r0] cmp r0, 0xB ble _0804BE26 b _0804C184 _0804BE26: adds r0, r2, 0x1 strb r0, [r1, 0x19] bl b_movescr_stack_push_cursor ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DAE0D str r0, [r1] b _0804C0B8 .pool _0804BE5C: ldr r4, =gBattleMons ldr r6, =gBankTarget ldrb r2, [r6] movs r5, 0x58 mov r12, r5 mov r1, r12 muls r1, r2 adds r7, r4, 0 adds r7, 0x4C adds r5, r1, r7 ldr r3, [r5] movs r0, 0x20 ands r0, r3 cmp r0, 0 bne _0804BE7C b _0804C184 _0804BE7C: adds r0, r1, r4 ldrh r0, [r0, 0x28] cmp r0, 0 bne _0804BE86 b _0804C184 _0804BE86: ldr r0, =gBankAttacker ldrb r0, [r0] cmp r0, r2 bne _0804BE90 b _0804C184 _0804BE90: ldr r0, =gSpecialStatuses lsls r1, r2, 2 adds r1, r2 lsls r1, 2 adds r0, 0xC adds r1, r0 ldr r0, [r1] cmp r0, 0 bne _0804BEA4 b _0804C184 _0804BEA4: ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 beq _0804BEB2 b _0804C184 _0804BEB2: ldr r0, [sp, 0x4] cmp r0, 0xA beq _0804BEBA b _0804C184 _0804BEBA: movs r0, 0x21 negs r0, r0 ands r3, r0 str r3, [r5] ldr r4, =gActiveBank ldrb r0, [r6] strb r0, [r4] ldrb r0, [r6] mov r1, r12 muls r1, r0 adds r0, r1, 0 adds r0, r7 str r0, [sp] movs r0, 0 movs r1, 0x28 movs r2, 0 movs r3, 0x4 bl dp01_build_cmdbuf_x02_a_b_varargs ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution bl b_movescr_stack_push_cursor ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DB282 str r0, [r1] movs r2, 0x1 mov r10, r2 b _0804C184 .pool _0804BF18: ldr r0, =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 bne _0804BF32 b _0804C184 _0804BF32: movs r3, 0x1 mov r10, r3 b _0804C184 .pool _0804BF3C: ldr r0, =gBankTarget ldrb r1, [r0] movs r0, 0 str r0, [sp] movs r0, 0x4 movs r2, 0 movs r3, 0 bl AbilityBattleEffects b _0804C0B2 .pool _0804BF54: movs r0, 0 str r0, [sp] movs r0, 0x5 movs r1, 0 movs r2, 0 movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 bne _0804BF6C b _0804C184 _0804BF6C: movs r5, 0x1 mov r10, r5 ldr r0, =gBattleScripting mov r12, r0 b _0804C570 .pool _0804BF7C: ldr r0, =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 _0804BF96 b _0804C184 _0804BF96: movs r1, 0x1 mov r10, r1 b _0804C184 .pool _0804BFA0: ldr r0, =gHitMarker ldr r0, [r0] movs r1, 0x80 lsls r1, 18 ands r0, r1 cmp r0, 0 beq _0804BFE4 ldr r2, [sp, 0x8] cmp r2, 0x1D bne _0804BFE4 ldr r0, =gUnknown_020241EC ldrh r2, [r0] adds r3, r0, 0 cmp r2, 0xA5 beq _0804BFE4 ldr r4, [sp, 0xC] ldrh r1, [r4] cmp r1, 0 beq _0804BFCC ldr r0, =0x0000ffff cmp r1, r0 bne _0804BFE4 _0804BFCC: cmp r2, 0xE2 bne _0804BFDE ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r0, 0x20 ands r0, r1 cmp r0, 0 bne _0804BFDE b _0804C4B6 _0804BFDE: ldrh r0, [r3] ldr r1, [sp, 0xC] strh r0, [r1] _0804BFE4: movs r4, 0 ldr r2, =gBattleMons ldr r3, =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 _0804C01C mov r6, r9 movs r3, 0x58 adds r5, r1, 0 _0804C006: adds r4, 0x1 cmp r4, 0x3 bgt _0804C01C lsls r0, r4, 1 ldrb r1, [r6] muls r1, r3 adds r0, r1 adds r0, r2 ldrh r0, [r0] cmp r0, r5 bne _0804C006 _0804C01C: cmp r4, 0x4 bne _0804C026 movs r0, 0 ldr r1, [sp, 0xC] strh r0, [r1] _0804C026: mov r2, r12 ldrb r0, [r2, 0x14] adds r0, 0x1 strb r0, [r2, 0x14] b _0804C570 .pool _0804C048: movs r4, 0 ldr r0, =gNoOfAllBanks ldrb r3, [r0] cmp r4, r3 blt _0804C054 b _0804C202 _0804C054: ldr r7, =gBattleStruct movs r6, 0 movs r3, 0xD0 adds r5, r0, 0 ldr r2, =gBattleMons _0804C05E: ldr r0, [r7] adds r0, r3 ldrh r1, [r0] cmp r1, 0 beq _0804C06C strh r1, [r2, 0x2E] strh r6, [r0] _0804C06C: adds r3, 0x2 adds r2, 0x58 adds r4, 0x1 ldrb r0, [r5] cmp r4, r0 blt _0804C05E b _0804C202 .pool _0804C088: movs r0, 0x3 movs r1, 0 movs r2, 0 bl berry_effects_maybe lsls r0, 24 cmp r0, 0 beq _0804C184 movs r2, 0x1 mov r10, r2 ldr r3, =gBattleScripting mov r12, r3 b _0804C570 .pool _0804C0A8: movs r0, 0x4 movs r1, 0 movs r2, 0 bl berry_effects_maybe _0804C0B2: lsls r0, 24 cmp r0, 0 beq _0804C184 _0804C0B8: movs r4, 0x1 mov r10, r4 b _0804C184 _0804C0BE: ldr r1, =gStatuses3 ldr r0, =gBankAttacker ldrb r2, [r0] lsls r0, r2, 2 adds r0, r1 ldr r0, [r0] ldr r1, =0x000400c0 ands r0, r1 cmp r0, 0 bne _0804C0D4 b _0804C4B6 _0804C0D4: ldr r0, =gHitMarker ldr r0, [r0] movs r1, 0x80 ands r0, r1 cmp r0, 0 beq _0804C0E2 b _0804BC68 _0804C0E2: b _0804C4B6 .pool _0804C0F4: ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 bne _0804C120 ldr r1, =gStatuses3 ldr r0, =gBankAttacker ldrb r2, [r0] lsls r0, r2, 2 adds r0, r1 ldr r0, [r0] ldr r1, =0x000400c0 ands r0, r1 cmp r0, 0 beq _0804C120 adds r0, r2, 0 bl sub_803F90C lsls r0, 24 cmp r0, 0 beq _0804C184 _0804C120: ldr r4, =gActiveBank ldr r5, =gBankAttacker ldrb r0, [r5] strb r0, [r4] movs r0, 0 movs r1, 0 bl dp01_build_cmdbuf_x33_a_33_33 ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution ldr r0, =gStatuses3 ldrb r2, [r5] lsls r2, 2 adds r2, r0 ldr r0, [r2] ldr r1, =0xfffbff3f ands r0, r1 str r0, [r2] ldr r2, =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] _0804C15A: ldr r1, =gBattleScripting ldrb r0, [r1, 0x14] adds r0, 0x1 strb r0, [r1, 0x14] b _0804C5BA .pool _0804C184: ldr r1, =gBattleScripting ldrb r0, [r1, 0x14] adds r0, 0x1 strb r0, [r1, 0x14] mov r12, r1 b _0804C570 .pool _0804C194: ldr r0, =gSpecialStatuses ldr r6, =gBankTarget ldrb r2, [r6] lsls r3, r2, 2 adds r1, r3, r2 lsls r1, 2 adds r1, r0 ldrb r0, [r1] lsls r0, 29 cmp r0, 0 blt _0804C202 ldr r0, =gNoOfAllBanks ldrb r0, [r0] cmp r2, r0 bcs _0804C202 ldr r5, =gStatuses3 adds r0, r3, r5 ldr r0, [r0] ldr r1, =0x000400c0 ands r0, r1 cmp r0, 0 bne _0804C1C2 b _0804BC80 _0804C1C2: b _0804C202 .pool _0804C1D8: movs r4, 0 ldr r0, =gNoOfAllBanks ldrb r2, [r0] cmp r4, r2 bge _0804C202 ldr r2, =gDisableStructs ldr r5, =0xfeffffff adds r3, r0, 0 ldr r1, =gUnknown_020240D4 _0804C1EA: ldrb r0, [r2, 0xA] cmp r0, 0 bne _0804C1F6 ldr r0, [r1] ands r0, r5 str r0, [r1] _0804C1F6: adds r2, 0x1C adds r1, 0x58 adds r4, 0x1 ldrb r0, [r3] cmp r4, r0 blt _0804C1EA _0804C202: mov r1, r12 ldrb r0, [r1, 0x14] adds r0, 0x1 strb r0, [r1, 0x14] b _0804C570 .pool _0804C21C: ldr r1, =gHitMarker ldr r3, [r1] movs r0, 0x80 lsls r0, 5 ands r0, r3 ldr r2, =gBankAttacker mov r9, r2 adds r5, r1, 0 cmp r0, 0 beq _0804C246 ldr r0, =gActiveBank ldrb r2, [r2] strb r2, [r0] ldr r1, =gBankTarget ldrb r0, [r1] mov r4, r9 strb r0, [r4] strb r2, [r1] ldr r0, =0xffffefff ands r3, r0 str r3, [r5] _0804C246: ldr r0, [r5] movs r1, 0x80 lsls r1, 3 ands r0, r1 cmp r0, 0 beq _0804C262 ldr r0, =gUnknown_02024240 mov r2, r9 ldrb r1, [r2] lsls r1, 1 adds r1, r0 ldr r0, =gUnknown_020241EC ldrh r0, [r0] strh r0, [r1] _0804C262: ldr r0, =gAbsentBankFlags ldrb r1, [r0] ldr r2, =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 _0804C27C b _0804C3E8 _0804C27C: ldr r0, =gBattleStruct ldr r1, [r0] adds r1, 0x91 ldrb r1, [r1] ands r1, r3 adds r7, r0, 0 cmp r1, 0 beq _0804C28E b _0804C3E8 _0804C28E: ldr r0, =gBattleMoves ldr r2, [sp, 0x18] lsls r1, r2, 1 adds r1, r2 lsls r1, 2 adds r1, r0 ldrb r1, [r1] mov r8, r0 cmp r1, 0x7F bne _0804C2A4 b _0804C3E8 _0804C2A4: ldr r0, [r5] movs r1, 0x80 lsls r1, 18 ands r0, r1 cmp r0, 0 beq _0804C308 ldr r0, =gUnknown_02024248 lsls r1, r4, 1 adds r1, r0 ldr r0, =gUnknown_020241EC ldrh r0, [r0] strh r0, [r1] ldr r0, =gUnknown_02024260 mov r3, r9 ldrb r1, [r3] lsls r1, 1 adds r1, r0 ldr r0, =gCurrentMove ldrh r0, [r0] strh r0, [r1] b _0804C322 .pool _0804C308: ldr r1, =gUnknown_02024248 lsls r0, r4, 1 adds r0, r1 ldr r1, =0x0000ffff strh r1, [r0] ldr r1, =gUnknown_02024260 mov r4, r9 ldrb r0, [r4] lsls r0, 1 adds r0, r1 movs r1, 0x1 negs r1, r1 strh r1, [r0] _0804C322: ldr r2, =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 _0804C340 ldr r0, =gUnknown_02024270 adds r0, r3, r0 mov r3, r9 ldrb r1, [r3] strb r1, [r0] _0804C340: ldr r0, [r5] movs r1, 0x80 lsls r1, 18 ands r0, r1 cmp r0, 0 beq _0804C3DC ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 bne _0804C3DC ldr r0, =gUnknown_020241EC ldrh r3, [r0] ldr r0, =0x0000ffff cmp r3, r0 bne _0804C390 ldr r1, =gUnknown_02024250 ldrb r0, [r2] lsls r0, 1 adds r0, r1 strh r3, [r0] b _0804C3E8 .pool _0804C390: ldr r0, =gUnknown_02024250 ldrb r1, [r2] lsls r1, 1 adds r1, r0 ldr r4, =gCurrentMove ldrh r0, [r4] strh r0, [r1] ldr r0, [r7] ldrb r3, [r0, 0x13] cmp r3, 0 beq _0804C3C0 ldr r0, =gUnknown_02024258 ldrb r1, [r2] lsls r1, 1 adds r1, r0 movs r0, 0x3F ands r0, r3 b _0804C3E6 .pool _0804C3C0: ldr r0, =gUnknown_02024258 ldrb r2, [r2] lsls r2, 1 adds r2, r0 ldrh r1, [r4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 add r0, r8 ldrb r0, [r0, 0x2] strh r0, [r2] b _0804C3E8 .pool _0804C3DC: ldr r0, =gUnknown_02024250 ldrb r1, [r2] lsls r1, 1 adds r1, r0 ldr r0, =0x0000ffff _0804C3E6: strh r0, [r1] _0804C3E8: mov r4, r12 ldrb r0, [r4, 0x14] adds r0, 0x1 strb r0, [r4, 0x14] b _0804C570 .pool _0804C3FC: ldr r0, =gAbsentBankFlags ldrb r1, [r0] ldr r7, =gBitTable ldr r2, =gBankAttacker ldrb r3, [r2] lsls r0, r3, 2 adds r0, r7 ldr r4, [r0] ands r1, r4 mov r9, r2 cmp r1, 0 bne _0804C4B6 ldr r6, =gBattleStruct ldr r5, [r6] adds r0, r5, 0 adds r0, 0x91 ldrb r0, [r0] ands r0, r4 cmp r0, 0 bne _0804C4B6 ldr r1, =gBattleMoves ldr r2, [sp, 0x18] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r1 ldrb r1, [r0, 0x8] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _0804C4B6 ldr r0, =gHitMarker ldr r1, [r0] movs r0, 0x80 lsls r0, 18 ands r0, r1 cmp r0, 0 beq _0804C4B6 ldr r4, =gBankTarget ldrb r0, [r4] cmp r3, r0 beq _0804C4B6 ldrb r2, [r4] lsls r0, r2, 2 adds r0, r7 ldr r0, [r0] lsls r0, 28 ands r1, r0 cmp r1, 0 bne _0804C4B6 ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 bne _0804C4B6 lsls r1, r2, 1 adds r1, r5 adds r1, 0x98 ldr r3, =gUnknown_020241EC ldrh r0, [r3] strb r0, [r1] ldrb r1, [r4] ldr r0, [r6] lsls r1, 1 adds r1, r0 adds r1, 0x99 ldrh r0, [r3] lsrs r0, 8 strb r0, [r1] ldrb r0, [r4] mov r2, r9 ldrb r1, [r2] ldr r2, [r6] lsls r0, 3 lsls r1, 1 adds r0, r1 adds r0, r2 adds r0, 0xE0 ldrh r1, [r3] strb r1, [r0] ldrb r1, [r4] mov r4, r9 ldrb r0, [r4] ldr r2, [r6] lsls r1, 3 lsls r0, 1 adds r1, r0 adds r1, r2 adds r1, 0xE1 ldrh r0, [r3] lsrs r0, 8 strb r0, [r1] _0804C4B6: mov r5, r12 ldrb r0, [r5, 0x14] adds r0, 0x1 strb r0, [r5, 0x14] b _0804C570 .pool _0804C4E4: ldr r5, =gHitMarker ldr r2, [r5] movs r0, 0x80 lsls r0, 12 ands r0, r2 cmp r0, 0 bne _0804C568 ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _0804C568 ldr r1, =gProtectStructs ldr r0, =gBankAttacker ldrb r0, [r0] lsls r0, 4 adds r0, r1 ldrb r0, [r0, 0x1] lsls r0, 29 cmp r0, 0 blt _0804C568 ldr r0, =gBattleMoves mov r9, r0 ldr r1, =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 _0804C568 movs r6, 0x80 lsls r6, 2 adds r4, r6, 0 ands r4, r2 cmp r4, 0 bne _0804C568 ldr r7, =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, =gBattleMons movs r0, 0x58 muls r0, r2 adds r0, r1 ldrh r0, [r0, 0x28] cmp r0, 0 beq _0804C55E bl _0804BCAC _0804C55E: ldr r0, [r5] orrs r0, r6 str r0, [r5] ldr r2, =gBattleScripting mov r12, r2 _0804C568: mov r3, r12 ldrb r0, [r3, 0x14] adds r0, 0x1 strb r0, [r3, 0x14] _0804C570: ldr r4, [sp, 0x10] cmp r4, 0x1 bne _0804C582 mov r5, r10 cmp r5, 0 bne _0804C582 movs r0, 0x11 mov r1, r12 strb r0, [r1, 0x14] _0804C582: ldr r2, [sp, 0x10] cmp r2, 0x2 bne _0804C598 ldr r4, [sp, 0x14] mov r3, r12 ldrb r3, [r3, 0x14] cmp r4, r3 bne _0804C598 movs r0, 0x11 mov r4, r12 strb r0, [r4, 0x14] _0804C598: mov r5, r12 ldrb r0, [r5, 0x14] cmp r0, 0x11 beq _0804C5A4 bl _0804BD14 _0804C5A4: mov r1, r12 ldrb r0, [r1, 0x14] cmp r0, 0x11 bne _0804C5BA mov r2, r10 cmp r2, 0 bne _0804C5BA ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x3 _0804C5B8: str r0, [r1] _0804C5BA: add sp, 0x1C pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_804BBCC thumb_func_start atk4A_damagecalc2 atk4A_damagecalc2: @ 804C5F4 push {r4-r7,lr} mov r7, r8 push {r7} movs r4, 0 movs r5, 0 ldr r2, =gBattleMoves ldr r0, =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x2] mov r8, r0 ldr r2, =gBattleMons ldr r3, =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 _0804C688 mov r1, r8 cmp r1, 0x4 bne _0804C688 ldr r3, =gLastUsedAbility strb r0, [r3] ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x9 orrs r0, r1 strb r0, [r2] ldr r1, =gUnknown_02024250 ldrb r0, [r7] lsls r0, 1 adds r0, r1 strh r4, [r0] ldr r0, =gBattleCommunication mov r2, r8 strb r2, [r0, 0x6] ldrb r0, [r7] ldrb r1, [r3] bl RecordAbilityBattle b _0804C76A .pool _0804C678: ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r2, 0x8 orrs r1, r2 strb r1, [r0] b _0804C76A .pool _0804C688: ldr r1, =gUnknown_0831ACE8 adds r0, r5, r1 ldrb r0, [r0] adds r6, r1, 0 b _0804C74A .pool _0804C698: adds r0, r5, r6 ldrb r0, [r0] cmp r0, r8 bne _0804C744 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 _0804C6D6 adds r0, r5, 0x2 adds r0, r6 ldrb r1, [r0] cmp r1, 0 beq _0804C678 cmp r1, 0x5 bne _0804C6CA movs r0, 0x4 orrs r4, r0 _0804C6CA: cmp r1, 0x14 bne _0804C6D6 movs r0, 0x2 orrs r4, r0 lsls r0, r4, 24 lsrs r4, r0, 24 _0804C6D6: 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 _0804C744 adds r0, 0x21 ldrb r1, [r0] cmp r1, r2 beq _0804C6FE adds r0, r5, 0x2 adds r0, r6 ldrb r0, [r0] cmp r0, 0 beq _0804C678 _0804C6FE: cmp r1, r2 beq _0804C714 adds r0, r5, 0x2 adds r0, r6 ldrb r0, [r0] cmp r0, 0x5 bne _0804C714 movs r0, 0x4 orrs r4, r0 lsls r0, r4, 24 lsrs r4, r0, 24 _0804C714: 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 _0804C744 adds r0, 0x21 ldrb r0, [r0] cmp r0, r2 beq _0804C744 adds r0, r5, 0x2 adds r0, r6 ldrb r0, [r0] cmp r0, 0x14 bne _0804C744 movs r0, 0x2 orrs r4, r0 lsls r0, r4, 24 lsrs r4, r0, 24 _0804C744: adds r5, 0x3 adds r0, r5, r6 ldrb r0, [r0] _0804C74A: cmp r0, 0xFF beq _0804C76A cmp r0, 0xFE bne _0804C698 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 _0804C744 _0804C76A: ldr r2, =gBattleMons ldr r0, =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 _0804C7E6 movs r5, 0x29 ands r5, r4 cmp r5, 0 bne _0804C7E6 ldr r0, =gBankAttacker ldrb r0, [r0] ldr r7, =gCurrentMove ldrh r1, [r7] bl move_weather_interaction lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x2 bne _0804C7E6 adds r0, r4, 0 ands r0, r1 cmp r0, 0 beq _0804C7AC movs r0, 0x6 ands r4, r0 cmp r4, 0x6 bne _0804C7E6 _0804C7AC: ldr r2, =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 _0804C7E6 ldr r3, =gLastUsedAbility strb r6, [r3] ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r1, =gUnknown_02024250 mov r2, r8 ldrb r0, [r2] lsls r0, 1 adds r0, r1 strh r5, [r0] ldr r1, =gBattleCommunication movs r0, 0x3 strb r0, [r1, 0x6] ldrb r0, [r2] ldrb r1, [r3] bl RecordAbilityBattle _0804C7E6: ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r0, 0x8 ands r0, r1 cmp r0, 0 beq _0804C804 ldr r2, =gProtectStructs ldr r0, =gBankAttacker ldrb r1, [r0] lsls r1, 4 adds r1, r2 ldrb r0, [r1, 0x1] movs r2, 0x2 orrs r0, r2 strb r0, [r1, 0x1] _0804C804: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk4A_damagecalc2 thumb_func_start atk4B_cmd4b atk4B_cmd4b: @ 804C844 push {r4,lr} ldr r4, =gActiveBank ldr r0, =gBankAttacker ldrb r0, [r0] strb r0, [r4] ldr r2, =gHitMarker ldr r1, =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 _0804C872 movs r0, 0 movs r1, 0 bl dp01_build_cmdbuf_x06_a ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution _0804C872: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .pool thumb_func_end atk4B_cmd4b thumb_func_start atk4C_switch1 atk4C_switch1: @ 804C894 push {r4,r5,lr} ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 bne _0804C8E4 ldr r5, =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r4, =gActiveBank strb r0, [r4] ldr r3, =gBattlePartyID ldrb r0, [r4] lsls r2, r0, 1 adds r2, r3 ldr r1, =gBattleStruct ldr r1, [r1] adds r0, r1 adds r0, 0x5C ldrb r0, [r0] strh r0, [r2] ldr r1, =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 dp01_build_cmdbuf_x00_a_b_0 ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution ldr r0, [r5] adds r0, 0x2 str r0, [r5] _0804C8E4: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end atk4C_switch1 thumb_func_start sub_804C904 sub_804C904: @ 804C904 push {r4-r7,lr} sub sp, 0x58 ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 beq _0804C912 b _0804CAA4 _0804C912: ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r4, =gActiveBank strb r0, [r4] ldr r6, =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, =gBattleBufferB _0804C93E: 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 _0804C93E ldr r4, =gBattleMons ldr r6, =gActiveBank ldrb r0, [r6] movs r7, 0x58 adds r2, r0, 0 muls r2, r7 adds r2, r4 ldr r3, =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, [r6] adds r1, r0, 0 muls r1, r7 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, [r6] adds r1, r0, 0 muls r1, r7 adds r1, r4 ldrh r0, [r1] ldrb r1, [r1, 0x17] lsrs r1, 7 bl sub_806B694 ldrb r1, [r6] muls r1, r7 adds r1, r4 adds r1, 0x20 strb r0, [r1] ldrb r0, [r6] bl GetBankSide lsls r0, 24 lsrs r2, r0, 24 ldr r0, =gUnknown_020243D0 adds r0, 0x29 adds r0, r2, r0 ldrb r1, [r0] ldr r3, =gBitTable ldr r2, =gBattlePartyID ldrb r5, [r6] 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 _0804C9DE adds r0, r5, 0 muls r0, r7 add r0, r12 movs r1, 0 strh r1, [r0, 0x2E] _0804C9DE: ldr r2, =gBattleMoves ldr r0, =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0] cmp r0, 0x7F bne _0804CA26 movs r2, 0 adds r4, r6, 0 movs r6, 0x58 mov r5, r12 adds r5, 0x18 add r3, sp, 0x18 _0804C9FE: 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 _0804C9FE ldr r0, =gActiveBank ldrb r1, [r0] movs r0, 0x58 muls r0, r1 mov r1, r12 adds r1, 0x50 adds r0, r1 ldr r1, [sp, 0x50] str r1, [r0] _0804CA26: bl sub_803A284 ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x80 lsls r1, 10 ands r0, r1 cmp r0, 0 beq _0804CA78 ldr r4, =gBattleMons ldr r0, =gActiveBank ldrb r3, [r0] movs r0, 0x58 adds r2, r3, 0 muls r2, r0 adds r1, r2, r4 ldrh r0, [r1, 0x2C] lsrs r0, 1 ldrh r1, [r1, 0x28] cmp r0, r1 bcc _0804CA78 cmp r1, 0 beq _0804CA78 adds r0, r4, 0 adds r0, 0x4C adds r0, r2, r0 ldr r0, [r0] movs r1, 0x7 ands r0, r1 cmp r0, 0 bne _0804CA78 ldr r0, =gBattleStruct ldr r2, [r0] adds r2, 0x92 ldr r1, =gBitTable lsls r0, r3, 2 adds r0, r1 ldr r0, [r0] ldrb r1, [r2] orrs r0, r1 strb r0, [r2] _0804CA78: ldr r0, =gBattleScripting ldr r3, =gActiveBank ldrb r2, [r3] strb r2, [r0, 0x17] ldr r1, =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x7 strb r0, [r1, 0x1] strb r2, [r1, 0x2] ldr r2, =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, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] _0804CAA4: add sp, 0x58 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_804C904 thumb_func_start atk4E_switch3 atk4E_switch3: @ 804CAE8 push {r4-r6,lr} ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 bne _0804CB86 ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r6, =gActiveBank strb r0, [r6] ldrb r0, [r6] bl GetBankSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0804CB3E ldr r0, =gBattleTypeFlags ldr r0, [r0] ldr r1, =0x063f0902 ands r0, r1 cmp r0, 0 bne _0804CB3E ldr r4, =gBattleMons ldrb r0, [r6] movs r5, 0x58 muls r0, r5 adds r0, r4 ldrh r0, [r0] bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 ldrb r1, [r6] muls r1, r5 adds r4, 0x48 adds r1, r4 ldr r2, [r1] movs r1, 0x2 bl SetPokedexFlag _0804CB3E: ldr r2, =gAbsentBankFlags ldr r1, =gBitTable ldr r5, =gActiveBank ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, [r0] ldrb r0, [r2] bics r0, r1 strb r0, [r2] ldr r1, =gBattlePartyID ldrb r0, [r5] lsls r0, 1 adds r0, r1 ldrb r1, [r0] ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r2, [r0, 0x2] movs r0, 0 bl dp01_build_cmdbuf_x05_a_b_c ldrb r0, [r5] bl dp01_battle_side_mark_buffer_for_execution ldr r0, [r4] adds r0, 0x3 str r0, [r4] ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x80 lsls r1, 11 ands r0, r1 cmp r0, 0 beq _0804CB86 bl sub_81A56B4 _0804CB86: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end atk4E_switch3 thumb_func_start atk4F_jumpifcannotswitch atk4F_jumpifcannotswitch: @ 804CBB0 push {r4-r7,lr} mov r7, r8 push {r7} ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r1, [r0, 0x1] movs r0, 0x7F ands r0, r1 bl get_battle_side_of_something ldr r3, =gActiveBank strb r0, [r3] ldr r2, [r4] ldrb r1, [r2, 0x1] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0804CC28 ldr r1, =gBattleMons ldrb r3, [r3] movs r0, 0x58 muls r0, r3 adds r1, 0x50 adds r0, r1 ldr r0, [r0] ldr r1, =0x0400e000 ands r0, r1 cmp r0, 0 bne _0804CBFC ldr r1, =gStatuses3 lsls r0, r3, 2 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 3 ands r0, r1 cmp r0, 0 beq _0804CC28 _0804CBFC: 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 _0804CF00 .pool _0804CC28: ldr r0, =gBattleTypeFlags ldr r1, [r0] movs r0, 0x80 lsls r0, 15 ands r0, r1 cmp r0, 0 beq _0804CCC0 ldr r5, =gActiveBank ldrb r0, [r5] bl GetBankSide lsls r0, 24 lsrs r0, 24 ldr r1, =gPlayerParty mov r8, r1 cmp r0, 0x1 bne _0804CC4E ldr r0, =gEnemyParty mov r8, r0 _0804CC4E: movs r4, 0 ldrb r1, [r5] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0804CC5C movs r4, 0x3 _0804CC5C: adds r6, r4, 0x3 cmp r4, r6 bge _0804CCA4 ldr r7, =gBattlePartyID _0804CC64: movs r0, 0x64 muls r0, r4 mov r1, r8 adds r5, r1, r0 adds r0, r5, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0804CC9E adds r0, r5, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 bne _0804CC9E adds r0, r5, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _0804CC9E ldr r0, =gActiveBank ldrb r0, [r0] lsls r0, 1 adds r0, r7 ldrh r0, [r0] cmp r0, r4 bne _0804CCA4 _0804CC9E: adds r4, 0x1 cmp r4, r6 blt _0804CC64 _0804CCA4: cmp r4, r6 bne _0804CCAA b _0804CED0 _0804CCAA: b _0804CEF8 .pool _0804CCC0: movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _0804CD8C movs r0, 0x80 lsls r0, 16 ands r1, r0 cmp r1, 0 beq _0804CD00 ldr r5, =gActiveBank ldrb r0, [r5] bl GetBankSide lsls r0, 24 cmp r0, 0 bne _0804CCEC ldr r0, =gPlayerParty b _0804CD16 .pool _0804CCEC: ldr r1, =gEnemyParty mov r8, r1 ldrb r0, [r5] movs r4, 0x3 cmp r0, 0x1 bne _0804CD32 movs r4, 0 b _0804CD32 .pool _0804CD00: ldr r5, =gActiveBank ldrb r0, [r5] bl GetBankSide lsls r0, 24 lsrs r0, 24 ldr r1, =gPlayerParty mov r8, r1 cmp r0, 0x1 bne _0804CD18 ldr r0, =gEnemyParty _0804CD16: mov r8, r0 _0804CD18: movs r4, 0 ldrb r0, [r5] bl sub_806D864 lsls r0, 24 lsrs r0, 24 bl sub_806D82C lsls r0, 16 lsrs r0, 16 cmp r0, 0x1 bne _0804CD32 movs r4, 0x3 _0804CD32: adds r6, r4, 0x3 cmp r4, r6 bge _0804CCA4 ldr r7, =gBattlePartyID _0804CD3A: movs r0, 0x64 muls r0, r4 mov r1, r8 adds r5, r1, r0 adds r0, r5, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0804CD74 adds r0, r5, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 bne _0804CD74 adds r0, r5, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _0804CD74 ldr r0, =gActiveBank ldrb r0, [r0] lsls r0, 1 adds r0, r7 ldrh r0, [r0] cmp r0, r4 bne _0804CCA4 _0804CD74: adds r4, 0x1 cmp r4, r6 blt _0804CD3A b _0804CCA4 .pool _0804CD8C: movs r0, 0x80 lsls r0, 8 ands r1, r0 cmp r1, 0 beq _0804CE10 ldr r5, =gActiveBank ldrb r0, [r5] bl GetBankSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0804CE10 ldr r0, =gEnemyParty mov r8, r0 movs r4, 0 ldrb r0, [r5] cmp r0, 0x3 bne _0804CDB4 movs r4, 0x3 _0804CDB4: adds r6, r4, 0x3 cmp r4, r6 blt _0804CDBC b _0804CCA4 _0804CDBC: ldr r7, =gBattlePartyID _0804CDBE: movs r0, 0x64 muls r0, r4 mov r1, r8 adds r5, r1, r0 adds r0, r5, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0804CDFA adds r0, r5, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 bne _0804CDFA adds r0, r5, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _0804CDFA ldr r0, =gActiveBank ldrb r0, [r0] lsls r0, 1 adds r0, r7 ldrh r0, [r0] cmp r0, r4 beq _0804CDFA b _0804CCA4 _0804CDFA: adds r4, 0x1 cmp r4, r6 blt _0804CDBE b _0804CCA4 .pool _0804CE10: ldr r0, =gActiveBank ldrb r0, [r0] bl GetBankSide lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x1 bne _0804CE54 movs r0, 0x1 bl GetBankByPlayerAI lsls r0, 24 lsrs r7, r0, 24 ldr r0, =gBattleTypeFlags ldr r0, [r0] ands r0, r4 cmp r0, 0 beq _0804CE48 movs r0, 0x3 bl GetBankByPlayerAI lsls r0, 24 lsrs r6, r0, 24 b _0804CE4A .pool _0804CE48: adds r6, r7, 0 _0804CE4A: ldr r0, =gEnemyParty mov r8, r0 b _0804CE82 .pool _0804CE54: movs r0, 0 bl GetBankByPlayerAI lsls r0, 24 lsrs r7, r0, 24 ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _0804CE7C movs r0, 0x2 bl GetBankByPlayerAI lsls r0, 24 lsrs r6, r0, 24 b _0804CE7E .pool _0804CE7C: adds r6, r7, 0 _0804CE7E: ldr r1, =gPlayerParty mov r8, r1 _0804CE82: movs r4, 0 _0804CE84: movs r0, 0x64 muls r0, r4 mov r1, r8 adds r5, r1, r0 adds r0, r5, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _0804CEC6 adds r0, r5, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0804CEC6 adds r0, r5, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 bne _0804CEC6 ldr r1, =gBattlePartyID lsls r0, r7, 1 adds r0, r1 ldrh r0, [r0] cmp r4, r0 beq _0804CEC6 lsls r0, r6, 1 adds r0, r1 ldrh r0, [r0] cmp r4, r0 bne _0804CECC _0804CEC6: adds r4, 0x1 cmp r4, 0x5 ble _0804CE84 _0804CECC: cmp r4, 0x6 bne _0804CEF8 _0804CED0: ldr r3, =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 _0804CF00 .pool _0804CEF8: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x6 str r0, [r1] _0804CF00: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk4F_jumpifcannotswitch thumb_func_start sub_804CF10 sub_804CF10: @ 804CF10 push {r4,r5,lr} sub sp, 0x4 adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 ldr r5, =gActiveBank ldrb r0, [r5] ldr r4, =gBattleStruct ldr r1, [r4] adds r1, r0, r1 adds r1, 0x58 ldr r3, =gBattlePartyID lsls r0, 1 adds r0, r3 ldrh r0, [r0] strb r0, [r1] ldrb r0, [r5] ldr r1, [r4] adds r0, r1 adds r0, 0x5C movs r1, 0x6 strb r1, [r0] ldr r1, [r4] adds r1, 0x93 ldr r3, =gBitTable ldrb r0, [r5] lsls r0, 2 adds r0, r3 ldr r3, [r0] ldrb r0, [r1] bics r0, r3 strb r0, [r1] ldrb r0, [r5] lsls r1, r0, 1 adds r1, r0 adds r1, 0x60 ldr r0, [r4] adds r0, r1 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 dp01_battle_side_mark_buffer_for_execution add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_804CF10 thumb_func_start atk50_openpartyscreen atk50_openpartyscreen: @ 804CF88 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, =gBattlescriptCurrInstr ldr r2, [r6] ldrb r1, [r2, 0x2] ldrb r0, [r2, 0x3] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x5] lsls r0, 24 orrs r1, r0 mov r8, r1 ldrb r1, [r2, 0x1] adds r0, r1, 0 mov r12, r6 cmp r0, 0x5 beq _0804CFBE b _0804D464 _0804CFBE: ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x41 ands r1, r0 cmp r1, 0x1 beq _0804D0B0 ldr r1, =gActiveBank strb r7, [r1] ldr r0, =gNoOfAllBanks ldrb r0, [r0] cmp r7, r0 bcc _0804CFD8 b _0804D450 _0804CFD8: ldr r7, =gHitMarker ldr r6, =gBitTable adds r4, r1, 0 ldr r2, =gAbsentBankFlags mov r8, r2 _0804CFE2: 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 _0804D088 adds r0, r2, 0 movs r1, 0x6 movs r2, 0x6 bl sub_80423F4 lsls r0, 24 cmp r0, 0 beq _0804D054 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 movs r2, 0 bl sub_8034464 ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution b _0804D098 .pool _0804D054: ldr r5, =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 _0804D098 movs r0, 0x6 bl sub_804CF10 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 _0804D098 .pool _0804D088: movs r0, 0 movs r1, 0x2 movs r2, 0 bl sub_8034464 ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution _0804D098: ldrb r0, [r4] adds r0, 0x1 strb r0, [r4] ldr r1, =gNoOfAllBanks lsls r0, 24 lsrs r0, 24 ldrb r1, [r1] cmp r0, r1 bcc _0804CFE2 b _0804D450 .pool _0804D0B0: ands r0, r1 cmp r0, 0 bne _0804D0B8 b _0804D450 _0804D0B8: ldr r0, =gHitMarker mov r8, r0 ldr r0, [r0] lsrs r5, r0, 28 ldr r6, =gBitTable ldr r0, [r6] ands r0, r5 cmp r0, 0 beq _0804D170 ldr r4, =gActiveBank strb r7, [r4] movs r0, 0 movs r1, 0x6 movs r2, 0x6 bl sub_80423F4 lsls r0, 24 cmp r0, 0 beq _0804D120 ldr r2, =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 dp01_battle_side_mark_buffer_for_execution b _0804D170 .pool _0804D120: ldr r6, =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 _0804D15C ldr r0, =gBattleStruct ldr r0, [r0] adds r0, 0x5E ldrb r0, [r0] bl sub_804CF10 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 _0804D170 .pool _0804D15C: movs r0, 0 movs r1, 0x2 movs r2, 0 bl sub_8034464 ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution movs r0, 0x1 mov r9, r0 _0804D170: ldr r6, =gBitTable ldr r0, [r6, 0x8] ands r0, r5 cmp r0, 0 beq _0804D22E ldr r0, [r6] ands r0, r5 cmp r0, 0 bne _0804D22E ldr r4, =gActiveBank movs r0, 0x2 strb r0, [r4] movs r0, 0x2 movs r1, 0x6 movs r2, 0x6 bl sub_80423F4 lsls r0, 24 cmp r0, 0 beq _0804D1D8 ldr r2, =gAbsentBankFlags ldrb r0, [r4] lsls r0, 2 adds r0, r6 ldr r0, [r0] ldrb r1, [r2] orrs r0, r1 strb r0, [r2] ldr r2, =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 dp01_battle_side_mark_buffer_for_execution b _0804D22E .pool _0804D1D8: ldr r6, =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 _0804D214 ldr r0, =gBattleStruct ldr r0, [r0] adds r0, 0x5C ldrb r0, [r0] bl sub_804CF10 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 _0804D22E .pool _0804D214: movs r0, 0x1 mov r1, r9 ands r0, r1 cmp r0, 0 bne _0804D22E movs r0, 0 movs r1, 0x2 movs r2, 0 bl sub_8034464 ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution _0804D22E: ldr r6, =gBitTable ldr r0, [r6, 0x4] ands r0, r5 cmp r0, 0 beq _0804D2E4 ldr r4, =gActiveBank movs r0, 0x1 strb r0, [r4] movs r0, 0x1 movs r1, 0x6 movs r2, 0x6 bl sub_80423F4 lsls r0, 24 cmp r0, 0 beq _0804D290 ldr r2, =gAbsentBankFlags ldrb r0, [r4] lsls r0, 2 adds r0, r6 ldr r0, [r0] ldrb r1, [r2] orrs r0, r1 strb r0, [r2] ldr r2, =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 dp01_battle_side_mark_buffer_for_execution b _0804D2E4 .pool _0804D290: ldr r6, =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 _0804D2CC ldr r0, =gBattleStruct ldr r0, [r0] adds r0, 0x5F ldrb r0, [r0] bl sub_804CF10 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 _0804D2E4 .pool _0804D2CC: movs r0, 0 movs r1, 0x2 movs r2, 0 bl sub_8034464 ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution movs r0, 0x2 mov r2, r9 orrs r2, r0 mov r9, r2 _0804D2E4: ldr r6, =gBitTable ldr r0, [r6, 0xC] ands r0, r5 cmp r0, 0 beq _0804D3A2 ldr r0, [r6, 0x4] ands r0, r5 cmp r0, 0 bne _0804D3A2 ldr r4, =gActiveBank movs r0, 0x3 strb r0, [r4] movs r0, 0x3 movs r1, 0x6 movs r2, 0x6 bl sub_80423F4 lsls r0, 24 cmp r0, 0 beq _0804D34C ldr r2, =gAbsentBankFlags ldrb r0, [r4] lsls r0, 2 adds r0, r6 ldr r0, [r0] ldrb r1, [r2] orrs r0, r1 strb r0, [r2] ldr r2, =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 dp01_battle_side_mark_buffer_for_execution b _0804D3A2 .pool _0804D34C: ldr r6, =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 _0804D388 ldr r0, =gBattleStruct ldr r0, [r0] adds r0, 0x5D ldrb r0, [r0] bl sub_804CF10 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 _0804D3A2 .pool _0804D388: movs r0, 0x2 mov r1, r9 ands r1, r0 cmp r1, 0 bne _0804D3A2 movs r0, 0 movs r1, 0x2 movs r2, 0 bl sub_8034464 ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution _0804D3A2: ldr r1, =gSpecialStatuses ldrb r0, [r1] lsls r0, 25 cmp r0, 0 blt _0804D3FA adds r0, r1, 0 adds r0, 0x28 ldrb r0, [r0] lsls r0, 25 cmp r0, 0 blt _0804D3FA cmp r5, 0 beq _0804D3FA ldr r0, =gAbsentBankFlags ldrb r1, [r0] ldr r0, =gBitTable ldr r0, [r0] ands r1, r0 cmp r1, 0 beq _0804D3E4 ldr r1, =gActiveBank movs r0, 0x2 strb r0, [r1] b _0804D3E8 .pool _0804D3E4: ldr r0, =gActiveBank strb r1, [r0] _0804D3E8: movs r0, 0 movs r1, 0x2 movs r2, 0 bl sub_8034464 ldr r0, =gActiveBank ldrb r0, [r0] bl dp01_battle_side_mark_buffer_for_execution _0804D3FA: ldr r1, =gSpecialStatuses ldrb r0, [r1, 0x14] lsls r0, 25 cmp r0, 0 blt _0804D450 adds r0, r1, 0 adds r0, 0x3C ldrb r0, [r0] lsls r0, 25 cmp r0, 0 blt _0804D450 cmp r5, 0 beq _0804D450 ldr r0, =gAbsentBankFlags ldrb r0, [r0] ldr r1, =gBitTable ldr r1, [r1, 0x4] ands r0, r1 cmp r0, 0 beq _0804D438 ldr r1, =gActiveBank movs r0, 0x3 b _0804D43C .pool _0804D438: ldr r1, =gActiveBank movs r0, 0x1 _0804D43C: strb r0, [r1] movs r0, 0 movs r1, 0x2 movs r2, 0 bl sub_8034464 ldr r0, =gActiveBank ldrb r0, [r0] bl dp01_battle_side_mark_buffer_for_execution _0804D450: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x6 str r0, [r1] b _0804D804 .pool _0804D464: cmp r0, 0x6 beq _0804D46A b _0804D658 _0804D46A: ldr r0, =gBattleTypeFlags ldr r1, [r0] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _0804D478 b _0804D5F4 _0804D478: movs r0, 0x1 ands r1, r0 cmp r1, 0 bne _0804D482 b _0804D5F4 _0804D482: ldr r7, =gHitMarker ldr r0, [r7] lsrs r5, r0, 28 ldr r4, =gBitTable ldr r0, [r4, 0x8] ands r0, r5 cmp r0, 0 beq _0804D52A ldr r0, [r4] ands r0, r5 cmp r0, 0 beq _0804D52A ldr r6, =gActiveBank movs r0, 0x2 strb r0, [r6] ldr r0, =gBattleBufferB ldrb r1, [r0, 0x1] movs r0, 0x2 movs r2, 0x6 bl sub_80423F4 lsls r0, 24 cmp r0, 0 beq _0804D4F8 ldr r2, =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 dp01_battle_side_mark_buffer_for_execution b _0804D52A .pool _0804D4F8: ldr r4, =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 _0804D52A ldr r0, =gBattleStruct ldr r0, [r0] adds r0, 0x5C ldrb r0, [r0] bl sub_804CF10 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] _0804D52A: ldr r4, =gBitTable ldr r0, [r4, 0xC] ands r0, r5 cmp r0, 0 beq _0804D5DA ldr r0, [r4, 0x4] ands r5, r0 cmp r5, 0 beq _0804D5DA ldr r5, =gActiveBank movs r0, 0x3 strb r0, [r5] ldr r0, =gBattleBufferB ldr r2, =0x00000201 adds r0, r2 ldrb r1, [r0] movs r0, 0x3 movs r2, 0x6 bl sub_80423F4 lsls r0, 24 cmp r0, 0 beq _0804D5A8 ldr r2, =gAbsentBankFlags ldrb r0, [r5] lsls r0, 2 adds r0, r4 ldr r0, [r0] ldrb r1, [r2] orrs r0, r1 strb r0, [r2] ldr r2, =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 dp01_battle_side_mark_buffer_for_execution b _0804D5DA .pool _0804D5A8: ldr r4, =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 _0804D5DA ldr r0, =gBattleStruct ldr r0, [r0] adds r0, 0x5D ldrb r0, [r0] bl sub_804CF10 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] _0804D5DA: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x6 str r0, [r1] mov r12, r1 b _0804D5F8 .pool _0804D5F4: adds r0, r2, 0x6 str r0, [r6] _0804D5F8: ldr r0, =gHitMarker ldr r0, [r0] lsrs r5, r0, 28 ldr r1, =gUnknown_0202420D movs r0, 0 strb r0, [r1] ldr r4, =gBitTable ldr r2, [r4] ands r2, r5 ldr r6, =gNoOfAllBanks cmp r2, 0 bne _0804D634 adds r7, r6, 0 ldrb r0, [r6] cmp r2, r0 bcs _0804D634 adds r3, r1, 0 _0804D61A: 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 _0804D634 ldrb r0, [r7] cmp r2, r0 bcc _0804D61A _0804D634: ldrb r0, [r1] ldrb r6, [r6] cmp r0, r6 beq _0804D63E b _0804D804 _0804D63E: mov r1, r8 mov r2, r12 str r1, [r2] b _0804D804 .pool _0804D658: movs r0, 0x80 ands r0, r1 movs r5, 0x1 cmp r0, 0 beq _0804D664 movs r5, 0 _0804D664: movs r0, 0x7F ands r0, r1 bl get_battle_side_of_something lsls r0, 24 lsrs r7, r0, 24 ldr r1, =gSpecialStatuses lsls r0, r7, 2 adds r0, r7 lsls r0, 2 adds r0, r1 ldrb r0, [r0] lsls r0, 25 cmp r0, 0 bge _0804D690 ldr r0, [r6] adds r0, 0x6 str r0, [r6] b _0804D804 .pool _0804D690: adds r0, r7, 0 movs r1, 0x6 movs r2, 0x6 bl sub_80423F4 lsls r0, 24 cmp r0, 0 beq _0804D6E0 ldr r2, =gActiveBank strb r7, [r2] ldr r3, =gAbsentBankFlags ldr r4, =gBitTable ldrb r0, [r2] lsls r0, 2 adds r0, r4 ldr r0, [r0] ldrb r1, [r3] orrs r0, r1 strb r0, [r3] ldr r3, =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 _0804D804 .pool _0804D6E0: ldr r4, =gActiveBank strb r7, [r4] ldrb r0, [r4] ldr r3, =gBattleStruct ldr r1, [r3] adds r1, r0, r1 adds r1, 0x58 ldr r2, =gBattlePartyID lsls r0, 1 adds r0, r2 ldrh r0, [r0] strb r0, [r1] ldrb r0, [r4] ldr r1, [r3] adds r0, r1 adds r0, 0x5C movs r1, 0x6 strb r1, [r0] ldr r1, [r3] adds r1, 0x93 ldr r2, =gBitTable ldrb r0, [r4] lsls r0, 2 adds r0, r2 ldr r2, [r0] ldrb r0, [r1] bics r0, r2 strb r0, [r1] ldrb r1, [r4] movs r0, 0x2 eors r0, r1 ldr r3, [r3] adds r0, r3 adds r0, 0x5C ldrb r2, [r0] ldrb r1, [r4] lsls r0, r1, 1 adds r0, r1 adds r0, 0x60 adds r3, r0 str r3, [sp] movs r0, 0 adds r1, r5, 0 movs r3, 0 bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution ldr r0, [r6] adds r0, 0x6 str r0, [r6] ldrb r0, [r4] bl GetBankIdentity lsls r0, 24 cmp r0, 0 bne _0804D760 ldr r1, =gUnknown_03005D10 ldrb r0, [r1, 0x2] cmp r0, 0xFE bhi _0804D760 adds r0, 0x1 strb r0, [r1, 0x2] _0804D760: ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x40 ands r0, r1 cmp r0, 0 beq _0804D7C4 ldr r1, =gActiveBank movs r0, 0 strb r0, [r1] ldr r0, =gNoOfAllBanks ldrb r0, [r0] cmp r0, 0 beq _0804D804 adds r4, r1, 0 _0804D77C: ldrb r0, [r4] cmp r0, r7 beq _0804D792 movs r0, 0 movs r1, 0x2 movs r2, 0 bl sub_8034464 ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution _0804D792: ldrb r0, [r4] adds r0, 0x1 strb r0, [r4] ldr r1, =gNoOfAllBanks lsls r0, 24 lsrs r0, 24 ldrb r1, [r1] cmp r0, r1 bcc _0804D77C b _0804D804 .pool _0804D7C4: adds r0, r7, 0 bl GetBankIdentity movs r1, 0x1 eors r0, r1 lsls r0, 24 lsrs r0, 24 bl GetBankByPlayerAI ldr r4, =gActiveBank strb r0, [r4] ldr r0, =gAbsentBankFlags ldrb r1, [r0] ldr r2, =gBitTable ldrb r3, [r4] lsls r0, r3, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 beq _0804D7F4 movs r0, 0x2 eors r3, r0 strb r3, [r4] _0804D7F4: movs r0, 0 movs r1, 0x2 movs r2, 0 bl sub_8034464 ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution _0804D804: add sp, 0x4 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk50_openpartyscreen thumb_func_start atk51_cmd51 atk51_cmd51: @ 804D820 push {r4-r7,lr} ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 beq _0804D82C b _0804DA8A _0804D82C: ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r5, =gActiveBank strb r0, [r5] ldr r0, [r4] ldrb r0, [r0, 0x2] cmp r0, 0x1 beq _0804D8CC cmp r0, 0x1 bgt _0804D858 cmp r0, 0 beq _0804D862 b _0804DA82 .pool _0804D858: cmp r0, 0x2 beq _0804D8E8 cmp r0, 0x3 beq _0804D922 b _0804DA82 _0804D862: movs r6, 0 ldr r0, =gNoOfAllBanks ldrb r0, [r0] cmp r6, r0 blt _0804D86E b _0804DA82 _0804D86E: ldr r7, =gBattleBufferB _0804D870: ldrb r0, [r7] cmp r0, 0x22 bne _0804D8AA ldr r5, =gBattleStruct ldr r0, [r5] adds r0, r6, r0 adds r0, 0x5C ldrb r1, [r7, 0x1] strb r1, [r0] ldr r0, [r5] adds r0, 0x93 ldrb r1, [r0] ldr r2, =gBitTable lsls r0, r6, 2 adds r0, r2 ldr r4, [r0] ands r1, r4 cmp r1, 0 bne _0804D8AA lsls r0, r6, 24 lsrs r0, 24 ldrb r1, [r7, 0x1] bl sub_8184FBC ldr r1, [r5] adds r1, 0x93 ldrb r0, [r1] orrs r4, r0 strb r4, [r1] _0804D8AA: movs r0, 0x80 lsls r0, 2 adds r7, r0 adds r6, 0x1 ldr r0, =gNoOfAllBanks ldrb r0, [r0] cmp r6, r0 blt _0804D870 b _0804DA82 .pool _0804D8CC: ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x40 ands r0, r1 cmp r0, 0 beq _0804D8DA b _0804DA82 _0804D8DA: ldrb r0, [r5] bl sub_803BDA0 b _0804DA82 .pool _0804D8E8: ldr r4, =gBattleStruct ldr r0, [r4] adds r0, 0x93 ldrb r1, [r0] ldr r6, =gBitTable ldrb r2, [r5] lsls r0, r2, 2 adds r0, r6 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _0804D922 ldr r0, =gBattleBufferB lsls r1, r2, 9 adds r0, 0x1 adds r1, r0 ldrb r1, [r1] adds r0, r2, 0 bl sub_8184FBC ldr r2, [r4] adds r2, 0x93 ldrb r0, [r5] lsls r0, 2 adds r0, r6 ldr r0, [r0] ldrb r1, [r2] orrs r0, r1 strb r0, [r2] _0804D922: ldr r1, =gBattleCommunication ldr r6, =gBattleBufferB ldr r7, =gActiveBank ldrb r0, [r7] lsls r0, 9 adds r2, r6, 0x1 adds r0, r2 ldrb r0, [r0] strb r0, [r1] ldrb r0, [r7] ldr r1, =gBattleStruct mov r12, r1 ldr r1, [r1] adds r1, r0, r1 adds r1, 0x5C lsls r0, 9 adds r0, r2 ldrb r0, [r0] strb r0, [r1] ldr r0, =gBattleTypeFlags ldr r1, [r0] movs r0, 0x42 ands r0, r1 cmp r0, 0x42 bne _0804DA14 ldrb r0, [r7] mov r3, r12 ldr r2, [r3] lsls r1, r0, 1 adds r1, r0 adds r1, r2 adds r1, 0x60 ldrb r2, [r1] movs r0, 0xF ands r0, r2 strb r0, [r1] ldrb r0, [r7] ldr r2, [r3] lsls r1, r0, 1 adds r1, r0 adds r1, r2 adds r1, 0x60 lsls r0, 9 adds r5, r6, 0x2 adds r0, r5 ldrb r2, [r0] movs r3, 0xF0 adds r0, r3, 0 ands r0, r2 ldrb r2, [r1] orrs r0, r2 strb r0, [r1] ldrb r1, [r7] mov r0, r12 ldr r2, [r0] lsls r0, r1, 1 adds r0, r1 adds r0, r2 adds r0, 0x61 lsls r1, 9 adds r6, 0x3 adds r1, r6 ldrb r1, [r1] strb r1, [r0] ldrb r0, [r7] movs r4, 0x2 eors r0, r4 mov r1, r12 ldr r2, [r1] lsls r1, r0, 1 adds r1, r0 adds r1, r2 adds r1, 0x60 ldrb r2, [r1] adds r0, r3, 0 ands r0, r2 strb r0, [r1] ldrb r0, [r7] eors r0, r4 mov r1, r12 ldr r2, [r1] lsls r1, r0, 1 adds r1, r0 adds r1, r2 adds r1, 0x60 ldrb r0, [r7] lsls r0, 9 adds r0, r5 ldrb r0, [r0] ands r3, r0 lsrs r3, 4 ldrb r0, [r1] orrs r3, r0 strb r3, [r1] ldrb r0, [r7] eors r4, r0 mov r2, r12 ldr r0, [r2] lsls r1, r4, 1 adds r1, r4 adds r1, r0 adds r1, 0x62 ldrb r0, [r7] lsls r0, 9 adds r0, r6 ldrb r0, [r0] strb r0, [r1] b _0804DA36 .pool _0804DA14: movs r0, 0x80 lsls r0, 15 ands r1, r0 cmp r1, 0 beq _0804DA30 ldrb r0, [r7] mov r3, r12 ldr r1, [r3] adds r1, r0, r1 adds r1, 0x5C ldrb r1, [r1] bl sub_80571DC b _0804DA36 _0804DA30: ldrb r0, [r7] bl sub_803BDA0 _0804DA36: ldr r1, =gBattleTextBuff1 movs r5, 0xFD strb r5, [r1] movs r0, 0x6 strb r0, [r1, 0x1] ldr r4, =gBattleMons ldr r3, =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, =gBattleTextBuff2 strb r5, [r2] movs r0, 0x7 strb r0, [r2, 0x1] ldr r3, =gActiveBank ldrb r0, [r3] strb r0, [r2, 0x2] ldr r1, =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] _0804DA82: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x3 str r0, [r1] _0804DA8A: pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk51_cmd51 thumb_func_start atk52_cmd52 atk52_cmd52: @ 804DAAC push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 ldr r0, =gBattlescriptCurrInstr mov r9, r0 ldr r0, [r0] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r4, =gActiveBank strb r0, [r4] ldrb r0, [r4] bl sub_803FA70 ldr r1, =gHitMarker mov r8, r1 ldr r1, =gBitTable ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, [r0] lsls r1, 28 mov r2, r8 ldr r0, [r2] bics r0, r1 str r0, [r2] ldr r2, =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, =gUnknown_0202428E lsls r0, 24 lsrs r0, 23 adds r0, r5 ldrh r1, [r0] movs r7, 0x80 lsls r7, 2 mov r10, r7 mov r0, r10 ands r0, r1 cmp r0, 0 beq _0804DB1C b _0804DC30 _0804DB1C: 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 bne _0804DB34 b _0804DC30 _0804DB34: ldr r7, =gBattleMons ldrb r2, [r4] movs r6, 0x58 adds r0, r2, 0 muls r0, r6 adds r1, r0, r7 adds r0, r1, 0 adds r0, 0x21 ldrb r0, [r0] cmp r0, 0x2 beq _0804DC30 adds r0, r1, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0x2 beq _0804DC30 adds r0, r1, 0 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x1A beq _0804DC30 adds r0, r2, 0 bl GetBankSide lsls r0, 24 lsrs r0, 23 adds r0, r5 ldrh r2, [r0] mov r1, r10 orrs r1, r2 strh r1, [r0] ldrb r0, [r4] adds r2, r0, 0 muls r2, r6 adds r0, r7, 0 adds r0, 0x50 adds r2, r0 ldr r0, [r2] ldr r1, =0xfdffffff ands r0, r1 str r0, [r2] mov r1, r8 ldr r0, [r1] movs r2, 0x41 negs r2, r2 ands r0, r2 str r0, [r1] ldrb r0, [r4] bl GetBankSide ldr r2, =gSideTimers lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r2 ldrb r0, [r1, 0xA] movs r1, 0x5 subs r1, r0 lsls r1, 25 lsrs r1, 24 ldr r5, =gBattleMoveDamage ldrb r0, [r4] muls r0, r6 adds r0, r7 ldrh r0, [r0, 0x2C] bl __divsi3 str r0, [r5] cmp r0, 0 bne _0804DBC8 movs r0, 0x1 str r0, [r5] _0804DBC8: ldr r0, =gBattleScripting ldrb r1, [r4] strb r1, [r0, 0x17] bl b_movescr_stack_push_cursor mov r7, r9 ldr r0, [r7] ldrb r0, [r0, 0x1] cmp r0, 0 bne _0804DC14 ldr r0, =gUnknown_082DAE90 str r0, [r7] b _0804DD8E .pool _0804DC14: cmp r0, 0x1 bne _0804DC24 ldr r0, =gUnknown_082DAE59 mov r1, r9 str r0, [r1] b _0804DD8E .pool _0804DC24: ldr r0, =gUnknown_082DAEC7 mov r2, r9 str r0, [r2] b _0804DD8E .pool _0804DC30: ldr r2, =gBattleMons ldr r1, =gActiveBank ldrb r3, [r1] movs r0, 0x58 muls r0, r3 adds r0, r2 adds r0, 0x20 ldrb r0, [r0] adds r5, r1, 0 ldr r4, =gDisableStructs cmp r0, 0x36 bne _0804DC5E lsls r0, r3, 3 subs r0, r3 lsls r0, 2 adds r2, r0, r4 ldrb r1, [r2, 0x18] lsls r0, r1, 30 cmp r0, 0 blt _0804DC5E movs r0, 0x1 orrs r0, r1 strb r0, [r2, 0x18] _0804DC5E: ldrb r0, [r5] lsls r1, r0, 3 subs r1, r0 lsls r1, 2 adds r1, r4 ldrb r2, [r1, 0x18] movs r0, 0x3 negs r0, r0 ands r0, r2 strb r0, [r1, 0x18] ldrb r1, [r5] movs r0, 0 str r0, [sp] movs r2, 0 movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 beq _0804DC88 b _0804DD8E _0804DC88: ldrb r1, [r5] movs r0, 0 movs r2, 0 bl berry_effects_maybe lsls r0, 24 cmp r0, 0 bne _0804DD8E ldrb r0, [r5] bl GetBankSide ldr r1, =gUnknown_0202428E lsls r0, 24 lsrs r0, 23 adds r0, r1 ldrh r2, [r0] ldr r1, =0x0000fdff ands r1, r2 strh r1, [r0] movs r4, 0 ldr r0, =gNoOfAllBanks ldrb r7, [r0] cmp r4, r7 bge _0804DCD8 ldr r6, =gTurnOrder adds r1, r5, 0 ldr r5, =gUnknown_0202407A movs r3, 0xC adds r2, r0, 0 _0804DCC2: adds r0, r4, r6 ldrb r0, [r0] ldrb r7, [r1] cmp r0, r7 bne _0804DCD0 adds r0, r4, r5 strb r3, [r0] _0804DCD0: adds r4, 0x1 ldrb r0, [r2] cmp r4, r0 blt _0804DCC2 _0804DCD8: movs r4, 0 ldr r0, =gNoOfAllBanks ldrb r0, [r0] cmp r4, r0 bge _0804DD0C ldr r6, =gBattleStruct ldr r5, =gBattleMons _0804DCE6: lsls r0, r4, 24 lsrs r0, 24 bl GetBankSide lsls r0, 24 lsrs r0, 23 adds r0, 0xA8 ldr r1, [r6] adds r1, r0 movs r0, 0x58 muls r0, r4 adds r0, r5 ldrh r0, [r0, 0x28] strh r0, [r1] adds r4, 0x1 ldr r0, =gNoOfAllBanks ldrb r0, [r0] cmp r4, r0 blt _0804DCE6 _0804DD0C: ldr r0, =gBattlescriptCurrInstr ldr r1, [r0] ldrb r1, [r1, 0x1] adds r5, r0, 0 cmp r1, 0x5 bne _0804DD88 ldr r0, =gHitMarker ldr r0, [r0] lsrs r4, r0, 28 ldr r1, =gUnknown_0202420D ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] ldr r2, =gBitTable b _0804DD6E .pool _0804DD60: ldr r0, =gNoOfAllBanks ldrb r3, [r1] ldrb r0, [r0] cmp r3, r0 bcs _0804DD88 adds r0, r3, 0x1 strb r0, [r1] _0804DD6E: ldrb r0, [r1] lsls r0, 2 adds r0, r2 ldr r3, [r0] adds r0, r4, 0 ands r0, r3 cmp r0, 0 beq _0804DD60 ldr r0, =gAbsentBankFlags ldrb r0, [r0] ands r0, r3 cmp r0, 0 bne _0804DD60 _0804DD88: ldr r0, [r5] adds r0, 0x2 str r0, [r5] _0804DD8E: add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk52_cmd52 thumb_func_start sub_804DDA8 sub_804DDA8: @ 804DDA8 push {r4,r5,lr} ldr r5, =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] bl GetBankByPlayerAI ldr r4, =gActiveBank strb r0, [r4] movs r0, 0 bl dp01_build_cmdbuf_x08_8_8_8 ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution ldr r0, [r5] adds r0, 0x2 str r0, [r5] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_804DDA8 thumb_func_start atk54_802511C atk54_802511C: @ 804DDD8 push {r4,r5,lr} ldr r5, =gActiveBank ldr r0, =gBankAttacker ldrb r0, [r0] strb r0, [r5] ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r1, [r0, 0x1] ldrb r0, [r0, 0x2] lsls r0, 8 orrs r1, r0 movs r0, 0 bl dp01_build_cmdbuf_x2B_aa_0 ldrb r0, [r5] bl dp01_battle_side_mark_buffer_for_execution ldr r0, [r4] adds r0, 0x3 str r0, [r4] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end atk54_802511C thumb_func_start sub_804DE14 sub_804DE14: @ 804DE14 push {r4,r5,lr} ldr r5, =gActiveBank ldr r0, =gBankAttacker ldrb r0, [r0] strb r0, [r5] ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r1, [r0, 0x1] ldrb r0, [r0, 0x2] lsls r0, 8 orrs r1, r0 movs r0, 0 movs r2, 0 bl sub_8034300 ldrb r0, [r5] bl dp01_battle_side_mark_buffer_for_execution ldr r0, [r4] adds r0, 0x3 str r0, [r4] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_804DE14 thumb_func_start atk56_8025194 atk56_8025194: @ 804DE50 push {r4,r5,lr} ldr r5, =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r4, =gActiveBank strb r0, [r4] movs r0, 0 bl dp01_build_cmdbuf_x2D_2D_2D_2D ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution ldr r0, [r5] adds r0, 0x2 str r0, [r5] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end atk56_8025194 thumb_func_start atk57_80251C4_flee atk57_80251C4_flee: @ 804DE80 push {r4,lr} movs r0, 0 bl GetBankByPlayerAI ldr r4, =gActiveBank strb r0, [r4] ldr r0, =gBattleOutcome ldrb r1, [r0] movs r0, 0 bl dp01_build_cmdbuf_x37_a ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .pool thumb_func_end atk57_80251C4_flee thumb_func_start atk58_cmd58 atk58_cmd58: @ 804DEB8 push {r4,r5,lr} ldr r5, =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r4, =gActiveBank strb r0, [r4] movs r0, 0 movs r1, 0x1 bl dp01_build_cmdbuf_x06_a ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution ldr r0, [r5] adds r0, 0x2 str r0, [r5] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end atk58_cmd58 thumb_func_start atk59_8025230 atk59_8025230: @ 804DEEC push {r4-r7,lr} ldr r0, =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, =gBattleStruct ldr r0, [r0] ldrb r1, [r0, 0x10] movs r0, 0x64 muls r0, r1 ldr r1, =gPlayerParty adds r0, r1 ldrb r1, [r2, 0x9] bl sub_8069318 lsls r0, 16 lsrs r5, r0, 16 ldr r0, =0x0000fffe cmp r5, r0 bne _0804DF56 adds r7, r5, 0 _0804DF3A: ldr r0, =gBattleStruct ldr r0, [r0] ldrb r1, [r0, 0x10] movs r0, 0x64 muls r0, r1 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0 bl sub_8069318 lsls r0, 16 lsrs r5, r0, 16 cmp r5, r7 beq _0804DF3A _0804DF56: cmp r5, 0 bne _0804DF70 ldr r0, =gBattlescriptCurrInstr str r4, [r0] b _0804E018 .pool _0804DF70: ldr r0, =0x0000ffff cmp r5, r0 bne _0804DF88 ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0xA str r0, [r1] b _0804E018 .pool _0804DF88: movs r0, 0 bl GetBankByPlayerAI ldr r1, =gActiveBank strb r0, [r1] ldr r2, =gBattlePartyID ldrb r3, [r1] lsls r0, r3, 1 adds r0, r2 ldr r1, =gBattleStruct ldr r1, [r1] ldrh r0, [r0] ldrb r1, [r1, 0x10] cmp r0, r1 bne _0804DFC8 ldr r4, =gBattleMons movs r0, 0x58 adds r2, r3, 0 muls r2, r0 adds r0, r4, 0 adds r0, 0x50 adds r0, r2, r0 ldr r0, [r0] movs r1, 0x80 lsls r1, 14 ands r0, r1 cmp r0, 0 bne _0804DFC8 adds r0, r2, r4 adds r1, r5, 0 bl sub_80691B0 _0804DFC8: ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _0804E014 movs r0, 0x2 bl GetBankByPlayerAI ldr r1, =gActiveBank strb r0, [r1] ldr r2, =gBattlePartyID ldrb r3, [r1] lsls r0, r3, 1 adds r0, r2 ldr r1, =gBattleStruct ldr r1, [r1] ldrh r0, [r0] ldrb r1, [r1, 0x10] cmp r0, r1 bne _0804E014 ldr r4, =gBattleMons movs r0, 0x58 adds r2, r3, 0 muls r2, r0 adds r0, r4, 0 adds r0, 0x50 adds r0, r2, r0 ldr r0, [r0] movs r1, 0x80 lsls r1, 14 ands r0, r1 cmp r0, 0 bne _0804E014 adds r0, r2, r4 adds r1, r5, 0 bl sub_80691B0 _0804E014: ldr r0, =gBattlescriptCurrInstr str r6, [r0] _0804E018: pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk59_8025230 thumb_func_start sub_804E038 sub_804E038: @ 804E038 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x4 ldr r0, =gActiveBank movs r1, 0 strb r1, [r0] ldr r0, =gBattleScripting ldrb r1, [r0, 0x1F] adds r2, r0, 0 cmp r1, 0x6 bls _0804E052 b _0804E3B8 _0804E052: lsls r0, r1, 2 ldr r1, =_0804E068 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0804E068: .4byte _0804E084 .4byte _0804E0BC .4byte _0804E162 .4byte _0804E1B8 .4byte _0804E1E4 .4byte _0804E38C .4byte _0804E3AC _0804E084: movs r4, 0 str r4, [sp] movs r0, 0x18 movs r1, 0x8 movs r2, 0x1D movs r3, 0xD bl sub_8056A3C ldr r0, =gUnknown_085CCABB movs r1, 0xC bl battle_show_message_maybe ldr r1, =gBattleScripting ldrb r0, [r1, 0x1F] adds r0, 0x1 strb r0, [r1, 0x1F] ldr r0, =gBattleCommunication strb r4, [r0, 0x1] movs r0, 0 bl sub_8056B74 b _0804E3B8 .pool _0804E0BC: ldr r0, =gMain ldrh r1, [r0, 0x2E] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _0804E0E4 ldr r4, =gBattleCommunication ldrb r0, [r4, 0x1] cmp r0, 0 beq _0804E0E4 movs r0, 0x5 bl PlaySE ldrb r0, [r4, 0x1] bl sub_8056BAC movs r0, 0 strb r0, [r4, 0x1] bl sub_8056B74 _0804E0E4: ldr r0, =gMain ldrh r1, [r0, 0x2E] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0804E10C ldr r4, =gBattleCommunication ldrb r0, [r4, 0x1] cmp r0, 0 bne _0804E10C movs r0, 0x5 bl PlaySE ldrb r0, [r4, 0x1] bl sub_8056BAC movs r0, 0x1 strb r0, [r4, 0x1] bl sub_8056B74 _0804E10C: ldr r0, =gMain ldrh r1, [r0, 0x2E] movs r5, 0x1 adds r0, r5, 0 ands r0, r1 cmp r0, 0 beq _0804E150 movs r0, 0x5 bl PlaySE ldr r0, =gBattleCommunication ldrb r4, [r0, 0x1] cmp r4, 0 bne _0804E20A str r5, [sp] movs r0, 0x18 movs r1, 0x8 movs r2, 0x1D movs r3, 0xD bl sub_8056A3C movs r0, 0x1 negs r0, r0 str r4, [sp] movs r1, 0 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade b _0804E192 .pool _0804E150: movs r0, 0x2 ands r0, r1 cmp r0, 0 bne _0804E15A b _0804E3B8 _0804E15A: movs r0, 0x5 bl PlaySE b _0804E20A _0804E162: ldr r0, =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0804E170 b _0804E3B8 _0804E170: bl FreeAllWindowBuffers ldr r0, =gPlayerParty ldr r1, =gBattleStruct ldr r1, [r1] ldrb r1, [r1, 0x10] ldr r2, =gPlayerPartyCount ldrb r2, [r2] subs r2, 0x1 lsls r2, 24 lsrs r2, 24 ldr r3, =sub_80A92F8 ldr r4, =gUnknown_020244E2 ldrh r4, [r4] str r4, [sp] bl sub_81BFA38 _0804E192: ldr r1, =gBattleScripting ldrb r0, [r1, 0x1F] adds r0, 0x1 strb r0, [r1, 0x1F] b _0804E3B8 .pool _0804E1B8: ldr r0, =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0804E1C6 b _0804E3B8 _0804E1C6: ldr r0, =gMain ldr r1, [r0, 0x4] ldr r0, =sub_8038420 cmp r1, r0 beq _0804E1D2 b _0804E3B8 _0804E1D2: ldrb r0, [r2, 0x1F] adds r0, 0x1 b _0804E3B6 .pool _0804E1E4: ldr r0, =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0804E1F2 b _0804E3B8 _0804E1F2: ldr r0, =gMain ldr r1, [r0, 0x4] ldr r0, =sub_8038420 cmp r1, r0 beq _0804E1FE b _0804E3B8 _0804E1FE: bl sub_81C1B94 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x4 bne _0804E224 _0804E20A: ldr r1, =gBattleScripting movs r0, 0x5 strb r0, [r1, 0x1F] b _0804E3B8 .pool _0804E224: ldr r6, =gBattleStruct ldr r0, [r6] ldrb r0, [r0, 0x10] movs r1, 0x64 mov r8, r1 mov r1, r8 muls r1, r0 adds r0, r1, 0 ldr r7, =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 sub_806E804 cmp r0, 0 beq _0804E274 ldr r0, =0x0000013f ldr r1, =gActiveBank ldrb r1, [r1] bl b_std_message ldr r1, =gBattleScripting movs r0, 0x6 strb r0, [r1, 0x1F] b _0804E3B8 .pool _0804E274: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] ldr r1, =gBattleTextBuff2 movs r0, 0xFD strb r0, [r1] movs r0, 0x2 strb r0, [r1, 0x1] strb r4, [r1, 0x2] lsrs r0, r4, 8 strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldr r0, [r6] ldrb r0, [r0, 0x10] mov r1, r8 muls r1, r0 adds r0, r1, 0 adds r0, r7 adds r1, r5, 0 bl sub_806B9A8 ldr r0, [r6] ldrb r0, [r0, 0x10] mov r1, r8 muls r1, r0 adds r0, r1, 0 adds r0, r7 ldr r7, =gUnknown_020244E2 ldrh r1, [r7] adds r2, r5, 0 bl sub_80691F4 ldr r0, =gBattlePartyID ldr r1, [r6] ldrh r0, [r0] ldrb r1, [r1, 0x10] cmp r0, r1 bne _0804E30A ldr r4, =gBattleMons ldr r0, [r4, 0x50] movs r1, 0x80 lsls r1, 14 ands r0, r1 cmp r0, 0 bne _0804E30A ldr r0, =gDisableStructs ldrb r1, [r0, 0x18] lsrs r1, 4 ldr r2, =gBitTable lsls r0, r5, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _0804E30A adds r0, r4, 0 adds r1, r5, 0 bl sub_806B9E4 ldrh r1, [r7] adds r0, r4, 0 adds r2, r5, 0 bl sub_8069234 _0804E30A: ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _0804E3B8 ldr r2, =gBattlePartyID ldr r0, =gBattleStruct ldr r1, [r0] ldrh r0, [r2, 0x4] ldrb r1, [r1, 0x10] cmp r0, r1 bne _0804E3B8 ldr r4, =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 _0804E3B8 ldr r0, =gDisableStructs adds r0, 0x50 ldrb r1, [r0] lsrs r1, 4 ldr r2, =gBitTable lsls r0, r5, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _0804E3B8 adds r4, 0xB0 adds r0, r4, 0 adds r1, r5, 0 bl sub_806B9E4 ldr r0, =gUnknown_020244E2 ldrh r1, [r0] adds r0, r4, 0 adds r2, r5, 0 bl sub_8069234 b _0804E3B8 .pool _0804E38C: movs r0, 0x1 str r0, [sp] movs r0, 0x18 movs r1, 0x8 movs r2, 0x1D movs r3, 0xD bl sub_8056A3C ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0804E3B8 .pool _0804E3AC: ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 bne _0804E3B8 movs r0, 0x2 _0804E3B6: strb r0, [r2, 0x1F] _0804E3B8: add sp, 0x4 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_804E038 thumb_func_start atk5B_80256E0 atk5B_80256E0: @ 804E3C8 push {r4,r5,lr} sub sp, 0x4 ldr r5, =gBattleScripting ldrb r4, [r5, 0x1F] cmp r4, 0 beq _0804E3E0 cmp r4, 0x1 beq _0804E410 b _0804E4FA .pool _0804E3E0: str r4, [sp] movs r0, 0x18 movs r1, 0x8 movs r2, 0x1D movs r3, 0xD bl sub_8056A3C ldr r0, =gUnknown_085CCABB movs r1, 0xC bl battle_show_message_maybe ldrb r0, [r5, 0x1F] adds r0, 0x1 strb r0, [r5, 0x1F] ldr r0, =gBattleCommunication strb r4, [r0, 0x1] movs r0, 0 bl sub_8056B74 b _0804E4FA .pool _0804E410: ldr r0, =gMain ldrh r1, [r0, 0x2E] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _0804E438 ldr r4, =gBattleCommunication ldrb r0, [r4, 0x1] cmp r0, 0 beq _0804E438 movs r0, 0x5 bl PlaySE ldrb r0, [r4, 0x1] bl sub_8056BAC movs r0, 0 strb r0, [r4, 0x1] bl sub_8056B74 _0804E438: ldr r0, =gMain ldrh r1, [r0, 0x2E] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0804E460 ldr r4, =gBattleCommunication ldrb r0, [r4, 0x1] cmp r0, 0 bne _0804E460 movs r0, 0x5 bl PlaySE ldrb r0, [r4, 0x1] bl sub_8056BAC movs r0, 0x1 strb r0, [r4, 0x1] bl sub_8056B74 _0804E460: ldr r0, =gMain ldrh r1, [r0, 0x2E] movs r4, 0x1 adds r0, r4, 0 ands r0, r1 cmp r0, 0 beq _0804E4C4 movs r0, 0x5 bl PlaySE ldr r0, =gBattleCommunication ldrb r0, [r0, 0x1] cmp r0, 0 beq _0804E4A4 ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0804E4AC .pool _0804E4A4: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0804E4AC: movs r0, 0x1 str r0, [sp] movs r0, 0x18 movs r1, 0x8 movs r2, 0x1D movs r3, 0xD bl sub_8056A3C b _0804E4FA .pool _0804E4C4: movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0804E4FA movs r0, 0x5 bl PlaySE ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] str r4, [sp] movs r0, 0x18 movs r1, 0x8 movs r2, 0x1D movs r3, 0xD bl sub_8056A3C _0804E4FA: add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end atk5B_80256E0 thumb_func_start atk5C_cmd5c atk5C_cmd5c: @ 804E508 push {r4,lr} ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r2, =gActiveBank strb r0, [r2] ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 bne _0804E58C ldr r0, =gHitMarker ldr r0, [r0] movs r1, 0x80 lsls r1, 1 ands r0, r1 cmp r0, 0 beq _0804E55A ldr r1, =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 _0804E55A ldr r0, =gDisableStructs lsls r1, r2, 3 subs r1, r2 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0xA] cmp r0, 0 bne _0804E58C _0804E55A: movs r0, 0 bl dp01_build_cmdbuf_x29_29_29_29 ldr r0, =gActiveBank ldrb r0, [r0] bl dp01_battle_side_mark_buffer_for_execution ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] b _0804E592 .pool _0804E58C: ldr r0, [r4] adds r0, 0x2 str r0, [r4] _0804E592: pop {r4} pop {r0} bx r0 thumb_func_end atk5C_cmd5c thumb_func_start sub_804E598 sub_804E598: @ 804E598 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} lsls r0, 16 lsrs r6, r0, 16 movs r7, 0 movs r5, 0 movs r0, 0x80 lsls r0, 3 cmp r6, r0 bne _0804E5D8 ldr r0, =gBattleResources ldr r0, [r0] ldr r0, [r0] adds r0, 0x94 ldrb r2, [r0] ldr r0, =gBattleStruct ldr r0, [r0] adds r0, 0x4A ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 muls r0, r2 b _0804E6CA .pool _0804E5D8: ldr r0, =gTrainers lsls r2, r6, 2 adds r1, r2, r6 lsls r1, 3 adds r4, r1, r0 ldrb r3, [r4] mov r12, r0 cmp r3, 0x1 beq _0804E62E cmp r3, 0x1 bgt _0804E5F8 cmp r3, 0 beq _0804E602 b _0804E644 .pool _0804E5F8: cmp r3, 0x2 beq _0804E618 cmp r3, 0x3 beq _0804E62E b _0804E644 _0804E602: mov r0, r12 adds r0, 0x24 adds r0, r1, r0 ldr r1, [r0] adds r0, r4, 0 adds r0, 0x20 ldrb r0, [r0] lsls r0, 3 adds r0, r1 subs r0, 0x8 b _0804E642 _0804E618: mov r0, r12 adds r0, 0x24 adds r0, r1, r0 ldr r1, [r0] adds r0, r4, 0 adds r0, 0x20 ldrb r0, [r0] lsls r0, 3 adds r0, r1 subs r0, 0x8 b _0804E642 _0804E62E: mov r0, r12 adds r0, 0x24 adds r0, r1, r0 ldr r1, [r0] adds r0, r4, 0 adds r0, 0x20 ldrb r0, [r0] lsls r0, 4 adds r0, r1 subs r0, 0x10 _0804E642: ldrb r5, [r0, 0x2] _0804E644: ldr r1, =gUnknown_0831AEB8 lsls r0, r7, 2 adds r4, r0, r1 ldrb r3, [r4] ldr r0, =gBattleStruct mov r8, r0 mov r9, r1 ldr r1, =gBattleTypeFlags mov r10, r1 cmp r3, 0xFF beq _0804E67A adds r0, r2, r6 lsls r0, 3 add r0, r12 ldrb r1, [r0, 0x1] cmp r3, r1 beq _0804E67A adds r2, r0, 0 adds r0, r4, 0 _0804E66A: adds r0, 0x4 adds r7, 0x1 ldrb r1, [r0] cmp r1, 0xFF beq _0804E67A ldrb r3, [r2, 0x1] cmp r1, r3 bne _0804E66A _0804E67A: mov r0, r10 ldr r1, [r0] movs r0, 0x80 lsls r0, 8 ands r0, r1 cmp r0, 0 bne _0804E6B4 movs r0, 0x1 ands r1, r0 cmp r1, 0 beq _0804E6B4 mov r3, r8 ldr r0, [r3] adds r0, 0x4A ldrb r0, [r0] lsls r0, 2 adds r1, r5, 0 muls r1, r0 lsls r0, r7, 2 add r0, r9 ldrb r0, [r0, 0x1] lsls r0, 1 b _0804E6C8 .pool _0804E6B4: mov r1, r8 ldr r0, [r1] adds r0, 0x4A ldrb r0, [r0] lsls r0, 2 adds r1, r5, 0 muls r1, r0 lsls r0, r7, 2 add r0, r9 ldrb r0, [r0, 0x1] _0804E6C8: muls r0, r1 _0804E6CA: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_804E598 thumb_func_start sub_804E6D8 sub_804E6D8: @ 804E6D8 push {r4,lr} ldr r0, =gUnknown_02038BCA ldrh r0, [r0] bl sub_804E598 adds r4, r0, 0 ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x80 lsls r1, 8 ands r0, r1 cmp r0, 0 beq _0804E6FC ldr r0, =gUnknown_02038BCC ldrh r0, [r0] bl sub_804E598 adds r4, r0 _0804E6FC: ldr r0, =gSaveBlock1Ptr ldr r0, [r0] movs r1, 0x92 lsls r1, 3 adds r0, r1 adds r1, r4, 0 bl add_money ldr r1, =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, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_804E6D8 thumb_func_start atk5E_8025A70 atk5E_8025A70: @ 804E764 push {r4-r7,lr} mov r7, r8 push {r7} ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r6, =gActiveBank strb r0, [r6] ldr r5, =gBattleCommunication ldrb r0, [r5] mov r8, r4 cmp r0, 0 beq _0804E794 cmp r0, 0x1 beq _0804E7AC b _0804E800 .pool _0804E794: movs r0, 0 movs r1, 0 movs r2, 0 bl dp01_build_cmdbuf_x00_a_b_0 ldrb r0, [r6] bl dp01_battle_side_mark_buffer_for_execution ldrb r0, [r5] adds r0, 0x1 strb r0, [r5] b _0804E800 _0804E7AC: ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 bne _0804E800 ldrb r0, [r6] lsls r0, 9 ldr r1, =gUnknown_02023868 adds r0, r1 mov r12, r0 movs r2, 0 adds r4, r6, 0 movs r5, 0x58 ldr r6, =gUnknown_020240A8 adds r7, r6, 0 subs r7, 0x18 mov r3, r12 adds r3, 0xC _0804E7CE: 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 _0804E7CE mov r1, r8 ldr r0, [r1] adds r0, 0x2 str r0, [r1] _0804E800: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk5E_8025A70 thumb_func_start atk5F_8025B24 atk5F_8025B24: @ 804E818 push {lr} ldr r0, =gActiveBank ldr r2, =gBankAttacker ldrb r3, [r2] strb r3, [r0] ldr r1, =gBankTarget ldrb r0, [r1] strb r0, [r2] strb r3, [r1] ldr r2, =gHitMarker ldr r1, [r2] movs r3, 0x80 lsls r3, 5 adds r0, r1, 0 ands r0, r3 cmp r0, 0 beq _0804E854 ldr r0, =0xffffefff ands r1, r0 b _0804E856 .pool _0804E854: orrs r1, r3 _0804E856: str r1, [r2] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .pool thumb_func_end atk5F_8025B24 thumb_func_start atk60_cmd60 atk60_cmd60: @ 804E868 push {lr} ldr r0, =gBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 cmp r0, 0 bne _0804E882 ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] bl IncrementGameStat _0804E882: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] pop {r0} bx r0 .pool thumb_func_end atk60_cmd60 thumb_func_start atk61_8025BA4 atk61_8025BA4: @ 804E898 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x30 ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 bne _0804E94C ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r1, =gActiveBank strb r0, [r1] ldrb r0, [r1] bl GetBankSide lsls r0, 24 ldr r1, =gEnemyParty mov r8, r1 cmp r0, 0 bne _0804E8CA ldr r0, =gPlayerParty mov r8, r0 _0804E8CA: movs r7, 0 add r6, sp, 0x4 mov r5, sp _0804E8D0: 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 _0804E8F4 adds r0, r4, 0 movs r1, 0x41 bl GetMonData movs r1, 0xCE lsls r1, 1 cmp r0, r1 bne _0804E914 _0804E8F4: ldr r0, =0x0000ffff strh r0, [r5] movs r0, 0 b _0804E926 .pool _0804E914: adds r0, r4, 0 movs r1, 0x39 bl GetMonData strh r0, [r5] adds r0, r4, 0 movs r1, 0x37 bl GetMonData _0804E926: str r0, [r6] adds r6, 0x8 adds r5, 0x8 adds r7, 0x1 cmp r7, 0x5 ble _0804E8D0 movs r0, 0 mov r1, sp movs r2, 0x1 bl dp01_build_cmdbuf_x30_TODO ldr r0, =gActiveBank ldrb r0, [r0] bl dp01_battle_side_mark_buffer_for_execution ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] _0804E94C: add sp, 0x30 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk61_8025BA4 thumb_func_start atk62_08025C6C atk62_08025C6C: @ 804E960 push {r4,r5,lr} ldr r5, =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r4, =gActiveBank strb r0, [r4] movs r0, 0 bl dp01_build_cmdbuf_x31_31_31_31 ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution ldr r0, [r5] adds r0, 0x2 str r0, [r5] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end atk62_08025C6C thumb_func_start atk63_jumptoattack atk63_jumptoattack: @ 804E990 push {r4,lr} ldr r0, =gBattlescriptCurrInstr ldr r1, [r0] ldrb r1, [r1, 0x1] adds r4, r0, 0 cmp r1, 0 beq _0804E9B4 ldr r0, =gCurrentMove ldr r1, =gRandomMove ldrh r1, [r1] strh r1, [r0] b _0804E9C2 .pool _0804E9B4: ldr r2, =gUnknown_020241EC ldr r1, =gCurrentMove ldr r0, =gRandomMove ldrh r0, [r0] strh r0, [r1] strh r0, [r2] adds r0, r1, 0 _0804E9C2: ldr r3, =gUnknown_082D86A8 ldr r2, =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 .pool thumb_func_end atk63_jumptoattack thumb_func_start atk64_statusanimation atk64_statusanimation: @ 804E9F4 push {r4,lr} ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 bne _0804EA5C ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r4, =gActiveBank strb r0, [r4] ldr r1, =gStatuses3 ldrb r2, [r4] lsls r0, r2, 2 adds r0, r1 ldr r0, [r0] ldr r1, =0x000400c0 ands r0, r1 cmp r0, 0 bne _0804EA54 ldr r0, =gDisableStructs lsls r1, r2, 3 subs r1, r2 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0xA] cmp r0, 0 bne _0804EA54 ldr r0, =gHitMarker ldr r0, [r0] movs r1, 0x80 ands r0, r1 cmp r0, 0 bne _0804EA54 ldr r1, =gBattleMons movs r0, 0x58 muls r0, r2 adds r1, 0x4C adds r0, r1 ldr r2, [r0] movs r0, 0 movs r1, 0 bl dp01_build_cmdbuf_x1B_aaaa_b ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution _0804EA54: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] _0804EA5C: pop {r4} pop {r0} bx r0 .pool thumb_func_end atk64_statusanimation thumb_func_start atk65_8025D90 atk65_8025D90: @ 804EA84 push {r4,r5,lr} ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 bne _0804EB04 ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r5, =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, =gStatuses3 ldrb r2, [r5] lsls r0, r2, 2 adds r0, r1 ldr r0, [r0] ldr r1, =0x000400c0 ands r0, r1 cmp r0, 0 bne _0804EAFC ldr r0, =gDisableStructs lsls r1, r2, 3 subs r1, r2 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0xA] cmp r0, 0 bne _0804EAFC ldr r0, =gHitMarker ldr r0, [r0] movs r1, 0x80 ands r0, r1 cmp r0, 0 bne _0804EAFC ldr r1, =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 dp01_build_cmdbuf_x1B_aaaa_b ldrb r0, [r5] bl dp01_battle_side_mark_buffer_for_execution _0804EAFC: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x6 str r0, [r1] _0804EB04: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end atk65_8025D90 thumb_func_start atk66_8025E38 atk66_8025E38: @ 804EB2C push {r4,r5,lr} ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 bne _0804EB9E ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r5, =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, =gStatuses3 ldrb r3, [r5] lsls r0, r3, 2 adds r0, r1 ldr r0, [r0] ldr r1, =0x000400c0 ands r0, r1 cmp r0, 0 bne _0804EB96 ldr r0, =gDisableStructs lsls r1, r3, 3 subs r1, r3 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0xA] cmp r0, 0 bne _0804EB96 ldr r0, =gHitMarker ldr r0, [r0] movs r1, 0x80 ands r0, r1 cmp r0, 0 bne _0804EB96 ldrb r1, [r4, 0x2] movs r0, 0 bl dp01_build_cmdbuf_x1B_aaaa_b ldrb r0, [r5] bl dp01_battle_side_mark_buffer_for_execution _0804EB96: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x7 str r0, [r1] _0804EB9E: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end atk66_8025E38 thumb_func_start atk67_8025ECC atk67_8025ECC: @ 804EBC0 push {r4,r5,lr} sub sp, 0x4 ldr r5, =gBattleCommunication ldrb r4, [r5] cmp r4, 0 beq _0804EBD8 cmp r4, 0x1 beq _0804EC04 b _0804EC96 .pool _0804EBD8: str r4, [sp] movs r0, 0x18 movs r1, 0x8 movs r2, 0x1D movs r3, 0xD bl sub_8056A3C ldr r0, =gUnknown_085CCABB movs r1, 0xC bl battle_show_message_maybe ldrb r0, [r5] adds r0, 0x1 strb r0, [r5] strb r4, [r5, 0x1] movs r0, 0 bl sub_8056B74 b _0804EC96 .pool _0804EC04: ldr r0, =gMain ldrh r1, [r0, 0x2E] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _0804EC2A ldrb r0, [r5, 0x1] cmp r0, 0 beq _0804EC2A movs r0, 0x5 bl PlaySE ldrb r0, [r5, 0x1] bl sub_8056BAC movs r0, 0 strb r0, [r5, 0x1] bl sub_8056B74 _0804EC2A: ldr r0, =gMain ldrh r1, [r0, 0x2E] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0804EC52 ldr r4, =gBattleCommunication ldrb r0, [r4, 0x1] cmp r0, 0 bne _0804EC52 movs r0, 0x5 bl PlaySE ldrb r0, [r4, 0x1] bl sub_8056BAC movs r0, 0x1 strb r0, [r4, 0x1] bl sub_8056B74 _0804EC52: ldr r0, =gMain ldrh r1, [r0, 0x2E] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0804EC70 ldr r0, =gBattleCommunication movs r4, 0x1 strb r4, [r0, 0x1] b _0804EC7A .pool _0804EC70: movs r4, 0x1 adds r0, r4, 0 ands r0, r1 cmp r0, 0 beq _0804EC96 _0804EC7A: movs r0, 0x5 bl PlaySE str r4, [sp] movs r0, 0x18 movs r1, 0x8 movs r2, 0x1D movs r3, 0xD bl sub_8056A3C ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] _0804EC96: add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end atk67_8025ECC thumb_func_start sub_804ECA4 sub_804ECA4: @ 804ECA4 push {r4,r5,lr} movs r1, 0 ldr r2, =gNoOfAllBanks ldr r5, =gBattlescriptCurrInstr ldrb r0, [r2] cmp r1, r0 bge _0804ECC2 ldr r4, =gUnknown_0202407A movs r3, 0xC _0804ECB6: adds r0, r1, r4 strb r3, [r0] adds r1, 0x1 ldrb r0, [r2] cmp r1, r0 blt _0804ECB6 _0804ECC2: ldr r0, [r5] adds r0, 0x1 str r0, [r5] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_804ECA4 thumb_func_start atk69_8025FE0 atk69_8025FE0: @ 804ECDC push {r4-r7,lr} ldr r7, =gBattleMons ldr r6, =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 _0804ED10 ldr r1, =gEnigmaBerries lsls r0, r2, 3 subs r0, r2 lsls r0, 2 adds r0, r1 ldrb r4, [r0, 0x7] ldrb r6, [r0, 0x1A] b _0804ED2A .pool _0804ED10: 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 _0804ED2A: ldr r1, =gUnknown_0202420F ldr r5, =gBankTarget ldrb r0, [r5] strb r0, [r1] cmp r4, 0x27 bne _0804ED68 bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x64 bl __umodsi3 lsls r0, 16 lsrs r0, 16 cmp r0, r6 bcs _0804ED68 ldrb r0, [r5] movs r1, 0x27 bl b_history__record_item_x12_of_player ldr r2, =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] _0804ED68: ldr r2, =gBattleMons ldr r3, =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 _0804EE38 ldr r2, =gBattleMoves ldr r0, =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0] cmp r0, 0x65 beq _0804EDBA ldr r0, =gProtectStructs lsls r1, r4, 4 adds r1, r0 ldrb r0, [r1] lsls r0, 30 cmp r0, 0 blt _0804EDBA ldr r0, =gSpecialStatuses lsls r1, r4, 2 adds r1, r4 lsls r1, 2 adds r1, r0 ldrb r0, [r1] lsrs r0, 7 cmp r0, 0 beq _0804EE38 _0804EDBA: ldrb r0, [r3] movs r4, 0x58 muls r0, r4 adds r0, r5 ldrh r1, [r0, 0x28] ldr r2, =gBattleMoveDamage ldr r0, [r2] cmp r1, r0 bgt _0804EE38 subs r0, r1, 0x1 str r0, [r2] ldr r1, =gProtectStructs ldrb r3, [r3] lsls r0, r3, 4 adds r0, r1 ldrb r0, [r0] lsls r0, 30 cmp r0, 0 bge _0804EE10 ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r2, 0x40 orrs r1, r2 strb r1, [r0] b _0804EE38 .pool _0804EE10: ldr r0, =gSpecialStatuses lsls r1, r3, 2 adds r1, r3 lsls r1, 2 adds r1, r0 ldrb r0, [r1] lsrs r0, 7 cmp r0, 0 beq _0804EE38 ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x80 orrs r0, r1 strb r0, [r2] ldr r1, =gUnknown_02024208 adds r0, r3, 0 muls r0, r4 adds r0, r5 ldrh r0, [r0, 0x2E] strh r0, [r1] _0804EE38: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk69_8025FE0 thumb_func_start atk6A_stash_item_for_side atk6A_stash_item_for_side: @ 804EE58 push {r4-r6,lr} sub sp, 0x4 ldr r6, =gBattlescriptCurrInstr ldr r0, [r6] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r5, =gActiveBank strb r0, [r5] ldr r1, =gBattleStruct ldrb r4, [r5] lsls r0, r4, 1 adds r0, 0xB8 ldr r1, [r1] adds r1, r0 ldr r2, =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 dp01_build_cmdbuf_x02_a_b_varargs ldrb r0, [r5] bl dp01_battle_side_mark_buffer_for_execution ldr r0, [r6] adds r0, 0x2 str r0, [r6] add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end atk6A_stash_item_for_side thumb_func_start atk6B_end_battle_80261CC atk6B_end_battle_80261CC: @ 804EEC8 ldr r1, =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x7 strb r0, [r1, 0x1] ldr r2, =gBankAttacker ldrb r0, [r2] strb r0, [r1, 0x2] ldr r3, =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, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] bx lr .pool thumb_func_end atk6B_end_battle_80261CC thumb_func_start atk6C_8026208 atk6C_8026208: @ 804EF04 push {r4,lr} sub sp, 0x4 ldr r0, =gBattleScripting ldrb r1, [r0, 0x1E] adds r4, r0, 0 cmp r1, 0 bne _0804EF28 bl sub_804F498 cmp r0, 0 beq _0804EF24 movs r0, 0x3 b _0804EF26 .pool _0804EF24: movs r0, 0x1 _0804EF26: strb r0, [r4, 0x1E] _0804EF28: ldrb r0, [r4, 0x1E] subs r0, 0x1 cmp r0, 0x9 bls _0804EF32 b _0804F0F2 _0804EF32: lsls r0, 2 ldr r1, =_0804EF40 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0804EF40: .4byte _0804EF68 .4byte _0804EF94 .4byte _0804EFAC .4byte _0804F000 .4byte _0804F014 .4byte _0804F02C .4byte _0804F014 .4byte _0804F04C .4byte _0804F07C .4byte _0804F0C0 _0804EF68: ldr r1, =gUnknown_02022E1E movs r0, 0x60 strh r0, [r1] movs r0, 0x2 movs r1, 0x7 movs r2, 0 bl SetBgAttribute movs r0, 0x2 bl ShowBg bl sub_804F17C ldr r1, =gBattleScripting movs r0, 0x2 strb r0, [r1, 0x1E] b _0804F0F2 .pool _0804EF94: bl sub_804F1CC lsls r0, 24 cmp r0, 0 beq _0804EFA0 b _0804F0F2 _0804EFA0: ldr r1, =gBattleScripting movs r0, 0x3 strb r0, [r1, 0x1E] b _0804F0F2 .pool _0804EFAC: ldr r1, =gUnknown_02022E18 movs r0, 0 strh r0, [r1] ldr r1, =gUnknown_02022E1A movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 strh r0, [r1] movs r0, 0 movs r1, 0x7 movs r2, 0x1 bl SetBgAttribute movs r0, 0x1 movs r1, 0x7 movs r2, 0 bl SetBgAttribute movs r0, 0 bl ShowBg movs r0, 0x1 bl ShowBg movs r0, 0x80 str r0, [sp] movs r0, 0x12 movs r1, 0x7 movs r2, 0x1D movs r3, 0x13 bl sub_8056A3C ldr r1, =gBattleScripting movs r0, 0x4 strb r0, [r1, 0x1E] b _0804F0F2 .pool _0804F000: bl sub_804F100 movs r0, 0xD bl PutWindowTilemap movs r0, 0xD movs r1, 0x3 bl CopyWindowToVram b _0804F06A _0804F014: bl IsDma3ManagerBusyWithBgCopy lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 bne _0804F0F2 ldr r0, =gUnknown_02022E1A strh r1, [r0] b _0804F06A .pool _0804F02C: ldr r0, =gMain ldrh r0, [r0, 0x2E] cmp r0, 0 beq _0804F0F2 movs r0, 0x5 bl PlaySE bl sub_804F144 movs r0, 0xD movs r1, 0x2 bl CopyWindowToVram b _0804F06A .pool _0804F04C: ldr r0, =gMain ldrh r0, [r0, 0x2E] cmp r0, 0 beq _0804F0F2 movs r0, 0x5 bl PlaySE movs r0, 0x81 str r0, [sp] movs r0, 0x12 movs r1, 0x7 movs r2, 0x1D movs r3, 0x13 bl sub_8056A3C _0804F06A: ldr r1, =gBattleScripting ldrb r0, [r1, 0x1E] adds r0, 0x1 strb r0, [r1, 0x1E] b _0804F0F2 .pool _0804F07C: bl sub_804F344 lsls r0, 24 cmp r0, 0 bne _0804F0F2 movs r0, 0xE bl ClearWindowTilemap movs r0, 0xE movs r1, 0x1 bl CopyWindowToVram movs r0, 0xD bl ClearWindowTilemap movs r0, 0xD movs r1, 0x1 bl CopyWindowToVram movs r0, 0x2 movs r1, 0x7 movs r2, 0x2 bl SetBgAttribute movs r0, 0x2 bl ShowBg ldr r1, =gBattleScripting movs r0, 0xA strb r0, [r1, 0x1E] b _0804F0F2 .pool _0804F0C0: bl IsDma3ManagerBusyWithBgCopy lsls r0, 24 cmp r0, 0 bne _0804F0F2 movs r0, 0 movs r1, 0x7 movs r2, 0 bl SetBgAttribute movs r0, 0x1 movs r1, 0x7 movs r2, 0x1 bl SetBgAttribute movs r0, 0 bl ShowBg movs r0, 0x1 bl ShowBg ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] _0804F0F2: add sp, 0x4 pop {r4} pop {r0} bx r0 .pool thumb_func_end atk6C_8026208 thumb_func_start sub_804F100 sub_804F100: @ 804F100 push {lr} sub sp, 0x14 ldr r0, =gBattleStruct ldr r0, [r0] ldrb r1, [r0, 0x10] movs r0, 0x64 muls r0, r1 ldr r1, =gPlayerParty adds r0, r1 add r1, sp, 0x8 bl sub_81D388C ldr r0, =gBattleResources ldr r0, [r0] ldr r1, [r0, 0x10] movs r0, 0xD str r0, [sp] movs r0, 0xF str r0, [sp, 0x4] movs r0, 0xD add r2, sp, 0x8 movs r3, 0xE bl sub_81D3640 add sp, 0x14 pop {r0} bx r0 .pool thumb_func_end sub_804F100 thumb_func_start sub_804F144 sub_804F144: @ 804F144 push {lr} sub sp, 0x10 ldr r0, =gBattleStruct ldr r0, [r0] ldrb r1, [r0, 0x10] movs r0, 0x64 muls r0, r1 ldr r1, =gPlayerParty adds r0, r1 add r1, sp, 0x4 bl sub_81D388C movs r0, 0xF str r0, [sp] movs r0, 0xD add r1, sp, 0x4 movs r2, 0xE movs r3, 0xD bl sub_81D3784 add sp, 0x10 pop {r0} bx r0 .pool thumb_func_end sub_804F144 thumb_func_start sub_804F17C sub_804F17C: @ 804F17C push {lr} ldr r1, =gUnknown_02022E1E movs r0, 0 strh r0, [r1] ldr r1, =gUnknown_02022E1C movs r2, 0xD0 lsls r2, 1 adds r0, r2, 0 strh r0, [r1] ldr r0, =gUnknown_0831C2C8 movs r1, 0x60 movs r2, 0x20 bl LoadPalette ldr r1, =gUnknown_0831C2E8 movs r0, 0xE movs r2, 0 movs r3, 0 bl CopyToWindowPixelBuffer movs r0, 0xE bl PutWindowTilemap movs r0, 0xE movs r1, 0x3 bl CopyWindowToVram bl sub_804F384 pop {r0} bx r0 .pool thumb_func_end sub_804F17C thumb_func_start sub_804F1CC sub_804F1CC: @ 804F1CC push {r4,r5,lr} bl IsDma3ManagerBusyWithBgCopy lsls r0, 24 cmp r0, 0 beq _0804F1DC movs r0, 0x1 b _0804F216 _0804F1DC: ldr r4, =gUnknown_02022E1C ldrh r1, [r4] movs r5, 0x80 lsls r5, 2 cmp r1, r5 bne _0804F1F0 movs r0, 0 b _0804F216 .pool _0804F1F0: movs r0, 0xD0 lsls r0, 1 cmp r1, r0 bne _0804F1FC bl sub_804F220 _0804F1FC: ldrh r0, [r4] adds r0, 0x8 strh r0, [r4] lsls r0, 16 ldr r1, =0x01ff0000 cmp r0, r1 bls _0804F20C strh r5, [r4] _0804F20C: ldrh r1, [r4] eors r1, r5 negs r0, r1 orrs r0, r1 lsrs r0, 31 _0804F216: pop {r4,r5} pop {r1} bx r1 .pool thumb_func_end sub_804F1CC thumb_func_start sub_804F220 sub_804F220: @ 804F220 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x10 ldr r6, =gBattleStruct ldr r0, [r6] ldrb r0, [r0, 0x10] movs r5, 0x64 muls r0, r5 ldr r4, =gPlayerParty adds r0, r4 movs r1, 0x38 bl GetMonData mov r8, r0 lsls r0, 16 lsrs r0, 16 mov r8, r0 ldr r0, [r6] ldrb r0, [r0, 0x10] muls r0, r5 adds r0, r4 bl pokemon_get_gender lsls r0, 24 lsrs r7, r0, 24 ldr r0, [r6] ldrb r0, [r0, 0x10] muls r0, r5 adds r0, r4 ldr r5, =gStringVar4 adds r1, r5, 0 bl GetMonNickname str r5, [sp] mov r2, sp movs r1, 0 movs r0, 0xE strb r0, [r2, 0x4] mov r0, sp strb r1, [r0, 0x5] movs r4, 0x20 strb r4, [r0, 0x6] strb r1, [r0, 0x7] strb r4, [r0, 0x8] strb r1, [r0, 0x9] strb r1, [r0, 0xA] strb r1, [r0, 0xB] mov r3, sp ldrb r2, [r3, 0xC] subs r1, 0x10 adds r0, r1, 0 ands r0, r2 strb r0, [r3, 0xC] mov r2, sp movs r0, 0x10 strb r0, [r2, 0xC] ldrb r0, [r2, 0xD] ands r1, r0 strb r1, [r2, 0xD] mov r0, sp strb r4, [r0, 0xD] movs r1, 0xFF movs r2, 0 bl AddTextPrinter movs r0, 0xF9 strb r0, [r5] adds r5, 0x1 movs r0, 0x5 strb r0, [r5] adds r5, 0x1 adds r4, r5, 0 adds r0, r4, 0 mov r1, r8 movs r2, 0 movs r3, 0x3 bl ConvertIntToDecimalStringN adds r5, r0, 0 subs r4, r5, r4 movs r2, 0x4 subs r2, r4 lsls r2, 16 lsrs r2, 16 movs r1, 0x77 bl StringFill adds r5, r0, 0 cmp r7, 0xFF beq _0804F320 cmp r7, 0 bne _0804F300 movs r1, 0 movs r2, 0xC bl WriteColorChangeControlCode adds r5, r0, 0 movs r1, 0x1 movs r2, 0xD bl WriteColorChangeControlCode adds r5, r0, 0 movs r0, 0xB5 b _0804F318 .pool _0804F300: adds r0, r5, 0 movs r1, 0 movs r2, 0xE bl WriteColorChangeControlCode adds r5, r0, 0 movs r1, 0x1 movs r2, 0xF bl WriteColorChangeControlCode adds r5, r0, 0 movs r0, 0xB6 _0804F318: strb r0, [r5] adds r5, 0x1 movs r0, 0xFF strb r0, [r5] _0804F320: mov r0, sp movs r1, 0xA strb r1, [r0, 0x7] strb r1, [r0, 0x9] movs r1, 0xFF movs r2, 0 bl AddTextPrinter movs r0, 0xE movs r1, 0x2 bl CopyWindowToVram add sp, 0x10 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_804F220 thumb_func_start sub_804F344 sub_804F344: @ 804F344 push {lr} ldr r0, =gUnknown_02022E1C ldrh r1, [r0] movs r3, 0xD0 lsls r3, 1 adds r2, r0, 0 cmp r1, r3 bne _0804F35C movs r0, 0 b _0804F380 .pool _0804F35C: ldrh r0, [r2] adds r1, r0, 0 subs r1, 0x10 ldr r0, =0x0000019f cmp r1, r0 bgt _0804F370 strh r3, [r2] b _0804F372 .pool _0804F370: strh r1, [r2] _0804F372: ldrh r1, [r2] movs r0, 0xD0 lsls r0, 1 eors r1, r0 negs r0, r1 orrs r0, r1 lsrs r0, 31 _0804F380: pop {r1} bx r1 thumb_func_end sub_804F344 thumb_func_start sub_804F384 sub_804F384: @ 804F384 push {r4-r6,lr} mov r6, r8 push {r6} sub sp, 0x10 ldr r0, =gBattleStruct mov r8, r0 ldr r0, [r0] ldrb r0, [r0, 0x10] movs r6, 0x64 muls r0, r6 ldr r5, =gPlayerParty adds r0, r5 movs r1, 0xB bl GetMonData adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 mov r1, r8 ldr r0, [r1] ldrb r0, [r0, 0x10] muls r0, r6 adds r0, r5 movs r1, 0 bl GetMonData adds r1, r0, 0 adds r0, r4, 0 movs r2, 0x1 bl sub_80D2EDC str r0, [sp] ldr r5, =0xffff0000 ldr r0, [sp, 0x4] ands r0, r5 movs r1, 0x80 lsls r1, 2 orrs r0, r1 ldr r1, =0x0000ffff ands r0, r1 ldr r1, =0xd75a0000 orrs r0, r1 str r0, [sp, 0x4] adds r0, r4, 0 bl sub_80D30B0 str r0, [sp, 0x8] add r4, sp, 0x8 ldr r0, [r4, 0x4] ands r0, r5 ldr r1, =0x0000d75a orrs r0, r1 str r0, [r4, 0x4] mov r0, sp bl LoadSpriteSheet adds r0, r4, 0 bl LoadSpritePalette ldr r0, =gUnknown_0831C3C0 movs r1, 0x80 lsls r1, 1 movs r2, 0xA movs r3, 0 bl CreateSprite lsls r0, 24 lsrs r0, 24 ldr r2, =gSprites lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 movs r0, 0 strh r0, [r1, 0x2E] ldr r0, =gUnknown_02022E1C ldrh r0, [r0] strh r0, [r1, 0x30] add sp, 0x10 pop {r3} mov r8, r3 pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_804F384 thumb_func_start sub_804F450 sub_804F450: @ 804F450 push {r4,lr} adds r2, r0, 0 ldr r0, =gUnknown_02022E1C ldrh r1, [r2, 0x30] ldrh r0, [r0] subs r1, r0 strh r1, [r2, 0x24] lsls r1, 16 cmp r1, 0 beq _0804F470 movs r0, 0x1 strh r0, [r2, 0x2E] b _0804F48C .pool _0804F470: movs r1, 0x2E ldrsh r0, [r2, r1] cmp r0, 0 beq _0804F48C adds r0, r2, 0 bl DestroySprite ldr r4, =0x0000d75a adds r0, r4, 0 bl FreeSpriteTilesByTag adds r0, r4, 0 bl FreeSpritePaletteByTag _0804F48C: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_804F450 thumb_func_start sub_804F498 sub_804F498: @ 804F498 push {lr} ldr r3, =gBattlePartyID ldr r0, =gBattleStruct ldr r0, [r0] ldrh r1, [r3] ldrb r2, [r0, 0x10] cmp r1, r2 beq _0804F4BA ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _0804F4CC ldrh r0, [r3, 0x4] cmp r0, r2 bne _0804F4CC _0804F4BA: movs r0, 0x1 b _0804F4CE .pool _0804F4CC: movs r0, 0 _0804F4CE: pop {r1} bx r1 thumb_func_end sub_804F498 thumb_func_start sub_804F4D4 sub_804F4D4: @ 804F4D4 push {lr} bl sub_803F988 ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .pool thumb_func_end sub_804F4D4 thumb_func_start atk6E_state0_side_becomes_attacker atk6E_state0_side_becomes_attacker: @ 804F4EC push {lr} movs r0, 0 bl GetBankByPlayerAI ldr r1, =gBankAttacker strb r0, [r1] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .pool thumb_func_end atk6E_state0_side_becomes_attacker thumb_func_start atk6F_8026810 atk6F_8026810: @ 804F50C push {r4,r5,lr} ldr r5, =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r4, =gActiveBank strb r0, [r4] movs r0, 0 movs r1, 0 bl dp01_build_cmdbuf_x33_a_33_33 ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution ldr r0, [r5] adds r0, 0x2 str r0, [r5] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end atk6F_8026810 thumb_func_start atk70_record_ability_usage_of_side atk70_record_ability_usage_of_side: @ 804F540 push {r4,lr} ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r1, =gActiveBank strb r0, [r1] ldrb r0, [r1] ldr r1, =gLastUsedAbility ldrb r1, [r1] bl RecordAbilityBattle ldr r0, [r4] adds r0, 0x1 str r0, [r4] pop {r4} pop {r0} bx r0 .pool thumb_func_end atk70_record_ability_usage_of_side thumb_func_start sub_804F574 sub_804F574: @ 804F574 ldr r2, =gBattleTextBuff2 movs r0, 0xFD strb r0, [r2] movs r0, 0x2 strb r0, [r2, 0x1] ldr r0, =gUnknown_020244E2 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 .pool thumb_func_end sub_804F574 thumb_func_start atk71_80268A0 atk71_80268A0: @ 804F59C push {lr} bl sub_804F574 ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .pool thumb_func_end atk71_80268A0 thumb_func_start atk72_flee atk72_flee: @ 804F5B4 push {lr} ldr r0, =gUnknown_0202420D ldrb r0, [r0] bl sub_803EC20 lsls r0, 24 cmp r0, 0 beq _0804F5E8 ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0804F5F0 .pool _0804F5E8: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0804F5F0: pop {r0} bx r0 .pool thumb_func_end atk72_flee thumb_func_start atk73_cmd73 atk73_cmd73: @ 804F5F8 push {r4-r6,lr} ldr r0, =gBattleTypeFlags ldr r4, [r0] movs r6, 0x1 ands r4, r6 cmp r4, 0 bne _0804F68E ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r1, =gActiveBank strb r0, [r1] movs r1, 0x1 eors r0, r1 lsls r0, 24 lsrs r0, 24 ldr r2, =gBattleMons movs r1, 0x58 muls r1, r0 adds r1, r2 ldrh r5, [r1, 0x28] movs r0, 0x64 muls r0, r5 ldrh r1, [r1, 0x2C] bl __divsi3 cmp r0, 0 bne _0804F636 movs r0, 0x1 _0804F636: cmp r0, 0x45 bgt _0804F63E cmp r5, 0 bne _0804F65C _0804F63E: ldr r0, =gBattleStruct ldr r0, [r0] adds r0, 0xB1 strb r4, [r0] b _0804F68E .pool _0804F65C: cmp r0, 0x27 ble _0804F670 ldr r0, =gBattleStruct ldr r0, [r0] adds r0, 0xB1 strb r6, [r0] b _0804F68E .pool _0804F670: cmp r0, 0x9 ble _0804F684 ldr r0, =gBattleStruct ldr r0, [r0] adds r0, 0xB1 movs r1, 0x2 b _0804F68C .pool _0804F684: ldr r0, =gBattleStruct ldr r0, [r0] adds r0, 0xB1 movs r1, 0x3 _0804F68C: strb r1, [r0] _0804F68E: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end atk73_cmd73 thumb_func_start atk74_hp_tresholds_2 atk74_hp_tresholds_2: @ 804F6A4 push {r4-r7,lr} mov r7, r8 push {r7} ldr r0, =gBattleTypeFlags ldr r7, [r0] movs r0, 0x1 mov r8, r0 ands r7, r0 cmp r7, 0 bne _0804F73E ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] bl get_battle_side_of_something adds r4, r0, 0 ldr r0, =gActiveBank strb r4, [r0] movs r0, 0x1 eors r4, r0 lsls r4, 24 lsrs r4, 24 adds r0, r4, 0 bl GetBankSide lsls r0, 24 ldr r1, =gBattleStruct ldr r6, [r1] lsrs r0, 23 adds r0, r6 adds r0, 0xA8 ldrb r5, [r0] ldr r1, =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 _0804F71C adds r0, r6, 0 adds r0, 0xB1 strb r7, [r0] b _0804F73E .pool _0804F71C: cmp r0, 0x1D bgt _0804F72A adds r0, r6, 0 adds r0, 0xB1 mov r1, r8 strb r1, [r0] b _0804F73E _0804F72A: cmp r1, 0x45 bgt _0804F736 adds r1, r6, 0 adds r1, 0xB1 movs r0, 0x2 b _0804F73C _0804F736: adds r1, r6, 0 adds r1, 0xB1 movs r0, 0x3 _0804F73C: strb r0, [r1] _0804F73E: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk74_hp_tresholds_2 thumb_func_start atk75_8026A58 atk75_8026A58: @ 804F754 push {lr} sub sp, 0x4 ldr r2, =gUnknown_020244B8 ldr r1, =gBankAttacker ldrb r0, [r1] strb r0, [r2] ldr r2, =gBattlePartyID ldrb r0, [r1] lsls r0, 1 adds r0, r2 ldrh r2, [r0] movs r0, 0x64 muls r0, r2 ldr r1, =gEnemyParty adds r0, r1 ldr r1, =gUnknown_02024208 ldrh r1, [r1] lsls r2, 24 lsrs r2, 24 movs r3, 0x1 str r3, [sp] movs r3, 0 bl ExecuteTableBasedItemEffect ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] add sp, 0x4 pop {r0} bx r0 .pool thumb_func_end atk75_8026A58 thumb_func_start sub_804F7AC sub_804F7AC: @ 804F7AC push {r4-r7,lr} mov r7, r8 push {r7} ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r1, =gActiveBank strb r0, [r1] ldr r0, [r4] ldrb r0, [r0, 0x2] cmp r0, 0x1A bls _0804F7CA b _0804FD70 _0804F7CA: lsls r0, 2 ldr r1, =_0804F7E0 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0804F7E0: .4byte _0804F84C .4byte _0804F85C .4byte _0804F8BC .4byte _0804F8CC .4byte _0804F8E4 .4byte _0804F920 .4byte _0804F958 .4byte _0804F9E0 .4byte _0804FA20 .4byte _0804FACC .4byte _0804FAE8 .4byte _0804FB3C .4byte _0804FB94 .4byte _0804FC18 .4byte _0804FC2C .4byte _0804FC32 .4byte _0804FC38 .4byte _0804FC60 .4byte _0804FC6A .4byte _0804FC78 .4byte _0804FC8C .4byte _0804FCC4 .4byte _0804FCD8 .4byte _0804FCF0 .4byte _0804FD1C .4byte _0804FD30 .4byte _0804FD5C _0804F84C: ldr r0, =gActiveBank ldrb r0, [r0] bl CancelMultiTurnMoves b _0804FD70 .pool _0804F85C: ldr r1, =gBankAttacker ldr r4, =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, =gSideTimers lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r2, r1, r2 ldrb r0, [r2, 0x8] cmp r0, 0 beq _0804F8A8 ldr r1, =gBattleMons ldrb r2, [r2, 0x9] movs r0, 0x58 muls r0, r2 adds r0, r1 ldrh r0, [r0, 0x28] cmp r0, 0 beq _0804F8A8 strb r2, [r4] b _0804FD70 .pool _0804F8A8: ldr r0, =gBankTarget ldr r1, =gActiveBank ldrb r1, [r1] strb r1, [r0] b _0804FD70 .pool _0804F8BC: bl sub_803BB88 ldr r1, =gBattleCommunication strb r0, [r1] b _0804FD70 .pool _0804F8CC: ldr r0, =gCurrentMove ldrh r0, [r0] movs r1, 0 bl GetMoveTarget ldr r1, =gBankTarget strb r0, [r1] b _0804FD70 .pool _0804F8E4: ldr r2, =gHitMarker ldr r1, =gBitTable ldr r0, =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 _0804F914 ldr r1, =gBattleCommunication movs r0, 0x1 strb r0, [r1] b _0804FD70 .pool _0804F914: ldr r0, =gBattleCommunication strb r2, [r0] b _0804FD70 .pool _0804F920: ldr r4, =gSpecialStatuses ldr r3, =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 _0804FD70 .pool _0804F958: ldr r4, =gBattlePartyID ldr r1, =gBattleStruct ldr r0, [r1] ldrh r3, [r4] ldrb r2, [r0, 0x10] adds r6, r1, 0 cmp r3, r2 beq _0804F974 ldrh r0, [r4, 0x4] cmp r0, r2 beq _0804F970 b _0804FD70 _0804F970: cmp r3, r0 bne _0804F988 _0804F974: ldr r1, =gActiveBank movs r0, 0 b _0804F98C .pool _0804F988: ldr r1, =gActiveBank movs r0, 0x2 _0804F98C: strb r0, [r1] adds r5, r1, 0 ldrb r2, [r5] lsls r0, r2, 1 adds r0, 0xC8 ldr r1, [r6] adds r4, r1, r0 movs r3, 0 ldr r1, =gBattleMons movs r0, 0x58 muls r0, r2 adds r1, 0xC adds r0, r1 ldrh r0, [r0] ldrh r2, [r4] cmp r0, r2 beq _0804F9CC adds r6, r5, 0 movs r5, 0x58 adds r2, r1, 0 _0804F9B4: adds r3, 0x1 cmp r3, 0x3 bgt _0804F9CC 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 _0804F9B4 _0804F9CC: cmp r3, 0x4 beq _0804F9D2 b _0804FD70 _0804F9D2: movs r0, 0 strh r0, [r4] b _0804FD70 .pool _0804F9E0: ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0xB ands r0, r1 cmp r0, 0x8 beq _0804F9EE b _0804FD70 _0804F9EE: ldr r1, =gBattleMons ldrh r0, [r1, 0x28] cmp r0, 0 bne _0804F9F8 b _0804FD70 _0804F9F8: adds r0, r1, 0 adds r0, 0x80 ldrh r0, [r0] cmp r0, 0 bne _0804FA04 b _0804FD70 _0804FA04: ldr r0, =gHitMarker ldr r1, [r0] ldr r2, =0xffbfffff ands r1, r2 str r1, [r0] b _0804FD70 .pool _0804FA20: ldr r2, =gBattleCommunication mov r8, r2 movs r0, 0 strb r0, [r2] ldr r1, =gBattleScripting ldr r6, =gActiveBank ldrb r0, [r2, 0x1] strb r0, [r6] strb r0, [r1, 0x17] ldr r0, =gBattleStruct ldr r0, [r0] adds r7, r0, 0 adds r7, 0x92 ldrb r3, [r7] ldr r1, =gBitTable ldrb r2, [r6] lsls r0, r2, 2 adds r0, r1 ldr r5, [r0] adds r0, r3, 0 ands r0, r5 cmp r0, 0 beq _0804FA50 b _0804FD70 _0804FA50: ldr r4, =gBattleMons movs r0, 0x58 mov r12, r0 mov r1, r12 muls r1, r2 adds r2, r1, 0 adds r1, r2, r4 ldrh r0, [r1, 0x2C] lsrs r0, 1 ldrh r1, [r1, 0x28] cmp r0, r1 bcs _0804FA6A b _0804FD70 _0804FA6A: cmp r1, 0 bne _0804FA70 b _0804FD70 _0804FA70: adds r0, r4, 0 adds r0, 0x4C adds r0, r2, r0 ldr r0, [r0] movs r1, 0x7 ands r0, r1 cmp r0, 0 beq _0804FA82 b _0804FD70 _0804FA82: orrs r3, r5 strb r3, [r7] movs r0, 0x1 mov r2, r8 strb r0, [r2] ldrb r0, [r6] mov r1, r12 muls r1, r0 adds r0, r1, 0 adds r1, r4, 0 adds r1, 0x48 adds r0, r1 ldr r0, [r0] bl GetNatureFromPersonality ldr r1, =gUnknown_0831C4F8 lsls r0, 24 lsrs r0, 24 adds r0, r1 ldrb r0, [r0] mov r2, r8 strb r0, [r2, 0x5] b _0804FD70 .pool _0804FACC: ldr r4, =gBattleCommunication adds r0, r4, 0 bl sub_81A5258 lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0 bne _0804FADE b _0804FD78 _0804FADE: strb r3, [r4, 0x1] b _0804FD70 .pool _0804FAE8: ldr r0, =gBattleMons adds r0, 0x80 movs r1, 0 strh r1, [r0] ldr r2, =gHitMarker ldr r3, =gBitTable ldr r1, [r3, 0x4] lsls r1, 28 ldr r0, [r2] orrs r0, r1 str r0, [r2] ldr r0, =gBattleStruct ldr r2, [r0] ldr r0, =0x000002a1 adds r2, r0 ldr r0, =gBattlePartyID ldrh r0, [r0, 0x2] lsls r0, 2 adds r0, r3 ldr r0, [r0] ldrb r1, [r2] orrs r0, r1 strb r0, [r2] ldr r1, =gDisableStructs adds r1, 0x34 ldrb r0, [r1] movs r2, 0x2 b _0804FBF4 .pool _0804FB3C: ldr r1, =gBattleMons movs r0, 0 strh r0, [r1, 0x28] ldr r2, =gHitMarker ldr r3, =gBitTable ldr r1, [r3] lsls r1, 28 ldr r0, [r2] orrs r0, r1 movs r1, 0x80 lsls r1, 15 orrs r0, r1 str r0, [r2] ldr r0, =gBattleStruct ldr r2, [r0] movs r1, 0xA8 lsls r1, 2 adds r2, r1 ldr r0, =gBattlePartyID ldrh r0, [r0] lsls r0, 2 adds r0, r3 ldr r0, [r0] ldrb r1, [r2] orrs r0, r1 strb r0, [r2] ldr r2, =gDisableStructs ldrb r0, [r2, 0x18] movs r1, 0x2 orrs r0, r1 strb r0, [r2, 0x18] b _0804FD70 .pool _0804FB94: ldr r0, =gBattleMons movs r1, 0 strh r1, [r0, 0x28] adds r0, 0x80 strh r1, [r0] ldr r2, =gHitMarker ldr r3, =gBitTable ldr r0, [r3] lsls r0, 28 ldr r1, [r2] orrs r1, r0 ldr r0, [r3, 0x4] lsls r0, 28 orrs r1, r0 movs r0, 0x80 lsls r0, 15 orrs r1, r0 str r1, [r2] ldr r5, =gBattleStruct ldr r2, [r5] movs r0, 0xA8 lsls r0, 2 adds r2, r0 ldr r4, =gBattlePartyID ldrh r0, [r4] lsls r0, 2 adds r0, r3 ldr r0, [r0] ldrb r1, [r2] orrs r0, r1 strb r0, [r2] ldr r2, [r5] ldr r1, =0x000002a1 adds r2, r1 ldrh r0, [r4, 0x2] lsls r0, 2 adds r0, r3 ldr r0, [r0] ldrb r1, [r2] orrs r0, r1 strb r0, [r2] ldr r1, =gDisableStructs ldrb r0, [r1, 0x18] movs r2, 0x2 orrs r0, r2 strb r0, [r1, 0x18] adds r1, 0x34 ldrb r0, [r1] _0804FBF4: orrs r0, r2 strb r0, [r1] b _0804FD70 .pool _0804FC18: movs r0, 0 bl sub_8033E10 ldr r0, =gActiveBank ldrb r0, [r0] bl dp01_battle_side_mark_buffer_for_execution b _0804FD70 .pool _0804FC2C: bl sub_81A5BF8 b _0804FD70 _0804FC32: bl sub_81A5D44 b _0804FD70 _0804FC38: ldr r1, =gUnknown_085CD1C8 ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r0, [r0, 0x1] lsls r0, 2 adds r0, r1 ldr r0, [r0] bl get_battle_strings_ ldr r0, =gUnknown_02022E2C movs r1, 0x16 bl battle_show_message_maybe b _0804FD70 .pool _0804FC60: movs r0, 0x16 bl IsTextPrinterActive lsls r0, 16 b _0804FD24 _0804FC6A: bl IsCryFinished lsls r0, 24 cmp r0, 0 bne _0804FC76 b _0804FD78 _0804FC76: b _0804FD70 _0804FC78: ldr r4, =gActiveBank movs r0, 0x1 strb r0, [r4] ldr r0, =gBattleMons adds r0, 0x58 b _0804FCA2 .pool _0804FC8C: ldr r0, =gNoOfAllBanks ldrb r0, [r0] cmp r0, 0x3 bls _0804FD70 ldr r4, =gActiveBank movs r0, 0x3 strb r0, [r4] ldr r0, =gBattleMons movs r2, 0x84 lsls r2, 1 adds r0, r2 _0804FCA2: ldrh r0, [r0, 0x28] cmp r0, 0 beq _0804FD70 movs r0, 0 movs r1, 0 bl dp01_build_cmdbuf_x06_a ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution b _0804FD70 .pool _0804FCC4: ldr r0, =gMPlay_BGM ldr r1, =0x0000ffff movs r2, 0x55 bl m4aMPlayVolumeControl b _0804FD70 .pool _0804FCD8: ldr r0, =gMPlay_BGM ldr r1, =0x0000ffff movs r2, 0x80 lsls r2, 1 bl m4aMPlayVolumeControl b _0804FD70 .pool _0804FCF0: ldr r0, =gBattleStruct ldr r2, [r0] ldr r0, =0x000002a2 adds r2, r0 ldr r1, =gBitTable ldr r0, =gActiveBank ldrb r0, [r0] lsls r0, 2 adds r0, r1 ldr r0, [r0] ldrb r1, [r2] orrs r0, r1 strb r0, [r2] b _0804FD70 .pool _0804FD1C: ldr r0, =gActiveBank ldrb r0, [r0] bl sub_805725C _0804FD24: cmp r0, 0 bne _0804FD78 b _0804FD70 .pool _0804FD30: ldr r0, =gActiveBank ldrb r0, [r0] bl GetBankSide lsls r0, 24 cmp r0, 0 bne _0804FD50 ldr r1, =gBattleOutcome movs r0, 0x5 strb r0, [r1] b _0804FD70 .pool _0804FD50: ldr r1, =gBattleOutcome movs r0, 0xA strb r0, [r1] b _0804FD70 .pool _0804FD5C: movs r1, 0xCE lsls r1, 1 movs r0, 0 movs r2, 0x1 bl sub_8034300 ldr r0, =gActiveBank ldrb r0, [r0] bl dp01_battle_side_mark_buffer_for_execution _0804FD70: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x3 str r0, [r1] _0804FD78: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_804F7AC thumb_func_start atk77_setprotect atk77_setprotect: @ 804FD8C push {r4-r7,lr} mov r7, r8 push {r7} movs r6, 0x1 ldr r2, =gUnknown_02024260 ldr r1, =gBankAttacker ldrb r3, [r1] lsls r0, r3, 1 adds r0, r2 ldrh r0, [r0] mov r8, r1 ldr r7, =gDisableStructs cmp r0, 0xB6 beq _0804FDBC cmp r0, 0xC5 beq _0804FDBC cmp r0, 0xCB beq _0804FDBC lsls r0, r3, 3 subs r0, r3 lsls r0, 2 adds r0, r7 movs r1, 0 strb r1, [r0, 0x8] _0804FDBC: ldr r0, =gUnknown_02024082 ldrb r1, [r0] ldr r0, =gNoOfAllBanks ldrb r0, [r0] subs r0, 0x1 cmp r1, r0 bne _0804FDCC movs r6, 0 _0804FDCC: ldr r2, =gUnknown_0831C3D8 mov r5, r8 ldrb r1, [r5] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r7 ldrb r4, [r0, 0x8] lsls r4, 1 adds r4, r2 bl Random ldrh r1, [r4] lsls r0, 16 lsrs r0, 16 cmp r1, r0 bcc _0804FE80 cmp r6, 0 beq _0804FE80 ldr r4, =gBattleMoves ldr r3, =gCurrentMove ldrh r0, [r3] lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r4 ldrb r0, [r1] cmp r0, 0x6F bne _0804FE1C ldr r0, =gProtectStructs ldrb r1, [r5] lsls r1, 4 adds r1, r0 ldrb r0, [r1] movs r2, 0x1 orrs r0, r2 strb r0, [r1] ldr r1, =gBattleCommunication movs r0, 0 strb r0, [r1, 0x5] _0804FE1C: ldrh r0, [r3] lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r4 ldrb r0, [r1] cmp r0, 0x74 bne _0804FE42 ldr r0, =gProtectStructs ldrb r1, [r5] lsls r1, 4 adds r1, r0 ldrb r0, [r1] movs r2, 0x2 orrs r0, r2 strb r0, [r1] ldr r1, =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] _0804FE42: 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 _0804FEA2 .pool _0804FE80: ldr r2, =gDisableStructs ldr r0, =gBankAttacker ldrb r1, [r0] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0 strb r1, [r0, 0x8] ldr r1, =gBattleCommunication movs r0, 0x2 strb r0, [r1, 0x5] ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] _0804FEA2: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk77_setprotect thumb_func_start atk78_faintifabilitynotdamp atk78_faintifabilitynotdamp: @ 804FEC8 push {r4-r7,lr} mov r7, r8 push {r7} ldr r0, =gBattleExecBuffer ldr r2, [r0] cmp r2, 0 bne _0804FFCC ldr r1, =gBankTarget strb r2, [r1] ldr r0, =gNoOfAllBanks ldrb r3, [r0] adds r5, r1, 0 mov r8, r0 ldr r6, =gBattleMons cmp r2, r3 bcs _0804FF14 adds r0, r6, 0 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x6 beq _0804FF14 adds r2, r3, 0 adds r4, r6, 0 movs r3, 0x58 _0804FEF8: ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] lsls r0, 24 lsrs r0, 24 cmp r0, r2 bcs _0804FF14 ldrb r0, [r5] muls r0, r3 adds r0, r4 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x6 bne _0804FEF8 _0804FF14: ldrb r0, [r5] mov r1, r8 ldrb r1, [r1] cmp r0, r1 bne _0804FFB0 ldr r4, =gActiveBank ldr r7, =gBankAttacker ldrb r0, [r7] strb r0, [r4] ldr r2, =gBattleMoveDamage ldrb r1, [r4] movs r0, 0x58 muls r0, r1 adds r0, r6 ldrh r0, [r0, 0x28] str r0, [r2] ldr r1, =0x00007fff movs r0, 0 bl dp01_build_cmdbuf_x18_0_aa_health_bar_update ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution ldr r1, =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 _0804FFCC adds r3, r5, 0 ldrb r5, [r7] ldr r7, =gBitTable adds r4, r0, 0 ldr r6, =gAbsentBankFlags _0804FF60: ldrb r2, [r3] cmp r2, r5 beq _0804FF76 ldrb r0, [r6] ldrb r1, [r3] lsls r1, 2 adds r1, r7 ldr r1, [r1] ands r0, r1 cmp r0, 0 beq _0804FFCC _0804FF76: adds r0, r2, 0x1 strb r0, [r3] lsls r0, 24 lsrs r0, 24 cmp r0, r4 bcc _0804FF60 b _0804FFCC .pool _0804FFB0: ldr r1, =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 RecordAbilityBattle ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DB560 str r0, [r1] _0804FFCC: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk78_faintifabilitynotdamp thumb_func_start atk79_setuserhptozero atk79_setuserhptozero: @ 804FFE4 push {r4,lr} sub sp, 0x4 ldr r0, =gBattleExecBuffer ldr r3, [r0] cmp r3, 0 bne _08050028 ldr r4, =gActiveBank ldr r0, =gBankAttacker ldrb r0, [r0] strb r0, [r4] ldr r1, =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 dp01_build_cmdbuf_x02_a_b_varargs ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] _08050028: add sp, 0x4 pop {r4} pop {r0} bx r0 .pool thumb_func_end atk79_setuserhptozero thumb_func_start sub_8050044 sub_8050044: @ 8050044 push {r4-r7,lr} ldr r3, =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, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 adds r7, r3, 0 cmp r0, 0 beq _080500DC ldr r0, =gBankTarget ldrb r1, [r0] adds r1, 0x1 strb r1, [r0] ldr r2, =gBankAttacker lsls r1, 24 lsrs r1, 24 adds r3, r0, 0 ldr r6, =gAbsentBankFlags ldr r5, =gBitTable ldr r0, =gNoOfAllBanks mov r12, r0 ldrb r0, [r2] cmp r1, r0 bne _0805009A _0805008A: ldrb r0, [r3] adds r0, 0x1 strb r0, [r3] lsls r0, 24 lsrs r0, 24 ldrb r1, [r2] cmp r0, r1 beq _0805008A _0805009A: ldrb r0, [r6] ldrb r1, [r3] lsls r1, 2 adds r1, r5 ldr r1, [r1] ands r0, r1 cmp r0, 0 bne _0805008A ldrb r0, [r3] mov r2, r12 ldrb r2, [r2] cmp r0, r2 bcc _080500D8 ldr r0, [r7] adds r0, 0x5 str r0, [r7] b _080500E0 .pool _080500D8: str r4, [r7] b _080500E0 _080500DC: adds r0, r2, 0x5 str r0, [r3] _080500E0: pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_8050044 thumb_func_start sub_80500E8 sub_80500E8: @ 80500E8 push {r4-r6,lr} ldr r4, =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, =gBankTarget cmp r0, 0x1 bne _08050110 ldr r0, =gBankAttacker ldrb r0, [r0] strb r0, [r3] _08050110: ldr r1, =gBattleMoveDamage ldr r6, =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 _0805012A movs r0, 0x1 str r0, [r1] _0805012A: 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 _08050158 str r2, [r4] b _0805015E .pool _08050158: ldr r0, [r4] adds r0, 0x6 str r0, [r4] _0805015E: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_80500E8 thumb_func_start sub_8050164 sub_8050164: @ 8050164 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 ldr r2, =gNoOfAllBanks ldr r0, =gBankAttacker mov r10, r0 movs r1, 0 add r0, sp, 0x4 _0805017A: strh r1, [r0] subs r0, 0x2 cmp r0, sp bge _0805017A movs r1, 0 mov r8, r1 movs r5, 0 ldrb r1, [r2] cmp r5, r1 bge _080501D0 ldr r0, =gBankAttacker ldrb r6, [r0] ldr r2, =0x0000ffff mov r9, r2 lsls r4, r6, 3 mov r2, sp ldr r0, =gBattleStruct mov r12, r0 adds r7, r1, 0 _080501A0: cmp r5, r6 beq _080501C8 mov r1, r12 ldr r0, [r1] adds r0, r4, r0 adds r1, r0, 0 adds r1, 0xE0 ldrb r3, [r1] adds r0, 0xE1 ldrb r0, [r0] lsls r0, 8 orrs r3, r0 cmp r3, 0 beq _080501C8 cmp r3, r9 beq _080501C8 strh r3, [r2] adds r2, 0x2 movs r0, 0x1 add r8, r0 _080501C8: adds r4, 0x2 adds r5, 0x1 cmp r5, r7 blt _080501A0 _080501D0: mov r1, r10 ldrb r0, [r1] ldr r2, =gBattleStruct ldr r1, [r2] lsls r0, 1 adds r0, r1 adds r1, r0, 0 adds r1, 0x98 ldrb r3, [r1] adds r0, 0x99 ldrb r0, [r0] lsls r0, 8 orrs r3, r0 cmp r3, 0 beq _08050220 ldr r0, =0x0000ffff cmp r3, r0 beq _08050220 ldr r2, =gHitMarker ldr r0, [r2] ldr r1, =0xfffffbff ands r0, r1 str r0, [r2] ldr r4, =gCurrentMove strh r3, [r4] b _0805024A .pool _08050220: mov r0, r8 cmp r0, 0 beq _08050290 ldr r2, =gHitMarker ldr r0, [r2] ldr r1, =0xfffffbff ands r0, r1 str r0, [r2] bl Random lsls r0, 16 lsrs r0, 16 mov r1, r8 bl __modsi3 adds r5, r0, 0 ldr r4, =gCurrentMove lsls r0, r5, 1 add r0, sp ldrh r0, [r0] strh r0, [r4] _0805024A: ldrh r0, [r4] movs r1, 0 bl GetMoveTarget ldr r1, =gBankTarget strb r0, [r1] ldr r5, =gBattlescriptCurrInstr ldr r3, =gUnknown_082D86A8 ldr r2, =gBattleMoves ldrh r1, [r4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0] lsls r0, 2 adds r0, r3 ldr r0, [r0] str r0, [r5] b _080502AE .pool _08050290: ldr r2, =gSpecialStatuses mov r0, r10 ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r2, 0x20 orrs r1, r2 strb r1, [r0] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] _080502AE: add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_8050164 thumb_func_start sub_80502C8 sub_80502C8: @ 80502C8 push {lr} ldr r2, =gBattleWeather ldrh r0, [r2] movs r1, 0x7 ands r1, r0 cmp r1, 0 beq _080502F4 ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r1, =gBattleCommunication movs r0, 0x2 strb r0, [r1, 0x5] b _08050304 .pool _080502F4: movs r0, 0x1 strh r0, [r2] ldr r0, =gBattleCommunication strb r1, [r0, 0x5] ldr r0, =gUnknown_020243D0 adds r0, 0x28 movs r1, 0x5 strb r1, [r0] _08050304: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .pool thumb_func_end sub_80502C8 thumb_func_start atk7E_setreflect atk7E_setreflect: @ 805031C push {r4-r6,lr} ldr r6, =gBankAttacker ldrb r0, [r6] bl GetBankIdentity ldr r4, =gUnknown_0202428E movs r5, 0x1 adds r1, r5, 0 ands r1, r0 lsls r1, 1 adds r1, r4 ldrh r1, [r1] adds r0, r5, 0 ands r0, r1 cmp r0, 0 beq _0805035C ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r1, =gBattleCommunication movs r0, 0 b _080503D0 .pool _0805035C: ldrb r0, [r6] bl GetBankIdentity adds r1, r5, 0 ands r1, r0 lsls r1, 1 adds r1, r4 ldrh r0, [r1] movs r2, 0x1 orrs r0, r2 strh r0, [r1] ldrb r0, [r6] bl GetBankIdentity ldr r4, =gSideTimers adds r1, r5, 0 ands r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r4 movs r1, 0x5 strb r1, [r0] ldrb r0, [r6] bl GetBankIdentity adds r1, r5, 0 ands r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r4 ldrb r1, [r6] strb r1, [r0, 0x1] ldr r0, =gBattleTypeFlags ldr r0, [r0] ands r0, r5 cmp r0, 0 beq _080503CC movs r0, 0x1 bl sub_8069DEC lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x2 bne _080503CC ldr r0, =gBattleCommunication strb r1, [r0, 0x5] b _080503D2 .pool _080503CC: ldr r1, =gBattleCommunication movs r0, 0x1 _080503D0: strb r0, [r1, 0x5] _080503D2: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end atk7E_setreflect thumb_func_start sub_80503E8 sub_80503E8: @ 80503E8 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} ldr r7, =gBattleMoveFlags ldrb r5, [r7] movs r0, 0x29 ands r0, r5 cmp r0, 0 bne _0805041A ldr r0, =gStatuses3 mov r9, r0 ldr r1, =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 _08050438 _0805041A: movs r0, 0x1 orrs r0, r5 strb r0, [r7] ldr r1, =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] b _08050488 .pool _08050438: ldr r1, =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 _08050454 adds r0, r1, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0xC bne _0805046C _08050454: movs r0, 0x1 orrs r0, r5 strb r0, [r7] ldr r1, =gBattleCommunication movs r0, 0x2 strb r0, [r1, 0x5] b _08050488 .pool _0805046C: ldr r0, =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, =gBattleCommunication strb r3, [r0, 0x5] _08050488: ldr r1, =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 .pool thumb_func_end sub_80503E8 thumb_func_start atk80_manipulatedamage atk80_manipulatedamage: @ 80504A8 push {r4,lr} ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] ldrb r2, [r0, 0x1] adds r4, r1, 0 cmp r2, 0x1 beq _080504D8 cmp r2, 0x1 bgt _080504C4 cmp r2, 0 beq _080504CA b _08050518 .pool _080504C4: cmp r2, 0x2 beq _08050510 b _08050518 _080504CA: ldr r1, =gBattleMoveDamage ldr r0, [r1] negs r0, r0 b _08050516 .pool _080504D8: ldr r3, =gBattleMoveDamage ldr r0, [r3] lsrs r1, r0, 31 adds r0, r1 asrs r0, 1 str r0, [r3] cmp r0, 0 bne _080504EA str r2, [r3] _080504EA: ldr r2, =gBattleMons ldr r0, =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 _08050518 str r1, [r3] b _08050518 .pool _08050510: ldr r1, =gBattleMoveDamage ldr r0, [r1] lsls r0, 1 _08050516: str r0, [r1] _08050518: ldr r0, [r4] adds r0, 0x2 str r0, [r4] pop {r4} pop {r0} bx r0 .pool thumb_func_end atk80_manipulatedamage thumb_func_start atk81_setrest atk81_setrest: @ 8050528 push {r4-r7,lr} sub sp, 0x4 ldr r0, =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, =gActiveBank ldr r2, =gBankTarget ldr r0, =gBankAttacker ldrb r0, [r0] strb r0, [r2] strb r0, [r5] ldr r4, =gBattleMoveDamage ldr r1, =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 _08050598 mov r0, r12 str r6, [r0] b _080505E8 .pool _08050598: adds r0, r2, 0 adds r0, 0x4C adds r0, r4, r0 ldr r1, [r0] movs r0, 0xF8 ands r1, r0 cmp r1, 0 beq _080505B4 ldr r1, =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] b _080505B8 .pool _080505B4: ldr r0, =gBattleCommunication strb r1, [r0, 0x5] _080505B8: 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 dp01_build_cmdbuf_x02_a_b_varargs ldrb r0, [r7] bl dp01_battle_side_mark_buffer_for_execution ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _080505E8: add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk81_setrest thumb_func_start atk82_jumpifnotfirstturn atk82_jumpifnotfirstturn: @ 80505F8 push {r4,r5,lr} ldr r5, =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, =gDisableStructs ldr r0, =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 _08050638 adds r0, r4, 0x5 str r0, [r5] b _0805063A .pool _08050638: str r3, [r5] _0805063A: pop {r4,r5} pop {r0} bx r0 thumb_func_end atk82_jumpifnotfirstturn thumb_func_start sub_8050640 sub_8050640: @ 8050640 ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] bx lr .pool thumb_func_end sub_8050640 thumb_func_start sub_8050650 sub_8050650: @ 8050650 push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 24 lsrs r3, r0, 24 movs r2, 0 ldr r0, =gNoOfAllBanks ldrb r1, [r0] mov r8, r0 cmp r2, r1 bge _080506C4 ldr r0, =gBattleMons mov r12, r0 movs r0, 0x58 muls r0, r3 add r0, r12 adds r5, r0, 0 adds r5, 0x20 adds r4, r1, 0 movs r3, 0 ldr r6, =gBattleScripting ldr r7, =gBattleCommunication _0805067C: mov r0, r12 adds r0, 0x50 adds r0, r3, r0 ldr r0, [r0] movs r1, 0x70 ands r0, r1 cmp r0, 0 beq _080506BC ldrb r0, [r5] cmp r0, 0x2B beq _080506BC movs r3, 0 strb r2, [r6, 0x17] ldr r1, =gBankTarget ldrb r0, [r1] cmp r0, 0xFF beq _080506DC cmp r0, r2 beq _080506D0 movs r0, 0x1 strb r0, [r7, 0x5] b _080506C4 .pool _080506BC: adds r3, 0x58 adds r2, 0x1 cmp r2, r4 blt _0805067C _080506C4: mov r1, r8 ldrb r1, [r1] cmp r2, r1 beq _080506E0 movs r0, 0x1 b _080506E2 _080506D0: ldr r0, =gBattleCommunication strb r3, [r0, 0x5] b _080506C4 .pool _080506DC: strb r2, [r1] b _080506C4 _080506E0: movs r0, 0 _080506E2: pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_8050650 thumb_func_start sub_80506EC sub_80506EC: @ 80506EC push {r4-r6,lr} ldr r5, =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, =gBankTarget ldrb r0, [r6] bl sub_8050650 lsls r0, 24 cmp r0, 0 beq _08050720 str r4, [r5] b _08050762 .pool _08050720: ldr r1, =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 _08050738 cmp r1, 0x48 bne _0805075C _08050738: ldr r2, =gLastUsedAbility strb r0, [r2] ldr r1, =gBattleCommunication movs r0, 0x2 strb r0, [r1, 0x5] str r4, [r5] ldrb r1, [r2] adds r0, r3, 0 bl RecordAbilityBattle b _08050762 .pool _0805075C: ldr r0, [r5] adds r0, 0x5 str r0, [r5] _08050762: pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_80506EC thumb_func_start sub_8050768 sub_8050768: @ 8050768 push {r4,r5,lr} ldr r5, =gDisableStructs ldr r4, =gBankAttacker ldrb r1, [r4] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r1, r0, r5 ldrb r0, [r1, 0x9] cmp r0, 0x3 bne _080507A0 ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r1, =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] b _080507CA .pool _080507A0: adds r0, 0x1 movs r3, 0 strb r0, [r1, 0x9] ldr r2, =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, =gBattleCommunication strb r3, [r0, 0x5] _080507CA: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_8050768 thumb_func_start atk86_stockpiletobasedamage atk86_stockpiletobasedamage: @ 80507E4 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x10 ldr r3, =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, =gDisableStructs ldr r6, =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 _08050828 str r2, [r3] b _080508CA .pool _08050828: ldr r0, =gBattleCommunication ldrb r0, [r0, 0x6] cmp r0, 0x1 beq _080508B0 ldr r0, =gBattleMoveDamage mov r8, r0 ldr r4, =gUnknown_0202428E ldr r5, =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, =gBattleMons adds r0, r2 ldrb r1, [r5] muls r1, r4 adds r1, r2 ldr r2, =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 sub_806957C 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, =gBattleScripting ldrb r1, [r6] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r7 ldrb r0, [r0, 0x9] strb r0, [r2, 0x18] ldr r1, =gProtectStructs ldrb r0, [r6] lsls r0, 4 adds r0, r1 ldrb r0, [r0] lsls r0, 28 cmp r0, 0 bge _080508B0 lsls r0, r3, 4 subs r0, r3 movs r1, 0xA bl __divsi3 mov r1, r8 str r0, [r1] _080508B0: ldr r2, =gDisableStructs ldr r0, =gBankAttacker ldrb r1, [r0] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0 strb r1, [r0, 0x9] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _080508CA: add sp, 0x10 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk86_stockpiletobasedamage thumb_func_start atk87_stockpiletohprecovery atk87_stockpiletohprecovery: @ 8050904 push {r4-r7,lr} mov r7, r8 push {r7} ldr r7, =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, =gDisableStructs mov r8, r0 ldr r6, =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 _08050954 str r2, [r7] ldr r0, =gBattleCommunication strb r1, [r0, 0x5] b _080509D0 .pool _08050954: ldr r1, =gBattleMons movs r0, 0x58 muls r0, r3 adds r1, r0, r1 ldrh r0, [r1, 0x2C] ldrh r3, [r1, 0x28] cmp r0, r3 bne _08050984 movs r0, 0 strb r0, [r4, 0x9] str r2, [r7] ldr r1, =gBankTarget ldrb r0, [r6] strb r0, [r1] ldr r1, =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] b _080509D0 .pool _08050984: ldr r5, =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 _080509A0 str r4, [r5] _080509A0: ldr r0, [r5] negs r0, r0 str r0, [r5] ldr r3, =gBattleScripting ldrb r1, [r6] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 add r0, r8 ldrb r0, [r0, 0x9] movs r2, 0 strb r0, [r3, 0x18] ldrb r1, [r6] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 add r0, r8 strb r2, [r0, 0x9] ldr r0, [r7] adds r0, 0x5 str r0, [r7] ldr r1, =gBankTarget ldrb r0, [r6] strb r0, [r1] _080509D0: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk87_stockpiletohprecovery thumb_func_start atk88_negativedamage atk88_negativedamage: @ 80509E8 push {lr} ldr r2, =gBattleMoveDamage ldr r0, =gUnknown_020241F4 ldr r0, [r0] lsrs r1, r0, 31 adds r0, r1 asrs r0, 1 negs r0, r0 str r0, [r2] cmp r0, 0 bne _08050A04 movs r0, 0x1 negs r0, r0 str r0, [r2] _08050A04: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .pool thumb_func_end atk88_negativedamage thumb_func_start sub_8050A1C sub_8050A1C: @ 8050A1C 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 _08050A50 ldr r0, =gActiveBank ldr r1, =gBankAttacker b _08050A54 .pool _08050A50: ldr r0, =gActiveBank ldr r1, =gBankTarget _08050A54: ldrb r1, [r1] strb r1, [r0] movs r0, 0xBF ands r5, r0 movs r0, 0x80 ands r0, r5 cmp r0, 0 beq _08050A6E mov r0, r9 adds r0, 0x1 lsls r0, 24 lsrs r0, 24 mov r9, r0 _08050A6E: movs r0, 0x7F ands r5, r0 movs r0, 0x20 ands r0, r5 cmp r0, 0 beq _08050A84 mov r0, r10 adds r0, 0x1 lsls r0, 24 lsrs r0, 24 mov r10, r0 _08050A84: movs r0, 0xDF ands r5, r0 ldr r1, =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 _08050AA8 b _08050D8C _08050AA8: ldr r4, =gSideTimers ldr r1, =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, 0x4] cmp r0, 0 beq _08050B48 mov r2, r9 cmp r2, 0 bne _08050B48 ldr r0, =gCurrentMove ldrh r0, [r0] cmp r0, 0xAE beq _08050B78 cmp r5, 0x1 bne _08050B68 ldr r4, =gSpecialStatuses ldr r3, =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 _08050B10 ldr r0, =gBattlescriptCurrInstr mov r4, r8 str r4, [r0] b _08050B68 .pool _08050B10: mov r0, r8 bl b_movescr_stack_push ldr r1, =gBattleScripting ldr r6, =gActiveBank ldrb r0, [r6] strb r0, [r1, 0x17] ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DAE03 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 _08050B68 .pool _08050B48: ldr r0, =gCurrentMove ldrh r0, [r0] cmp r0, 0xAE beq _08050B78 mov r0, r10 cmp r0, 0x1 beq _08050B78 movs r0, 0 bl sub_80464AC lsls r0, 24 cmp r0, 0 beq _08050B78 ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082D9F1C str r0, [r1] _08050B68: movs r0, 0x1 b _08050E80 .pool _08050B78: ldr r2, =gBattleMons ldr r1, =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 _08050B94 cmp r0, 0x49 bne _08050C2C _08050B94: mov r0, r9 cmp r0, 0 bne _08050C2C ldr r0, =gCurrentMove ldrh r0, [r0] cmp r0, 0xAE beq _08050C2C cmp r5, 0x1 bne _08050B68 ldr r4, =gSpecialStatuses lsls r0, r3, 2 adds r0, r3 lsls r0, 2 adds r0, r4 ldrb r0, [r0] lsls r0, 31 cmp r0, 0 beq _08050BD4 ldr r0, =gBattlescriptCurrInstr mov r1, r8 str r1, [r0] b _08050B68 .pool _08050BD4: mov r0, r8 bl b_movescr_stack_push ldr r1, =gBattleScripting ldr r2, =gActiveBank ldrb r0, [r2] strb r0, [r1, 0x17] ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DB5C7 str r0, [r1] ldr r1, =gLastUsedAbility ldrb r0, [r2] movs r3, 0x58 muls r0, r3 add r0, r10 adds r0, 0x20 ldrb r0, [r0] strb r0, [r1] ldrb r0, [r2] ldrb r1, [r1] bl RecordAbilityBattle ldr r6, =gActiveBank 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 _08050B68 .pool _08050C2C: ldr r1, =gActiveBank ldrb r0, [r1] movs r4, 0x58 muls r0, r4 add r0, r10 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x33 bne _08050C8C mov r2, r9 cmp r2, 0 bne _08050C8C cmp r7, 0x6 bne _08050C8C cmp r5, 0x1 bne _08050B68 mov r0, r8 bl b_movescr_stack_push ldr r1, =gBattleScripting ldr r3, =gActiveBank ldrb r0, [r3] strb r0, [r1, 0x17] ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DB62F str r0, [r1] ldr r1, =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 RecordAbilityBattle b _08050B68 .pool _08050C8C: ldr r4, =gActiveBank ldrb r0, [r4] movs r4, 0x58 muls r0, r4 add r0, r10 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x34 bne _08050CF0 mov r0, r9 cmp r0, 0 bne _08050CF0 cmp r7, 0x1 bne _08050CF0 cmp r5, 0x1 beq _08050CAE b _08050B68 _08050CAE: mov r0, r8 bl b_movescr_stack_push ldr r1, =gBattleScripting ldr r2, =gActiveBank ldrb r0, [r2] strb r0, [r1, 0x17] ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DB62F str r0, [r1] ldr r1, =gLastUsedAbility ldrb r0, [r2] muls r0, r4 add r0, r10 adds r0, 0x20 ldrb r0, [r0] strb r0, [r1] ldrb r0, [r2] ldrb r1, [r1] bl RecordAbilityBattle b _08050B68 .pool _08050CF0: ldr r3, =gActiveBank ldrb r1, [r3] movs r0, 0x58 muls r0, r1 add r0, r10 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x13 bne _08050D08 cmp r5, 0 bne _08050D08 b _08050B68 _08050D08: lsls r0, r6, 24 asrs r0, 28 movs r1, 0x7 ands r0, r1 negs r0, r0 lsls r0, 24 ldr r3, =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 _08050D32 strb r4, [r3, 0x1] movs r0, 0xD3 strb r0, [r3, 0x2] strb r4, [r3, 0x3] movs r2, 0x4 _08050D32: adds r0, r2, r3 strb r4, [r0] adds r2, 0x1 adds r1, r2, r3 movs r0, 0xD4 strb r0, [r1] adds r2, 0x1 adds r0, r2, r3 strb r4, [r0] adds r2, 0x1 adds r1, r2, r3 movs r0, 0xFF strb r0, [r1] ldr r4, =gActiveBank ldrb r2, [r4] movs r0, 0x58 muls r0, r2 adds r0, r7, r0 mov r1, r10 adds r1, 0x18 adds r0, r1 ldrb r0, [r0] lsls r0, 24 asrs r0, 24 cmp r0, 0 beq _08050DE2 movs r1, 0 ldr r0, =gBankTarget ldrb r0, [r0] ldr r3, =gBattleCommunication mov r8, r3 cmp r0, r2 bne _08050D76 movs r1, 0x1 _08050D76: mov r4, r8 strb r1, [r4, 0x5] b _08050E10 .pool _08050D8C: asrs r6, r0, 28 movs r0, 0x7 ands r6, r0 ldr r3, =gBattleTextBuff2 strb r2, [r3] movs r2, 0x1 cmp r6, 0x2 bne _08050DA6 strb r4, [r3, 0x1] movs r0, 0xD1 strb r0, [r3, 0x2] strb r4, [r3, 0x3] movs r2, 0x4 _08050DA6: 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, =gBattleMons ldr r4, =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 _08050DFC _08050DE2: ldr r1, =gBattleCommunication movs r0, 0x2 strb r0, [r1, 0x5] mov r8, r1 b _08050E10 .pool _08050DFC: movs r1, 0 ldr r0, =gBankTarget ldrb r0, [r0] ldr r2, =gBattleCommunication mov r8, r2 cmp r0, r3 bne _08050E0C movs r1, 0x1 _08050E0C: mov r3, r8 strb r1, [r3, 0x5] _08050E10: ldr r2, =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 _08050E40 movs r0, 0 strb r0, [r1] _08050E40: ldr r1, =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 _08050E56 movs r0, 0xC strb r0, [r1] _08050E56: mov r2, r8 ldrb r0, [r2, 0x5] cmp r0, 0x2 bne _08050E7E movs r3, 0x1 ands r3, r5 cmp r3, 0 beq _08050E70 ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r2, 0x1 orrs r1, r2 strb r1, [r0] _08050E70: mov r4, r8 ldrb r0, [r4, 0x5] cmp r0, 0x2 bne _08050E7E cmp r3, 0 bne _08050E7E b _08050B68 _08050E7E: movs r0, 0 _08050E80: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 .pool thumb_func_end sub_8050A1C thumb_func_start atk89_statbuffchange atk89_statbuffchange: @ 8050EA0 push {r4,r5,lr} ldr r5, =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, =gBattleScripting ldrb r4, [r0, 0x1A] movs r0, 0xF0 ands r0, r4 lsls r0, 24 asrs r0, 24 movs r1, 0xF ands r1, r4 ldrb r2, [r2, 0x1] bl sub_8050A1C lsls r0, 24 cmp r0, 0 bne _08050EDC ldr r0, [r5] adds r0, 0x6 str r0, [r5] _08050EDC: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end atk89_statbuffchange thumb_func_start atk8A_normalisebuffs atk8A_normalisebuffs: @ 8050EEC push {r4-r7,lr} movs r2, 0 ldr r0, =gNoOfAllBanks ldrb r1, [r0] ldr r0, =gBattlescriptCurrInstr mov r12, r0 cmp r2, r1 bge _08050F24 ldr r0, =gBattleMons movs r4, 0x6 adds r5, r1, 0 movs r7, 0x58 adds r6, r0, 0 adds r6, 0x18 _08050F08: adds r3, r2, 0x1 movs r1, 0x7 adds r0, r2, 0 muls r0, r7 adds r0, r6 adds r0, 0x7 _08050F14: strb r4, [r0] subs r0, 0x1 subs r1, 0x1 cmp r1, 0 bge _08050F14 adds r2, r3, 0 cmp r2, r5 blt _08050F08 _08050F24: mov r1, r12 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk8A_normalisebuffs thumb_func_start atk8B_setbide atk8B_setbide: @ 8050F40 push {r4,r5,lr} ldr r4, =gBattleMons ldr r3, =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, =gUnknown_02024268 ldrb r0, [r3] lsls r0, 1 adds r0, r1 ldr r1, =gCurrentMove ldrh r1, [r1] movs r2, 0 strh r1, [r0] ldr r1, =gUnknown_020241F8 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, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end atk8B_setbide thumb_func_start atk8C_confuseifrepeatingattackends atk8C_confuseifrepeatingattackends: @ 8050FB0 push {lr} ldr r1, =gBattleMons ldr r0, =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 _08050FD2 ldr r1, =gBattleCommunication movs r0, 0x75 strb r0, [r1, 0x3] _08050FD2: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .pool thumb_func_end atk8C_confuseifrepeatingattackends thumb_func_start atk8D_setloopcounter atk8D_setloopcounter: @ 8050FF0 push {r4,r5,lr} ldr r0, =gBattlescriptCurrInstr ldr r0, [r0] ldrb r1, [r0, 0x1] cmp r1, 0 beq _0805100C ldr r0, =gUnknown_02024212 strb r1, [r0] b _08051026 .pool _0805100C: ldr r4, =gUnknown_02024212 bl Random movs r5, 0x3 ands r0, r5 strb r0, [r4] cmp r0, 0x1 bls _08051022 bl Random ands r0, r5 _08051022: adds r0, 0x2 strb r0, [r4] _08051026: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end atk8D_setloopcounter thumb_func_start atk8E_cmd8e atk8E_cmd8e: @ 805103C ldr r1, =gBattleScripting movs r2, 0 movs r0, 0xFD strb r0, [r1, 0x8] movs r0, 0x1 strb r0, [r1, 0x9] strb r0, [r1, 0xA] strb r0, [r1, 0xB] strb r2, [r1, 0xC] movs r0, 0xFF strb r0, [r1, 0xD] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] bx lr .pool thumb_func_end atk8E_cmd8e thumb_func_start sub_8051064 sub_8051064: @ 8051064 push {r4-r7,lr} ldr r6, =gBattleMons ldr r7, =gBankAttacker ldrb r0, [r7] movs r5, 0x58 adds r1, r0, 0 muls r1, r5 adds r1, r6 adds r1, 0x2A ldr r4, =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 _080510AC ldr r0, =gBattleStruct ldr r1, [r0] adds r1, r3, r1 adds r1, 0x58 ldr r2, =gBattlePartyID lsls r0, r3, 1 b _08051108 .pool _080510AC: 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 _080510FC ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] movs r0, 0 b _08051116 .pool _080510FC: ldr r0, =gBattleStruct ldr r1, [r0] adds r1, r4, r1 adds r1, 0x58 ldr r2, =gBattlePartyID lsls r0, r4, 1 _08051108: adds r0, r2 ldrh r0, [r0] strb r0, [r1] ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DADD8 str r0, [r1] movs r0, 0x1 _08051116: pop {r4-r7} pop {r1} bx r1 .pool thumb_func_end sub_8051064 thumb_func_start sub_805112C sub_805112C: @ 805112C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0xC movs r0, 0 str r0, [sp, 0x4] ldr r5, =gBattleTypeFlags ldr r0, [r5] movs r1, 0x8 ands r0, r1 cmp r0, 0 bne _0805114A b _08051410 _0805114A: ldr r4, =gBankTarget ldrb r0, [r4] bl GetBankSide lsls r0, 24 ldr r1, =gEnemyParty str r1, [sp] cmp r0, 0 bne _08051160 ldr r0, =gPlayerParty str r0, [sp] _08051160: ldr r2, [r5] movs r1, 0x81 lsls r1, 1 adds r0, r2, 0 ands r0, r1 cmp r0, r1 beq _08051182 ldr r1, =0x02000100 adds r0, r2, 0 ands r0, r1 cmp r0, r1 beq _08051182 movs r0, 0x80 lsls r0, 15 ands r0, r2 cmp r0, 0 beq _080511C8 _08051182: ldr r2, =gBankTarget ldrb r1, [r2] movs r0, 0x2 ands r0, r1 adds r1, r2, 0 cmp r0, 0 beq _080511AC movs r0, 0x3 mov r9, r0 movs r0, 0x6 b _080511B2 .pool _080511AC: movs r0, 0 mov r9, r0 movs r0, 0x3 _080511B2: mov r8, r0 movs r0, 0x3 mov r10, r0 movs r0, 0x1 str r0, [sp, 0x8] ldr r2, =gBattlePartyID ldrb r1, [r1] b _0805128E .pool _080511C8: movs r0, 0x42 ands r0, r2 cmp r0, 0x42 beq _080511DA ldr r1, =0x02000040 adds r0, r2, 0 ands r0, r1 cmp r0, r1 bne _0805121C _080511DA: ldrb r0, [r4] bl sub_806D864 lsls r0, 24 lsrs r0, 24 bl sub_806D82C lsls r0, 16 lsrs r0, 16 cmp r0, 0x1 bne _080511FC movs r1, 0x3 mov r9, r1 movs r0, 0x6 b _08051202 .pool _080511FC: movs r1, 0 mov r9, r1 movs r0, 0x3 _08051202: mov r8, r0 movs r1, 0x3 mov r10, r1 movs r0, 0x1 str r0, [sp, 0x8] ldr r2, =gBattlePartyID ldr r0, =gBankTarget ldrb r1, [r0] b _0805128E .pool _0805121C: movs r0, 0x80 lsls r0, 8 ands r0, r2 cmp r0, 0 beq _08051274 ldrb r0, [r4] bl GetBankSide lsls r0, 24 cmp r0, 0 bne _08051240 movs r1, 0 mov r9, r1 movs r0, 0x6 mov r8, r0 mov r10, r0 movs r1, 0x2 b _08051260 _08051240: ldrb r1, [r4] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _08051252 movs r0, 0x3 mov r9, r0 movs r1, 0x6 b _08051258 _08051252: movs r0, 0 mov r9, r0 movs r1, 0x3 _08051258: mov r8, r1 movs r0, 0x3 mov r10, r0 movs r1, 0x1 _08051260: str r1, [sp, 0x8] ldr r2, =gBattlePartyID ldr r0, =gBankTarget ldrb r1, [r0] b _0805128E .pool _08051274: movs r0, 0x1 ands r2, r0 cmp r2, 0 beq _080512A4 movs r0, 0 mov r9, r0 movs r1, 0x6 mov r8, r1 mov r10, r1 movs r0, 0x2 str r0, [sp, 0x8] ldr r2, =gBattlePartyID ldrb r1, [r4] _0805128E: lsls r0, r1, 1 adds r0, r2 ldrh r7, [r0] movs r0, 0x2 eors r1, r0 lsls r1, 1 adds r1, r2 ldrh r5, [r1] b _080512BE .pool _080512A4: movs r1, 0 mov r9, r1 movs r0, 0x6 mov r8, r0 mov r10, r0 movs r1, 0x1 str r1, [sp, 0x8] ldr r1, =gBattlePartyID ldrb r0, [r4] lsls r0, 1 adds r0, r1 ldrh r5, [r0] adds r7, r5, 0 _080512BE: mov r6, r9 cmp r6, r8 bge _080512FC _080512C4: movs r0, 0x64 muls r0, r6 ldr r1, [sp] adds r4, r1, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _080512F6 adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 bne _080512F6 adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _080512F6 ldr r0, [sp, 0x4] adds r0, 0x1 str r0, [sp, 0x4] _080512F6: adds r6, 0x1 cmp r6, r8 blt _080512C4 _080512FC: ldr r1, [sp, 0x4] ldr r0, [sp, 0x8] cmp r1, r0 bgt _08051328 ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _08051414 .pool _08051328: bl sub_8051064 lsls r0, 24 cmp r0, 0 beq _08051378 _08051332: bl Random lsls r0, 16 lsrs r0, 16 mov r1, r10 bl __modsi3 adds r6, r0, 0 add r6, r9 cmp r6, r7 beq _08051332 cmp r6, r5 beq _08051332 movs r0, 0x64 muls r0, r6 ldr r1, [sp] adds r4, r1, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _08051332 adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0x1 beq _08051332 adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _08051332 _08051378: ldr r4, =gBankTarget ldrb r0, [r4] ldr r1, =gBattleStruct ldr r1, [r1] adds r0, r1 adds r0, 0x5C strb r6, [r0] bl sub_81B1250 lsls r0, 24 cmp r0, 0 bne _08051396 ldrb r0, [r4] bl sub_803BDA0 _08051396: ldr r0, =gBattleTypeFlags ldr r2, [r0] movs r1, 0x81 lsls r1, 1 adds r0, r2, 0 ands r0, r1 cmp r0, r1 beq _080513C0 movs r0, 0x42 ands r0, r2 cmp r0, 0x42 beq _080513C0 ldr r1, =0x02000100 adds r0, r2, 0 ands r0, r1 cmp r0, r1 beq _080513C0 ldr r0, =0x02000040 ands r2, r0 cmp r2, r0 bne _080513DE _080513C0: ldr r5, =gBankTarget ldrb r0, [r5] lsls r4, r6, 24 lsrs r4, 24 adds r1, r4, 0 movs r2, 0 bl sub_81B8E80 ldrb r1, [r5] movs r0, 0x2 eors r0, r1 adds r1, r4, 0 movs r2, 0x1 bl sub_81B8E80 _080513DE: ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x80 lsls r1, 15 ands r0, r1 cmp r0, 0 beq _08051414 ldr r0, =gBankTarget ldrb r0, [r0] lsls r1, r6, 24 lsrs r1, 24 bl sub_80571DC b _08051414 .pool _08051410: bl sub_8051064 _08051414: add sp, 0xC pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_805112C thumb_func_start sub_8051424 sub_8051424: @ 8051424 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} movs r6, 0 ldr r2, =gBattleMons ldr r3, =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 _08051466 movs r5, 0x58 adds r2, r1, 0 _0805144C: adds r0, r6, 0x1 lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0x3 bhi _08051466 lsls r1, r6, 1 ldrb r0, [r3] muls r0, r5 adds r1, r0 adds r1, r2 ldrh r0, [r1] cmp r0, 0 bne _0805144C _08051466: movs r3, 0 cmp r3, r6 bcs _080514E8 ldr r0, =gBattleMoves mov r10, r0 ldr r5, =gBattleMons mov r12, r5 ldr r7, =gBankAttacker ldrb r0, [r7] movs r4, 0x58 adds r5, r0, 0 muls r5, r4 movs r0, 0xC add r0, r12 mov r9, r0 _08051484: 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 _080514C6 mov r0, r8 adds r1, r5, r0 adds r0, r1, 0 adds r0, 0x21 ldrb r0, [r0] cmp r0, 0x7 beq _080514B2 adds r0, r1, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0x7 bne _080514C4 _080514B2: movs r2, 0x7 b _080514C6 .pool _080514C4: movs r2, 0 _080514C6: ldrb r0, [r7] muls r0, r4 add r0, r12 adds r1, r0, 0 adds r1, 0x21 ldrb r1, [r1] cmp r2, r1 beq _080514DE adds r0, 0x22 ldrb r0, [r0] cmp r2, r0 bne _080514E8 _080514DE: adds r0, r3, 0x1 lsls r0, 24 lsrs r3, r0, 24 cmp r3, r6 bcc _08051484 _080514E8: cmp r3, r6 bne _0805150C ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _080515B0 .pool _0805150C: movs r7, 0x3 ldr r5, =gBattleMoves mov r9, r5 _08051512: bl Random adds r3, r0, 0 ands r3, r7 cmp r3, r6 bcs _08051512 ldr r4, =gBattleMons lsls r1, r3, 1 ldr r3, =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 _08051572 mov r0, r8 adds r2, r5, r0 adds r0, r2, 0 adds r0, 0x21 ldrb r0, [r0] cmp r0, 0x7 beq _08051560 adds r0, r2, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0x7 bne _08051570 _08051560: movs r2, 0x7 b _08051572 .pool _08051570: movs r2, 0 _08051572: 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 _08051512 adds r0, 0x22 ldrb r0, [r0] cmp r2, r0 beq _08051512 strb r2, [r1] ldrb r0, [r4] muls r0, r3 add r0, r8 adds r0, 0x22 strb r2, [r0] ldr r1, =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, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _080515B0: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_8051424 thumb_func_start atk91_givemoney atk91_givemoney: @ 80515C8 push {r4,lr} ldr r0, =gBattleTypeFlags ldr r0, [r0] ldr r1, =0x02000002 ands r0, r1 cmp r0, 0 bne _08051650 ldr r1, =gUnknown_0202432E ldrh r0, [r1] cmp r0, 0 beq _08051650 adds r1, r0, 0 ldr r0, =gBattleStruct ldr r0, [r0] adds r0, 0x4A ldrb r0, [r0] adds r4, r1, 0 muls r4, r0 ldr r0, =gSaveBlock1Ptr ldr r0, [r0] movs r1, 0x92 lsls r1, 3 adds r0, r1 adds r1, r4, 0 bl add_money ldr r1, =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] strb r4, [r1, 0x4] movs r0, 0xFF lsls r0, 8 ands r4, r0 lsrs r4, 8 strb r4, [r1, 0x5] movs r0, 0xFF strb r0, [r1, 0x6] ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 bl b_movescr_stack_push ldr r0, =gUnknown_082DB307 str r0, [r4] b _08051658 .pool _08051650: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] _08051658: pop {r4} pop {r0} bx r0 .pool thumb_func_end atk91_givemoney thumb_func_start atk92_setlightscreen atk92_setlightscreen: @ 8051664 push {r4-r6,lr} ldr r5, =gBankAttacker ldrb r0, [r5] bl GetBankIdentity ldr r4, =gUnknown_0202428E movs r6, 0x1 adds r1, r6, 0 ands r1, r0 lsls r1, 1 adds r1, r4 ldrh r1, [r1] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _080516A4 ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r1, =gBattleCommunication movs r0, 0 b _08051718 .pool _080516A4: ldrb r0, [r5] bl GetBankIdentity adds r1, r6, 0 ands r1, r0 lsls r1, 1 adds r1, r4 ldrh r0, [r1] movs r2, 0x2 orrs r0, r2 strh r0, [r1] ldrb r0, [r5] bl GetBankIdentity ldr r4, =gSideTimers adds r1, r6, 0 ands r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r4 movs r1, 0x5 strb r1, [r0, 0x2] ldrb r0, [r5] bl GetBankIdentity adds r1, r6, 0 ands r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r4 ldrb r1, [r5] strb r1, [r0, 0x3] ldr r0, =gBattleTypeFlags ldr r0, [r0] ands r0, r6 cmp r0, 0 beq _08051714 movs r0, 0x1 bl sub_8069DEC lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 bne _08051714 ldr r1, =gBattleCommunication movs r0, 0x4 b _08051718 .pool _08051714: ldr r1, =gBattleCommunication movs r0, 0x3 _08051718: strb r0, [r1, 0x5] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end atk92_setlightscreen thumb_func_start atk93_ko_move atk93_ko_move: @ 8051730 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} ldr r7, =gBattleMons ldr r6, =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 _08051768 ldr r1, =gEnigmaBerries lsls r0, r2, 3 subs r0, r2 lsls r0, 2 adds r0, r1 ldrb r4, [r0, 0x7] ldrb r6, [r0, 0x1A] b _08051782 .pool _08051768: 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 _08051782: ldr r1, =gUnknown_0202420F ldr r5, =gBankTarget ldrb r0, [r5] strb r0, [r1] cmp r4, 0x27 bne _080517C0 bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x64 bl __umodsi3 lsls r0, 16 lsrs r0, 16 cmp r0, r6 bcs _080517C0 ldrb r0, [r5] movs r1, 0x27 bl b_history__record_item_x12_of_player ldr r2, =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] _080517C0: ldr r1, =gBattleMons ldr r2, =gBankTarget ldrb r3, [r2] movs r6, 0x58 adds r0, r3, 0 muls r0, r6 adds r5, r0, r1 adds r0, r5, 0 adds r0, 0x20 ldrb r4, [r0] mov r8, r1 mov r9, r2 cmp r4, 0x5 bne _0805181C ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r0, =gLastUsedAbility strb r4, [r0] ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DB552 str r0, [r1] mov r1, r9 ldrb r0, [r1] movs r1, 0x5 bl RecordAbilityBattle b _08051A70 .pool _0805181C: ldr r1, =gStatuses3 lsls r0, r3, 2 adds r0, r1 ldr r0, [r0] movs r1, 0x18 ands r0, r1 cmp r0, 0 bne _080518A0 ldr r1, =gBattleMoves ldr r0, =gCurrentMove ldrh r0, [r0] lsls r2, r0, 1 adds r2, r0 lsls r2, 2 adds r2, r1 ldr r7, =gBankAttacker ldrb r0, [r7] muls r0, r6 add r0, r8 adds r0, 0x2A ldrb r0, [r0] adds r1, r5, 0 adds r1, 0x2A ldrb r1, [r1] subs r0, r1 ldrb r2, [r2, 0x3] adds r0, r2 lsls r0, 16 lsrs r4, r0, 16 bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x64 bl __umodsi3 lsls r0, 16 lsrs r0, 16 adds r0, 0x1 cmp r0, r4 blt _08051870 b _08051A08 _08051870: ldrb r0, [r7] adds r1, r0, 0 muls r1, r6 add r1, r8 adds r1, 0x2A mov r2, r9 ldrb r0, [r2] muls r0, r6 add r0, r8 adds r0, 0x2A ldrb r1, [r1] movs r4, 0x1 ldrb r0, [r0] cmp r1, r0 bcs _08051936 b _08051A08 .pool _080518A0: ldr r1, =gDisableStructs lsls r0, r3, 3 subs r0, r3 lsls r0, 2 adds r0, r1 ldr r1, =gBankAttacker ldrb r0, [r0, 0x15] adds r7, r1, 0 ldrb r3, [r7] cmp r0, r3 bne _080518CA ldrb r0, [r7] muls r0, r6 add r0, r8 adds r0, 0x2A adds r1, r5, 0 adds r1, 0x2A ldrb r0, [r0] ldrb r1, [r1] cmp r0, r1 bcs _08051942 _080518CA: ldr r1, =gBattleMoves ldr r0, =gCurrentMove ldrh r0, [r0] lsls r2, r0, 1 adds r2, r0 lsls r2, 2 adds r2, r1 ldr r6, =gBattleMons ldrb r0, [r7] movs r5, 0x58 muls r0, r5 adds r0, r6 adds r0, 0x2A ldrb r1, [r0] ldr r0, =gBankTarget mov r8, r0 ldrb r0, [r0] muls r0, r5 adds r0, r6 adds r0, 0x2A ldrb r0, [r0] subs r1, r0 ldrb r2, [r2, 0x3] adds r1, r2 lsls r1, 16 lsrs r4, r1, 16 bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x64 bl __umodsi3 lsls r0, 16 lsrs r0, 16 adds r0, 0x1 cmp r0, r4 bge _08051934 ldrb r0, [r7] adds r1, r0, 0 muls r1, r5 adds r1, r6 adds r1, 0x2A mov r2, r8 ldrb r0, [r2] muls r0, r5 adds r0, r6 adds r0, 0x2A ldrb r1, [r1] movs r4, 0x1 ldrb r0, [r0] cmp r1, r0 bcs _08051936 _08051934: movs r4, 0 _08051936: ldr r3, =gBattleMons mov r8, r3 ldr r0, =gBankTarget mov r9, r0 cmp r4, 0 beq _08051A08 _08051942: ldr r0, =gProtectStructs mov r1, r9 ldrb r2, [r1] lsls r1, r2, 4 adds r1, r0 ldrb r0, [r1] lsls r0, 30 cmp r0, 0 bge _08051990 ldr r1, =gBattleMoveDamage movs r0, 0x58 muls r0, r2 add r0, r8 ldrh r0, [r0, 0x28] subs r0, 0x1 str r0, [r1] ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x40 b _080519EE .pool _08051990: ldr r0, =gSpecialStatuses lsls r1, r2, 2 adds r1, r2 lsls r1, 2 adds r1, r0 ldrb r0, [r1] lsrs r0, 7 cmp r0, 0 beq _080519DC ldr r1, =gBattleMoveDamage movs r3, 0x58 adds r0, r2, 0 muls r0, r3 add r0, r8 ldrh r0, [r0, 0x28] subs r0, 0x1 str r0, [r1] ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x80 orrs r0, r1 strb r0, [r2] ldr r1, =gUnknown_02024208 mov r2, r9 ldrb r0, [r2] muls r0, r3 add r0, r8 ldrh r0, [r0, 0x2E] strh r0, [r1] b _080519F2 .pool _080519DC: ldr r1, =gBattleMoveDamage movs r0, 0x58 muls r0, r2 add r0, r8 ldrh r0, [r0, 0x28] str r0, [r1] ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x10 _080519EE: orrs r0, r1 strb r0, [r2] _080519F2: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08051A70 .pool _08051A08: ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r3, =gBattleMons ldr r0, =gBankAttacker ldrb r0, [r0] movs r2, 0x58 adds r1, r0, 0 muls r1, r2 adds r1, r3 adds r1, 0x2A ldr r0, =gBankTarget ldrb r0, [r0] muls r0, r2 adds r0, r3 adds r0, 0x2A ldrb r1, [r1] ldrb r0, [r0] cmp r1, r0 bcc _08051A50 ldr r1, =gBattleCommunication movs r0, 0 b _08051A54 .pool _08051A50: ldr r1, =gBattleCommunication movs r0, 0x1 _08051A54: strb r0, [r1, 0x5] ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08051A70: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk93_ko_move thumb_func_start atk94_gethalfcurrentenemyhp atk94_gethalfcurrentenemyhp: @ 8051A84 push {lr} ldr r3, =gBattleMoveDamage ldr r2, =gBattleMons ldr r0, =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 _08051AA2 movs r0, 0x1 str r0, [r3] _08051AA2: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .pool thumb_func_end atk94_gethalfcurrentenemyhp thumb_func_start sub_8051AC0 sub_8051AC0: @ 8051AC0 push {lr} ldr r2, =gBattleWeather ldrh r1, [r2] movs r0, 0x18 ands r0, r1 cmp r0, 0 beq _08051AEC ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r1, =gBattleCommunication movs r0, 0x2 strb r0, [r1, 0x5] b _08051AFE .pool _08051AEC: movs r0, 0x8 strh r0, [r2] ldr r1, =gBattleCommunication movs r0, 0x3 strb r0, [r1, 0x5] ldr r0, =gUnknown_020243D0 adds r0, 0x28 movs r1, 0x5 strb r1, [r0] _08051AFE: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .pool thumb_func_end sub_8051AC0 thumb_func_start sub_8051B18 sub_8051B18: @ 8051B18 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 _08051B36 b _08051C48 _08051B36: str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0x4D movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 beq _08051B4C b _08051C48 _08051B4C: ldr r2, =gBattleWeather ldrh r1, [r2] movs r0, 0x18 ands r0, r1 adds r4, r2, 0 ldr r5, =gBankAttacker cmp r0, 0 beq _08051BDA ldr r0, =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 _08051BD4 cmp r0, 0x8 beq _08051BD4 cmp r0, 0x4 beq _08051BD4 adds r0, r3, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0x5 beq _08051BD4 cmp r0, 0x8 beq _08051BD4 cmp r0, 0x4 beq _08051BD4 adds r0, r3, 0 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x8 beq _08051BD4 ldr r0, =gStatuses3 lsls r1, r2, 2 adds r1, r0 ldr r1, [r1] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _08051BD4 movs r0, 0x80 lsls r0, 11 ands r1, r0 cmp r1, 0 bne _08051BD4 ldr r1, =gBattleMoveDamage ldrh r0, [r3, 0x2C] lsrs r0, 4 str r0, [r1] cmp r0, 0 bne _08051BDA movs r0, 0x1 b _08051BD8 .pool _08051BD4: ldr r1, =gBattleMoveDamage movs r0, 0 _08051BD8: str r0, [r1] _08051BDA: ldrh r1, [r4] movs r4, 0x80 adds r0, r4, 0 ands r0, r1 cmp r0, 0 beq _08051C50 ldr r1, =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 _08051C3C adds r0, r2, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0xF beq _08051C3C ldr r0, =gStatuses3 lsls r1, r3, 2 adds r1, r0 ldr r1, [r1] adds r0, r1, 0 ands r0, r4 cmp r0, 0 bne _08051C3C movs r0, 0x80 lsls r0, 11 ands r1, r0 cmp r1, 0 bne _08051C3C ldr r1, =gBattleMoveDamage ldrh r0, [r2, 0x2C] lsrs r0, 4 str r0, [r1] cmp r0, 0 bne _08051C50 movs r0, 0x1 str r0, [r1] b _08051C50 .pool _08051C3C: ldr r1, =gBattleMoveDamage movs r0, 0 str r0, [r1] b _08051C50 .pool _08051C48: ldr r1, =gBattleMoveDamage movs r0, 0 str r0, [r1] ldr r5, =gBankAttacker _08051C50: ldr r0, =gAbsentBankFlags ldrb r1, [r0] ldr r2, =gBitTable ldrb r0, [r5] lsls r0, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 beq _08051C6A ldr r1, =gBattleMoveDamage movs r0, 0 str r0, [r1] _08051C6A: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_8051B18 thumb_func_start atk97_tryinfatuatetarget atk97_tryinfatuatetarget: @ 8051C90 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} ldr r4, =gBankAttacker ldrb r0, [r4] bl GetBankSide lsls r0, 24 cmp r0, 0 bne _08051CC8 ldr r1, =gBattlePartyID ldrb r0, [r4] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r1, r0 ldr r0, =gPlayerParty b _08051CD8 .pool _08051CC8: ldr r1, =gBattlePartyID ldrb r0, [r4] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r1, r0 ldr r0, =gEnemyParty _08051CD8: adds r5, r1, r0 ldr r4, =gBankTarget ldrb r0, [r4] bl GetBankSide lsls r0, 24 cmp r0, 0 bne _08051D0C ldr r1, =gBattlePartyID ldrb r0, [r4] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r1, r0 ldr r0, =gPlayerParty b _08051D1C .pool _08051D0C: ldr r1, =gBattlePartyID ldrb r0, [r4] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r1, r0 ldr r0, =gEnemyParty _08051D1C: 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, =gBankTarget ldrb r0, [r5] movs r6, 0x58 muls r0, r6 ldr r1, =gBattleMons adds r0, r1 adds r0, 0x20 ldrb r2, [r0] cmp r2, 0xC bne _08051D94 ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DB5F5 str r0, [r1] ldr r0, =gLastUsedAbility strb r2, [r0] ldrb r0, [r5] movs r1, 0xC bl RecordAbilityBattle b _08051E2C .pool _08051D94: mov r0, r10 mov r1, r9 bl pokemon_species_get_gender_info adds r4, r0, 0 mov r0, r8 adds r1, r7, 0 bl pokemon_species_get_gender_info lsls r4, 24 lsls r0, 24 cmp r4, r0 beq _08051DE4 ldrb r0, [r5] muls r0, r6 ldr r4, =gBattleMons adds r4, 0x50 adds r0, r4 ldr r0, [r0] movs r1, 0xF0 lsls r1, 12 ands r0, r1 cmp r0, 0 bne _08051DE4 mov r0, r10 mov r1, r9 bl pokemon_species_get_gender_info lsls r0, 24 lsrs r0, 24 cmp r0, 0xFF beq _08051DE4 mov r0, r8 adds r1, r7, 0 bl pokemon_species_get_gender_info lsls r0, 24 lsrs r0, 24 cmp r0, 0xFF bne _08051E08 _08051DE4: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _08051E2C .pool _08051E08: ldrb r0, [r5] adds r2, r0, 0 muls r2, r6 adds r2, r4 ldr r1, =gBitTable ldr r0, =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, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _08051E2C: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk97_tryinfatuatetarget thumb_func_start sub_8051E48 sub_8051E48: @ 8051E48 push {r4-r7,lr} ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 bne _08051F34 ldr r5, =gBattlescriptCurrInstr ldr r1, [r5] ldrb r0, [r1, 0x1] cmp r0, 0x4 beq _08051EA0 bl get_battle_side_of_something ldr r4, =gActiveBank strb r0, [r4] ldr r3, =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 dp01_build_cmdbuf_x1A_aaaa_bbbb ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution ldr r0, [r5] adds r0, 0x2 str r0, [r5] b _08051F34 .pool _08051EA0: ldr r4, =gActiveBank ldr r5, =gBankAttacker ldrb r0, [r5] strb r0, [r4] ldr r6, =gAbsentBankFlags ldrb r1, [r6] ldr r7, =gBitTable ldrb r2, [r4] lsls r0, r2, 2 adds r0, r7 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _08051EDC ldr r3, =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 dp01_build_cmdbuf_x1A_aaaa_bbbb ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution _08051EDC: ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _08051F2C 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 _08051F2C ldr r3, =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 dp01_build_cmdbuf_x1A_aaaa_bbbb ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution _08051F2C: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x2 str r0, [r1] _08051F34: pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_8051E48 thumb_func_start atk99_setmisteffect atk99_setmisteffect: @ 8051F58 push {r4-r6,lr} ldr r6, =gSideTimers ldr r4, =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, 0x4] cmp r0, 0 beq _08051F98 ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x20 orrs r0, r1 strb r0, [r2] ldr r0, =gBattleCommunication strb r5, [r0, 0x5] b _08051FE6 .pool _08051F98: 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, 0x4] 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 ldrb r1, [r4] strb r1, [r0, 0x5] ldrb r0, [r4] bl GetBankIdentity ldr r2, =gUnknown_0202428E 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, =gBattleCommunication strb r3, [r0, 0x5] _08051FE6: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end atk99_setmisteffect thumb_func_start atk9A_setincreasedcriticalchance atk9A_setincreasedcriticalchance: @ 8052000 push {lr} ldr r1, =gBattleMons ldr r0, =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 _08052040 ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x20 orrs r0, r1 strb r0, [r2] ldr r1, =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] b _08052048 .pool _08052040: orrs r1, r3 str r1, [r0] ldr r0, =gBattleCommunication strb r2, [r0, 0x5] _08052048: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .pool thumb_func_end atk9A_setincreasedcriticalchance thumb_func_start atk9B_transformdataexecution atk9B_transformdataexecution: @ 805205C push {r4-r7,lr} mov r7, r8 push {r7} ldr r1, =gUnknown_020241EC ldr r2, =0x0000ffff adds r0, r2, 0 strh r0, [r1] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] ldr r7, =gBattleMons ldr r0, =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 _080520A2 ldr r0, =gStatuses3 lsls r1, 2 adds r1, r0 ldr r2, [r1] ldr r0, =0x000400c0 ands r2, r0 cmp r2, 0 beq _080520D8 _080520A2: ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x20 orrs r0, r1 strb r0, [r2] ldr r1, =gBattleCommunication movs r0, 0x1 b _080521EC .pool _080520D8: ldr r3, =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, =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, =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, =gActiveBank mov r8, r0 _08052170: adds r0, r5, r4 adds r1, r2, r4 ldrb r1, [r1] strb r1, [r0] adds r4, 0x1 cmp r4, 0x23 bls _08052170 movs r4, 0 ldr r7, =gBattleMoves ldr r3, =gUnknown_02024090 adds r5, r3, 0 adds r5, 0x18 _08052188: 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 _080521C4 adds r0, r4, r2 adds r0, r5 b _080521CA .pool _080521C4: adds r0, r4, r2 adds r0, r5 movs r1, 0x5 _080521CA: strb r1, [r0] adds r4, 0x1 cmp r4, 0x3 ble _08052188 ldrb r0, [r6] mov r1, r8 strb r0, [r1] movs r0, 0 movs r1, 0x2 bl dp01_build_cmdbuf_x38_a mov r2, r8 ldrb r0, [r2] bl dp01_battle_side_mark_buffer_for_execution ldr r1, =gBattleCommunication movs r0, 0 _080521EC: strb r0, [r1, 0x5] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atk9B_transformdataexecution thumb_func_start sub_80521FC sub_80521FC: @ 80521FC push {r4-r7,lr} ldr r7, =gBattleMons ldr r6, =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 _08052216 movs r2, 0x1 _08052216: ldrh r0, [r3, 0x28] cmp r0, r2 bhi _0805223C ldr r1, =gBattleMoveDamage movs r0, 0 str r0, [r1] ldr r1, =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] b _08052290 .pool _0805223C: ldr r4, =gBattleMoveDamage str r1, [r4] cmp r1, 0 bne _08052248 movs r0, 0x1 str r0, [r4] _08052248: 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, =0xffff1fff ands r0, r2 str r0, [r1] ldr r2, =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, =gBattleCommunication strb r2, [r0, 0x5] ldr r2, =gHitMarker ldr r0, [r2] movs r1, 0x80 lsls r1, 1 orrs r0, r1 str r0, [r2] _08052290: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_80521FC thumb_func_start sub_80522B8 sub_80522B8: @ 80522B8 push {r4,r5,lr} lsls r0, 16 lsrs r2, r0, 16 movs r3, 0 ldr r0, =gUnknown_0831C3E0 ldrh r1, [r0] ldr r4, =0x0000fffe adds r5, r0, 0 cmp r1, r4 beq _080522E0 cmp r1, r2 beq _080522E0 adds r1, r5, 0 _080522D2: adds r1, 0x2 adds r3, 0x1 ldrh r0, [r1] cmp r0, r4 beq _080522E0 cmp r0, r2 bne _080522D2 _080522E0: lsls r0, r3, 1 adds r0, r5 ldrh r1, [r0] ldr r0, =0x0000fffe eors r1, r0 negs r0, r1 orrs r0, r1 lsrs r0, 31 pop {r4,r5} pop {r1} bx r1 .pool thumb_func_end sub_80522B8 thumb_func_start atk9D_copyattack atk9D_copyattack: @ 8052300 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} ldr r0, =gUnknown_020241EC ldr r1, =0x0000ffff adds r7, r1, 0 strh r7, [r0] ldr r5, =gUnknown_02024248 ldr r6, =gBankTarget ldrb r0, [r6] lsls r0, 1 adds r0, r5 ldrh r0, [r0] bl sub_80522B8 lsls r0, 24 cmp r0, 0 bne _0805235A ldr r3, =gBattleMons ldr r2, =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 _0805235A ldrb r0, [r6] lsls r0, 1 adds r0, r5 ldrh r1, [r0] cmp r1, 0 beq _0805235A cmp r1, r7 bne _08052394 _0805235A: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _080524CC .pool _08052394: movs r2, 0 mov r3, r12 adds r3, 0xC adds r0, r4, r3 ldrh r0, [r0] ldr r4, =gBattlescriptCurrInstr mov r10, r4 cmp r0, r1 beq _080523CE mov r8, r3 adds r7, r5, 0 adds r5, r6, 0 mov r4, r9 movs r3, 0x58 _080523B0: adds r2, 0x1 cmp r2, 0x3 bgt _080523CE 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 _080523B0 _080523CE: cmp r2, 0x4 bne _080524B0 ldr r5, =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, =gUnknown_02024248 ldr r3, =gBankTarget ldrb r0, [r3] lsls r0, 1 adds r0, r2 ldrh r0, [r0] strh r0, [r1] ldr r4, =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 _08052438 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 _0805244C .pool _08052438: 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] _0805244C: ldr r1, =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, =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, =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 _080524CC .pool _080524B0: 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] _080524CC: 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_80524DC sub_80524DC: @ 80524DC push {r4-r7,lr} mov r7, r8 push {r7} ldr r7, =gCurrentMove movs r6, 0xB1 lsls r6, 1 ldr r5, =gUnknown_0831C3E0 ldr r0, =gBattlescriptCurrInstr mov r8, r0 _080524EE: bl Random ldr r2, =0x000001ff adds r1, r2, 0 ands r0, r1 adds r0, 0x1 strh r0, [r7] cmp r0, r6 bhi _080524EE movs r0, 0x3 _08052502: subs r0, 0x1 cmp r0, 0 bge _08052502 ldr r4, =gCurrentMove ldrh r2, [r4] ldr r3, =0x0000ffff subs r0, r5, 0x2 _08052510: adds r0, 0x2 ldrh r1, [r0] cmp r1, r2 beq _0805251C cmp r1, r3 bne _08052510 _0805251C: ldr r0, =0x0000ffff cmp r1, r0 bne _080524EE ldr r2, =gHitMarker ldr r0, [r2] ldr r1, =0xfffffbff ands r0, r1 str r0, [r2] ldr r3, =gUnknown_082D86A8 ldr r2, =gBattleMoves ldrh r1, [r4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0] lsls r0, 2 adds r0, r3 ldr r0, [r0] mov r1, r8 str r0, [r1] ldrh r0, [r4] movs r1, 0 bl GetMoveTarget ldr r1, =gBankTarget strb r0, [r1] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_80524DC thumb_func_start atk9F_nightshadedamageeffect atk9F_nightshadedamageeffect: @ 8052584 ldr r3, =gBattleMoveDamage ldr r2, =gBattleMons ldr r0, =gBankAttacker ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x2A ldrb r0, [r0] str r0, [r3] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] bx lr .pool thumb_func_end atk9F_nightshadedamageeffect thumb_func_start atkA0_psywavedamageeffect atkA0_psywavedamageeffect: @ 80525B4 push {r4,lr} movs r4, 0xF _080525B8: bl Random adds r3, r4, 0 ands r3, r0 cmp r3, 0xA bgt _080525B8 lsls r0, r3, 2 adds r0, r3 lsls r3, r0, 1 ldr r4, =gBattleMoveDamage ldr r2, =gBattleMons ldr r0, =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, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .pool thumb_func_end atkA0_psywavedamageeffect thumb_func_start atkA1_counterdamagecalculator atkA1_counterdamagecalculator: @ 8052608 push {r4-r6,lr} ldr r4, =gBankAttacker ldrb r0, [r4] bl GetBankSide lsls r0, 24 lsrs r6, r0, 24 ldr r5, =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 _080526BC cmp r6, r2 beq _080526BC ldr r6, =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 _080526BC ldr r1, =gBattleMoveDamage lsls r0, r3, 1 str r0, [r1] ldr r1, =gSideTimers lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r1, r0, r1 ldrb r0, [r1, 0x8] cmp r0, 0 beq _08052690 ldrb r1, [r1, 0x9] adds r0, r1, 0 muls r0, r4 adds r0, r6 ldrh r0, [r0, 0x28] cmp r0, 0 beq _08052690 ldr r0, =gBankTarget strb r1, [r0] b _080526A0 .pool _08052690: ldr r2, =gBankTarget ldr r1, =gProtectStructs ldr r0, =gBankAttacker ldrb r0, [r0] lsls r0, 4 adds r0, r1 ldrb r0, [r0, 0xC] strb r0, [r2] _080526A0: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _080526EC .pool _080526BC: ldr r2, =gSpecialStatuses ldr r0, =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, =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] _080526EC: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end atkA1_counterdamagecalculator thumb_func_start atkA2_mirrorcoatdamagecalculator atkA2_mirrorcoatdamagecalculator: @ 8052700 push {r4-r6,lr} ldr r4, =gBankAttacker ldrb r0, [r4] bl GetBankSide lsls r0, 24 lsrs r6, r0, 24 ldr r5, =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 _080527B4 cmp r6, r2 beq _080527B4 ldr r6, =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 _080527B4 ldr r1, =gBattleMoveDamage lsls r0, r3, 1 str r0, [r1] ldr r1, =gSideTimers lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r1, r0, r1 ldrb r0, [r1, 0x8] cmp r0, 0 beq _08052788 ldrb r1, [r1, 0x9] adds r0, r1, 0 muls r0, r4 adds r0, r6 ldrh r0, [r0, 0x28] cmp r0, 0 beq _08052788 ldr r0, =gBankTarget strb r1, [r0] b _08052798 .pool _08052788: ldr r2, =gBankTarget ldr r1, =gProtectStructs ldr r0, =gBankAttacker ldrb r0, [r0] lsls r0, 4 adds r0, r1 ldrb r0, [r0, 0xD] strb r0, [r2] _08052798: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _080527E4 .pool _080527B4: ldr r2, =gSpecialStatuses ldr r0, =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, =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] _080527E4: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end atkA2_mirrorcoatdamagecalculator thumb_func_start atkA3_disablelastusedattack atkA3_disablelastusedattack: @ 80527F8 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} movs r4, 0 ldr r2, =gBattleMons ldr r3, =gBankTarget ldrb r1, [r3] movs r0, 0x58 muls r0, r1 adds r7, r2, 0 adds r7, 0xC adds r0, r7 ldr r5, =gUnknown_02024248 lsls r1, 1 adds r1, r5 ldrh r0, [r0] mov r9, r2 adds r6, r3, 0 ldr r2, =gDisableStructs mov r8, r2 ldrh r1, [r1] cmp r0, r1 beq _0805284C mov r12, r6 movs r3, 0x58 _0805282C: adds r4, 0x1 cmp r4, 0x3 bgt _0805284C 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 _0805282C _0805284C: ldrb r1, [r6] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 add r0, r8 ldrh r0, [r0, 0x4] cmp r0, 0 bne _08052910 cmp r4, 0x4 beq _08052910 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 _08052910 ldr r1, =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, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0805292A .pool _08052910: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0805292A: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atkA3_disablelastusedattack thumb_func_start atkA4_setencore atkA4_setencore: @ 805293C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} movs r5, 0 ldr r3, =gBattleMons ldr r4, =gBankTarget ldrb r1, [r4] movs r0, 0x58 muls r0, r1 adds r6, r3, 0 adds r6, 0xC adds r0, r6 ldr r2, =gUnknown_02024248 lsls r1, 1 adds r1, r2 ldrh r0, [r0] mov r10, r3 mov r8, r2 ldr r2, =gDisableStructs mov r9, r2 ldrh r1, [r1] cmp r0, r1 beq _08052996 mov r12, r4 adds r7, r6, 0 mov r6, r8 movs r3, 0x58 _08052976: adds r5, 0x1 cmp r5, 0x3 bgt _08052996 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 _08052976 _08052996: ldrb r0, [r4] lsls r0, 1 add r0, r8 ldrh r2, [r0] cmp r2, 0xA5 beq _080529AA cmp r2, 0xE3 beq _080529AA cmp r2, 0x77 bne _080529AC _080529AA: movs r5, 0x4 _080529AC: 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 _08052A44 cmp r5, 0x4 beq _08052A44 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 _08052A44 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, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08052A5E .pool _08052A44: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08052A5E: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atkA4_setencore thumb_func_start sub_8052A70 sub_8052A70: @ 8052A70 push {r4-r7,lr} ldr r6, =gBattleMons ldr r0, =gBankTarget mov r12, r0 ldrb r0, [r0] movs r7, 0x58 adds r2, r0, 0 muls r2, r7 adds r0, r6, 0 adds r0, 0x50 adds r0, r2, r0 ldr r0, [r0] movs r1, 0x80 lsls r1, 17 ands r0, r1 cmp r0, 0 bne _08052B10 ldr r5, =gBankAttacker ldrb r0, [r5] muls r0, r7 adds r0, r6 ldrh r3, [r0, 0x28] adds r0, r2, r6 ldrh r1, [r0, 0x28] adds r3, r1 asrs r3, 1 ldr r4, =gBattleMoveDamage subs r1, r3 str r1, [r4] ldr r2, =gBattleScripting strb r1, [r2] movs r0, 0xFF lsls r0, 8 ands r0, r1 asrs r0, 8 strb r0, [r2, 0x1] movs r0, 0xFF lsls r0, 16 ands r0, r1 asrs r0, 16 strb r0, [r2, 0x2] lsrs r1, 24 strb r1, [r2, 0x3] ldrb r0, [r5] muls r0, r7 adds r0, r6 ldrh r0, [r0, 0x28] subs r0, r3 str r0, [r4] ldr r2, =gSpecialStatuses mov r0, r12 ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r2, 0x4 adds r0, r2 ldr r1, =0x0000ffff str r1, [r0] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08052B2A .pool _08052B10: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08052B2A: pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_8052A70 thumb_func_start atkA6_settypetorandomresistance atkA6_settypetorandomresistance: @ 8052B34 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} ldr r1, =gUnknown_02024250 ldr r4, =gBankAttacker ldrb r0, [r4] lsls r0, 1 adds r2, r0, r1 ldrh r1, [r2] cmp r1, 0 beq _08052B7E ldr r0, =0x0000ffff cmp r1, r0 beq _08052B7E ldrh r0, [r2] bl sub_8052F48 lsls r0, 24 cmp r0, 0 beq _08052C1C ldr r1, =gBattleMons ldr r2, =gUnknown_02024270 ldrb r0, [r4] adds r0, r2 ldrb r2, [r0] movs r0, 0x58 muls r0, r2 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 5 ands r0, r1 cmp r0, 0 beq _08052C1C _08052B7E: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _08052D08 .pool _08052BB4: 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, =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, =gBattlescriptCurrInstr b _08052C0A .pool _08052BE0: 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, =gBattleMons adds r0, r7 adds r0, 0x22 strb r2, [r0] ldr r1, =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 _08052C0A: ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08052D08 .pool _08052C1C: movs r4, 0 mov r8, r4 movs r7, 0x7F mov r9, r7 _08052C24: bl Random mov r4, r9 ands r4, r0 cmp r4, 0x70 bhi _08052C24 lsls r0, r4, 1 adds r4, r0, r4 ldr r6, =gUnknown_0831ACE8 adds r3, r4, r6 ldr r1, =gUnknown_02024258 ldr r2, =gBankAttacker ldrb r5, [r2] lsls r0, r5, 1 adds r0, r1 ldrb r1, [r3] mov r10, r2 ldrh r0, [r0] cmp r1, r0 bne _08052C80 adds r0, r4, 0x2 adds r0, r6 ldrb r0, [r0] cmp r0, 0x5 bhi _08052C80 ldr r7, =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 _08052C80 adds r0, r3, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, r1 bne _08052BB4 _08052C80: movs r7, 0x1 add r8, r7 ldr r0, =0x000003e7 cmp r8, r0 ble _08052C24 movs r0, 0 mov r8, r0 ldr r1, =gBattlescriptCurrInstr mov r12, r1 ldr r3, =gUnknown_0831ACE8 adds r0, r4, 0x1 adds r0, r3 mov r9, r0 adds r5, r3, 0 _08052C9C: ldrb r1, [r5] cmp r1, 0xFF bgt _08052CA6 cmp r1, 0xFE bge _08052CE0 _08052CA6: mov r4, r10 ldrb r2, [r4] lsls r0, r2, 1 ldr r7, =gUnknown_02024258 adds r0, r7 ldrh r0, [r0] cmp r1, r0 bne _08052CE0 ldrb r0, [r5, 0x2] cmp r0, 0x5 bhi _08052CE0 movs r6, 0x58 adds r0, r2, 0 muls r0, r6 ldr r1, =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 _08052CE0 adds r0, r2, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, r1 beq _08052CE0 b _08052BE0 _08052CE0: adds r5, 0x3 movs r0, 0x3 add r8, r0 ldr r0, =0x0000014f cmp r8, r0 bls _08052C9C 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] _08052D08: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atkA6_settypetorandomresistance thumb_func_start atkA7_setalwayshitflag atkA7_setalwayshitflag: @ 8052D34 push {r4,lr} ldr r4, =gStatuses3 ldr r3, =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, =gDisableStructs ldrb r1, [r3] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r2 ldr r1, =gBankAttacker ldrb r1, [r1] strb r1, [r0, 0x15] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .pool thumb_func_end atkA7_setalwayshitflag thumb_func_start atkA8_copymovepermanently atkA8_copymovepermanently: @ 8052D8C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x14 ldr r0, =gUnknown_020241EC ldr r1, =0x0000ffff adds r5, r1, 0 strh r5, [r0] ldr r3, =gBattleMons ldr r2, =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 _08052DC4 b _08052F18 _08052DC4: ldr r0, =gUnknown_02024240 ldr r2, =gBankTarget ldrb r1, [r2] lsls r1, 1 adds r1, r0 ldrh r1, [r1] mov r9, r0 mov r8, r2 cmp r1, 0xA5 bne _08052DDA b _08052F18 _08052DDA: cmp r1, 0 bne _08052DE0 b _08052F18 _08052DE0: cmp r1, r5 bne _08052DE6 b _08052F18 _08052DE6: cmp r1, 0xA6 bne _08052DEC b _08052F18 _08052DEC: movs r7, 0 mov r5, r9 mov r0, r12 adds r0, 0xC adds r1, r4, r0 mov r3, r8 _08052DF8: ldrh r2, [r1] cmp r2, 0xA6 beq _08052E0A ldrb r0, [r3] lsls r0, 1 adds r0, r5 ldrh r0, [r0] cmp r2, r0 beq _08052E12 _08052E0A: adds r1, 0x2 adds r7, 0x1 cmp r7, 0x3 ble _08052DF8 _08052E12: cmp r7, 0x4 beq _08052E18 b _08052F18 _08052E18: ldr r4, =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, =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, =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 _08052E7A: 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 _08052E7A 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 dp01_build_cmdbuf_x02_a_b_varargs ldr r0, =gActiveBank ldrb r0, [r0] bl dp01_battle_side_mark_buffer_for_execution ldr r1, =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x2 strb r0, [r1, 0x1] ldr r3, =gUnknown_02024240 ldr r2, =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, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08052F32 .pool _08052F18: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08052F32: add sp, 0x14 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atkA8_copymovepermanently thumb_func_start sub_8052F48 sub_8052F48: @ 8052F48 push {lr} lsls r0, 16 lsrs r0, 16 ldr r2, =gBattleMoves lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r2 ldrb r0, [r1] cmp r0, 0x91 beq _08052F72 cmp r0, 0x27 beq _08052F72 cmp r0, 0x4B beq _08052F72 cmp r0, 0x97 beq _08052F72 cmp r0, 0x9B beq _08052F72 cmp r0, 0x1A bne _08052F7C _08052F72: movs r0, 0x1 b _08052F7E .pool _08052F7C: movs r0, 0 _08052F7E: pop {r1} bx r1 thumb_func_end sub_8052F48 thumb_func_start sub_8052F84 sub_8052F84: @ 8052F84 push {lr} lsls r0, 16 lsrs r1, r0, 16 cmp r1, 0 beq _08052FA2 cmp r1, 0xD6 beq _08052FA2 movs r0, 0x89 lsls r0, 1 cmp r1, r0 beq _08052FA2 cmp r1, 0x77 beq _08052FA2 cmp r1, 0x76 bne _08052FA6 _08052FA2: movs r0, 0x1 b _08052FA8 _08052FA6: movs r0, 0 _08052FA8: pop {r1} bx r1 thumb_func_end sub_8052F84 thumb_func_start move_weather_interaction move_weather_interaction: @ 8052FAC push {lr} lsls r1, 16 lsrs r2, r1, 16 ldr r1, =gBattleMoves lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r1 ldrb r0, [r0] adds r3, r1, 0 cmp r0, 0x97 bne _08052FD0 ldr r0, =gBattleWeather ldrh r1, [r0] movs r0, 0x60 ands r0, r1 cmp r0, 0 bne _08053010 _08052FD0: lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r3 ldrb r0, [r0] cmp r0, 0x91 beq _08052FF2 cmp r0, 0x27 beq _08052FF2 cmp r0, 0x4B beq _08052FF2 cmp r0, 0x97 beq _08052FF2 cmp r0, 0x9B beq _08052FF2 cmp r0, 0x1A bne _08053010 _08052FF2: ldr r0, =gHitMarker ldr r0, [r0] movs r1, 0x80 lsls r1, 20 ands r0, r1 cmp r0, 0 beq _08053010 movs r0, 0x1 b _08053012 .pool _08053010: movs r0, 0x2 _08053012: pop {r1} bx r1 thumb_func_end move_weather_interaction thumb_func_start sub_8053018 sub_8053018: @ 8053018 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} movs r6, 0 movs r5, 0 ldr r0, =gBankAttacker mov r9, r0 movs r1, 0x58 mov r8, r1 ldr r7, =gUnknown_02024090 movs r0, 0x84 lsls r0, 1 mov r10, r0 _08053036: lsls r4, r5, 1 mov r1, r9 ldrb r0, [r1] mov r1, r8 muls r1, r0 adds r0, r1, 0 adds r0, r4, r0 adds r0, r7 ldrh r0, [r0] bl sub_8052F84 lsls r0, 24 cmp r0, 0 bne _08053076 mov r1, r9 ldrb r0, [r1] mov r1, r8 muls r1, r0 adds r0, r1, 0 adds r0, r4, r0 adds r0, r7 ldrh r1, [r0] cmp r1, r10 beq _08053076 cmp r1, 0xFD beq _08053076 adds r0, r1, 0 bl sub_8052F48 lsls r0, 24 cmp r0, 0 beq _08053084 _08053076: ldr r1, =gBitTable lsls r0, r5, 2 adds r0, r1 ldr r0, [r0] orrs r6, r0 lsls r0, r6, 24 lsrs r6, r0, 24 _08053084: adds r5, 0x1 cmp r5, 0x3 ble _08053036 ldr r0, =gBankAttacker ldrb r0, [r0] adds r1, r6, 0 movs r2, 0xFD bl sub_803FECC lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0xF bne _080530B8 ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0805311C .pool _080530B8: movs r7, 0x3 ldr r4, =gBitTable _080530BC: bl Random adds r5, r7, 0 ands r5, r0 lsls r0, r5, 2 adds r0, r4 ldr r0, [r0] ands r0, r6 cmp r0, 0 bne _080530BC ldr r4, =gRandomMove ldr r2, =gBattleMons lsls r1, r5, 1 ldr r0, =gBankAttacker ldrb r3, [r0] movs r0, 0x58 muls r0, r3 adds r1, r0 adds r2, 0xC adds r1, r2 ldrh r0, [r1] strh r0, [r4] ldr r0, =gCurrMovePos strb r5, [r0] ldr r2, =gHitMarker ldr r0, [r2] ldr r1, =0xfffffbff ands r0, r1 str r0, [r2] ldrh r0, [r4] movs r1, 0 bl GetMoveTarget ldr r1, =gBankTarget strb r0, [r1] ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0805311C: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_8053018 thumb_func_start atkAA_destinybondeffect atkAA_destinybondeffect: @ 8053150 ldr r1, =gBattleMons ldr r0, =gBankAttacker ldrb r2, [r0] movs r0, 0x58 muls r2, r0 adds r1, 0x50 adds r2, r1 ldr r0, [r2] movs r1, 0x80 lsls r1, 18 orrs r0, r1 str r0, [r2] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] bx lr .pool thumb_func_end atkAA_destinybondeffect thumb_func_start b_feature_update_destiny_bond b_feature_update_destiny_bond: @ 8053180 push {r4,r5,lr} ldr r0, =gBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 lsrs r5, r0, 24 ldr r4, =gBankTarget ldrb r0, [r4] bl GetBankSide lsls r0, 24 lsrs r3, r0, 24 ldr r1, =gBattleMons ldrb r2, [r4] movs r0, 0x58 muls r0, r2 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 18 ands r0, r1 cmp r0, 0 beq _080531CA cmp r5, r3 beq _080531CA ldr r2, =gHitMarker ldr r1, [r2] movs r0, 0x80 lsls r0, 17 ands r0, r1 cmp r0, 0 bne _080531CA movs r0, 0x40 orrs r1, r0 str r1, [r2] _080531CA: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end b_feature_update_destiny_bond thumb_func_start atkAB_802A458 atkAB_802A458: @ 80531E0 push {lr} bl b_feature_update_destiny_bond ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .pool thumb_func_end atkAB_802A458 thumb_func_start atkAC_remaininghptopower atkAC_remaininghptopower: @ 80531F8 push {lr} ldr r2, =gBattleMons ldr r0, =gBankAttacker ldrb r1, [r0] movs r0, 0x58 muls r1, r0 adds r1, r2 movs r2, 0x28 ldrsh r0, [r1, r2] movs r2, 0x2C ldrsh r1, [r1, r2] movs r2, 0x30 bl sub_8075034 lsls r0, 24 lsrs r1, r0, 24 movs r3, 0 ldr r0, =gUnknown_0831C408 ldrb r2, [r0] cmp r1, r2 ble _08053232 adds r2, r0, 0 _08053224: adds r3, 0x2 cmp r3, 0xB bgt _08053232 adds r0, r3, r2 ldrb r0, [r0] cmp r1, r0 bgt _08053224 _08053232: ldr r2, =gUnknown_02024400 ldr r1, =gUnknown_0831C408 adds r0, r3, 0x1 adds r0, r1 ldrb r0, [r0] strh r0, [r2] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .pool thumb_func_end atkAC_remaininghptopower thumb_func_start atkAD_reducepprandom atkAD_reducepprandom: @ 8053260 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 ldr r4, =gUnknown_02024248 ldr r1, =gBankTarget ldrb r3, [r1] lsls r0, r3, 1 adds r0, r4 ldrh r2, [r0] mov r8, r1 cmp r2, 0 bne _08053280 b _08053408 _08053280: ldr r0, =0x0000ffff cmp r2, r0 bne _08053288 b _08053408 _08053288: movs r7, 0 ldr r0, =gBattleMons movs r1, 0x58 muls r1, r3 adds r3, r0, 0 adds r3, 0xC adds r1, r3 ldrh r1, [r1] cmp r2, r1 beq _080532C0 adds r6, r4, 0 mov r5, r8 adds r4, r3, 0 movs r3, 0x58 _080532A4: adds r7, 0x1 cmp r7, 0x3 bgt _080532C0 ldrb r0, [r5] lsls r2, r0, 1 adds r2, r6 lsls r1, r7, 1 muls r0, r3 adds r1, r0 adds r1, r4 ldrh r0, [r2] ldrh r1, [r1] cmp r0, r1 bne _080532A4 _080532C0: cmp r7, 0x4 bne _080532C6 b _08053408 _080532C6: mov r4, r8 ldrb r0, [r4] movs r1, 0x58 mov r9, r1 mov r3, r9 muls r3, r0 adds r0, r3, 0 adds r0, r7, r0 ldr r1, =gBattleMons adds r1, 0x24 mov r10, r1 add r0, r10 ldrb r0, [r0] cmp r0, 0x1 bhi _080532E6 b _08053408 _080532E6: bl Random movs r1, 0x3 ands r1, r0 adds r6, r1, 0x2 ldrb r0, [r4] mov r3, r9 muls r3, r0 adds r0, r3, 0 adds r0, r7, r0 add r0, r10 ldrb r0, [r0] cmp r0, r6 bge _08053304 adds r6, r0, 0 _08053304: ldr r1, =gBattleTextBuff1 movs r5, 0xFD strb r5, [r1] movs r0, 0x2 strb r0, [r1, 0x1] ldr r2, =gUnknown_02024248 mov r3, r8 ldrb r0, [r3] lsls r0, 1 adds r0, r2 ldrh r0, [r0] strb r0, [r1, 0x2] ldrb r0, [r3] lsls r0, 1 adds r0, r2 ldrh r0, [r0] lsrs r0, 8 strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldr r4, =gBattleTextBuff2 adds r0, r4, 0 adds r1, r6, 0 movs r2, 0 movs r3, 0x1 bl ConvertIntToDecimalStringN strb r5, [r4] movs r0, 0x1 strb r0, [r4, 0x1] strb r0, [r4, 0x2] strb r0, [r4, 0x3] strb r6, [r4, 0x4] subs r0, 0x2 strb r0, [r4, 0x5] mov r1, r8 ldrb r0, [r1] mov r1, r9 muls r1, r0 adds r1, r7, r1 add r1, r10 ldrb r0, [r1] subs r0, r6 strb r0, [r1] ldr r4, =gActiveBank mov r3, r8 ldrb r0, [r3] strb r0, [r4] ldr r1, =gDisableStructs ldrb r3, [r4] lsls r0, r3, 3 subs r0, r3 lsls r0, 2 adds r0, r1 ldrb r1, [r0, 0x18] lsrs r1, 4 ldr r2, =gBitTable lsls r0, r7, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _080533B8 mov r2, r9 muls r2, r3 ldr r0, =gBattleMons adds r0, 0x50 adds r0, r2, r0 ldr r0, [r0] movs r1, 0x80 lsls r1, 14 ands r0, r1 cmp r0, 0 bne _080533B8 adds r1, r7, 0 adds r1, 0x9 lsls r1, 24 lsrs r1, 24 mov r3, r10 adds r0, r2, r3 adds r0, r7 str r0, [sp] movs r0, 0 movs r2, 0 movs r3, 0x1 bl dp01_build_cmdbuf_x02_a_b_varargs ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution _080533B8: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] ldr r1, =gBattleMons ldr r0, =gBankTarget ldrb r2, [r0] movs r0, 0x58 muls r0, r2 adds r0, r7, r0 adds r1, 0x24 adds r0, r1 ldrb r0, [r0] cmp r0, 0 bne _08053422 adds r0, r2, 0 bl CancelMultiTurnMoves b _08053422 .pool _08053408: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08053422: add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atkAD_reducepprandom thumb_func_start atkAE_clearstatusifnotsoundproofed atkAE_clearstatusifnotsoundproofed: @ 8053438 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 movs r4, 0 str r4, [sp, 0x4] mov r8, r4 ldr r0, =gCurrentMove ldrh r0, [r0] cmp r0, 0xD7 beq _08053454 b _0805363E _08053454: ldr r6, =gBattleCommunication mov r0, r8 strb r0, [r6, 0x5] ldr r5, =gBankAttacker ldrb r0, [r5] bl GetBankSide lsls r0, 24 ldr r1, =gEnemyParty mov r10, r1 cmp r0, 0 bne _08053470 ldr r2, =gPlayerParty mov r10, r2 _08053470: ldr r4, =gBattleMons ldrb r3, [r5] movs r7, 0x58 adds r2, r3, 0 muls r2, r7 adds r0, r2, r4 adds r1, r0, 0 adds r1, 0x20 ldrb r0, [r1] cmp r0, 0x2B beq _080534C4 adds r0, r4, 0 adds r0, 0x4C adds r0, r2, r0 mov r1, r8 str r1, [r0] ldrb r0, [r5] adds r2, r0, 0 muls r2, r7 adds r0, r4, 0 adds r0, 0x50 adds r2, r0 ldr r0, [r2] ldr r1, =0xf7ffffff ands r0, r1 str r0, [r2] b _080534D4 .pool _080534C4: ldrb r1, [r1] adds r0, r3, 0 bl RecordAbilityBattle ldrb r0, [r6, 0x5] movs r1, 0x1 orrs r0, r1 strb r0, [r6, 0x5] _080534D4: ldr r7, =gActiveBank ldr r0, =gBankAttacker ldrb r0, [r0] bl GetBankIdentity movs r2, 0x2 mov r9, r2 mov r1, r9 eors r0, r1 lsls r0, 24 lsrs r0, 24 bl GetBankByPlayerAI ldr r1, =gBattleScripting strb r0, [r1, 0x17] strb r0, [r7] ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _0805357A ldr r0, =gAbsentBankFlags ldrb r2, [r0] ldr r1, =gBitTable ldrb r3, [r7] lsls r0, r3, 2 adds r0, r1 ldr r0, [r0] ands r2, r0 cmp r2, 0 bne _0805357A ldr r5, =gBattleMons movs r6, 0x58 adds r4, r3, 0 muls r4, r6 adds r0, r4, r5 adds r1, r0, 0 adds r1, 0x20 ldrb r0, [r1] cmp r0, 0x2B beq _08053568 adds r0, r5, 0 adds r0, 0x4C adds r0, r4, r0 str r2, [r0] ldrb r0, [r7] adds r2, r0, 0 muls r2, r6 adds r0, r5, 0 adds r0, 0x50 adds r2, r0 ldr r0, [r2] ldr r1, =0xf7ffffff ands r0, r1 str r0, [r2] b _0805357A .pool _08053568: ldrb r1, [r1] adds r0, r3, 0 bl RecordAbilityBattle ldr r1, =gBattleCommunication ldrb r0, [r1, 0x5] mov r2, r9 orrs r0, r2 strb r0, [r1, 0x5] _0805357A: movs r6, 0 ldr r7, =gBattleMons _0805357E: movs r0, 0x64 adds r4, r6, 0 muls r4, r0 add r4, r10 adds r0, r4, 0 movs r1, 0x41 bl GetMonData lsls r0, 16 lsrs r5, r0, 16 adds r0, r4, 0 movs r1, 0x2E bl GetMonData lsls r0, 24 lsrs r4, r0, 24 cmp r5, 0 beq _08053636 movs r0, 0xCE lsls r0, 1 cmp r5, r0 beq _08053636 ldr r2, =gBattlePartyID ldr r0, =gBankAttacker ldrb r1, [r0] lsls r0, r1, 1 adds r0, r2 ldrh r0, [r0] cmp r0, r6 bne _080535D0 movs r0, 0x58 muls r0, r1 b _08053600 .pool _080535D0: ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _08053618 ldr r0, =gActiveBank ldrb r3, [r0] lsls r0, r3, 1 adds r0, r2 ldrh r0, [r0] cmp r0, r6 bne _08053618 ldr r0, =gAbsentBankFlags ldrb r1, [r0] ldr r2, =gBitTable lsls r0, r3, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _08053618 movs r0, 0x58 muls r0, r3 _08053600: adds r0, r7 adds r0, 0x20 ldrb r0, [r0] b _08053624 .pool _08053618: adds r0, r5, 0 adds r1, r4, 0 bl sub_806B694 lsls r0, 24 lsrs r0, 24 _08053624: cmp r0, 0x2B beq _08053636 movs r0, 0x1 lsls r0, r6 mov r1, r8 orrs r1, r0 lsls r0, r1, 24 lsrs r0, 24 mov r8, r0 _08053636: adds r6, 0x1 cmp r6, 0x5 ble _0805357E b _080536BC _0805363E: ldr r1, =gBattleCommunication movs r0, 0x4 strb r0, [r1, 0x5] movs r2, 0x3F mov r8, r2 ldr r3, =gBattleMons ldr r2, =gBankAttacker ldrb r0, [r2] movs r5, 0x58 muls r0, r5 movs r1, 0x4C adds r1, r3 mov r9, r1 add r0, r9 str r4, [r0] ldrb r0, [r2] adds r1, r0, 0 muls r1, r5 adds r7, r3, 0 adds r7, 0x50 adds r1, r7 ldr r0, [r1] ldr r6, =0xf7ffffff ands r0, r6 str r0, [r1] ldrb r0, [r2] bl GetBankIdentity movs r1, 0x2 eors r0, r1 lsls r0, 24 lsrs r0, 24 bl GetBankByPlayerAI ldr r4, =gActiveBank strb r0, [r4] ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _080536BC ldr r0, =gAbsentBankFlags ldrb r2, [r0] ldr r1, =gBitTable ldrb r3, [r4] lsls r0, r3, 2 adds r0, r1 ldr r0, [r0] ands r2, r0 cmp r2, 0 bne _080536BC adds r0, r3, 0 muls r0, r5 add r0, r9 str r2, [r0] ldrb r0, [r4] adds r1, r0, 0 muls r1, r5 adds r1, r7 ldr r0, [r1] ands r0, r6 str r0, [r1] _080536BC: mov r2, r8 cmp r2, 0 beq _080536DE ldr r4, =gActiveBank ldr r0, =gBankAttacker ldrb r0, [r0] strb r0, [r4] add r0, sp, 0x4 str r0, [sp] movs r0, 0 movs r1, 0x28 movs r3, 0x4 bl dp01_build_cmdbuf_x02_a_b_varargs ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution _080536DE: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atkAE_clearstatusifnotsoundproofed thumb_func_start atkAF_cursetarget atkAF_cursetarget: @ 805371C push {r4,r5,lr} ldr r5, =gBattleMons ldr r0, =gBankTarget ldrb r0, [r0] movs r4, 0x58 adds r1, r0, 0 muls r1, r4 adds r0, r5, 0 adds r0, 0x50 adds r1, r0 ldr r2, [r1] movs r3, 0x80 lsls r3, 21 adds r0, r2, 0 ands r0, r3 cmp r0, 0 beq _08053768 ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0805378C .pool _08053768: orrs r2, r3 str r2, [r1] ldr r1, =gBattleMoveDamage ldr r0, =gBankAttacker ldrb r0, [r0] muls r0, r4 adds r0, r5 ldrh r0, [r0, 0x2C] lsrs r0, 1 str r0, [r1] cmp r0, 0 bne _08053784 movs r0, 0x1 str r0, [r1] _08053784: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0805378C: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end atkAF_cursetarget thumb_func_start atkB0_setspikes atkB0_setspikes: @ 80537A0 push {r4,lr} ldr r4, =gBankAttacker ldrb r0, [r4] bl GetBankSide movs r1, 0x1 eors r0, r1 lsls r0, 24 lsrs r0, 24 ldr r1, =gSideTimers lsls r2, r0, 1 adds r0, r2, r0 lsls r0, 2 adds r3, r0, r1 ldrb r0, [r3, 0xA] cmp r0, 0x3 bne _08053804 ldr r2, =gSpecialStatuses ldrb r1, [r4] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r2, 0x20 orrs r1, r2 strb r1, [r0] ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0805381E .pool _08053804: ldr r1, =gUnknown_0202428E adds r1, r2, r1 ldrh r2, [r1] movs r0, 0x10 orrs r0, r2 strh r0, [r1] ldrb r0, [r3, 0xA] adds r0, 0x1 strb r0, [r3, 0xA] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0805381E: pop {r4} pop {r0} bx r0 .pool thumb_func_end atkB0_setspikes thumb_func_start atkB1_setforesight atkB1_setforesight: @ 805382C ldr r1, =gBattleMons ldr r0, =gBankTarget ldrb r2, [r0] movs r0, 0x58 muls r2, r0 adds r1, 0x50 adds r2, r1 ldr r0, [r2] movs r1, 0x80 lsls r1, 22 orrs r0, r1 str r0, [r2] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] bx lr .pool thumb_func_end atkB1_setforesight thumb_func_start atkB2_setperishsong atkB2_setperishsong: @ 805385C push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} movs r6, 0 movs r3, 0 ldr r0, =gNoOfAllBanks adds r7, r0, 0 ldr r0, =gBankAttacker mov r8, r0 ldrb r1, [r7] cmp r6, r1 bge _080538C8 movs r5, 0x20 ldr r0, =gBattleMons mov r12, r0 ldr r0, =gDisableStructs adds r4, r0, 0 adds r4, 0xF ldr r2, =gStatuses3 _08053884: ldr r1, [r2] adds r0, r1, 0 ands r0, r5 cmp r0, 0 bne _0805389C movs r0, 0x58 muls r0, r3 add r0, r12 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x2B bne _080538B4 _0805389C: adds r6, 0x1 b _080538BC .pool _080538B4: orrs r1, r5 str r1, [r2] movs r0, 0x33 strb r0, [r4] _080538BC: adds r4, 0x1C adds r2, 0x4 adds r3, 0x1 ldrb r0, [r7] cmp r3, r0 blt _08053884 _080538C8: mov r1, r8 ldrb r0, [r1] bl sub_803F67C ldr r0, =gNoOfAllBanks ldrb r0, [r0] cmp r6, r0 bne _080538FC ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _08053904 .pool _080538FC: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _08053904: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atkB2_setperishsong thumb_func_start atkB3_rolloutdamagecalculation atkB3_rolloutdamagecalculation: @ 8053914 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 beq _08053948 ldr r0, =gBankAttacker ldrb r0, [r0] bl CancelMultiTurnMoves ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082D8A60 str r0, [r1] b _08053A60 .pool _08053948: ldr r2, =gBattleMons ldr r1, =gBankAttacker ldrb r3, [r1] movs r5, 0x58 adds r0, r3, 0 muls r0, r5 adds r4, r2, 0 adds r4, 0x50 adds r0, r4 ldr r0, [r0] movs r7, 0x80 lsls r7, 5 ands r0, r7 adds r6, r1, 0 mov r9, r2 ldr r1, =gDisableStructs mov r12, r1 ldr r2, =gCurrentMove mov r8, r2 cmp r0, 0 bne _080539BA lsls r0, r3, 3 subs r0, r3 lsls r0, 2 add r0, r12 ldrb r2, [r0, 0x11] movs r1, 0x10 negs r1, r1 ands r1, r2 movs r2, 0x5 orrs r1, r2 strb r1, [r0, 0x11] ldrb r1, [r6] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 add r0, r12 ldrb r2, [r0, 0x11] movs r1, 0xF ands r1, r2 movs r2, 0x50 orrs r1, r2 strb r1, [r0, 0x11] ldrb r0, [r6] adds r1, r0, 0 muls r1, r5 adds r1, r4 ldr r0, [r1] orrs r0, r7 str r0, [r1] ldr r1, =gUnknown_02024268 ldrb r0, [r6] lsls r0, 1 adds r0, r1 mov r2, r8 ldrh r1, [r2] strh r1, [r0] _080539BA: ldrb r0, [r6] lsls r2, r0, 3 subs r2, r0 lsls r2, 2 add r2, r12 ldrb r3, [r2, 0x11] lsls r1, r3, 28 lsrs r1, 28 subs r1, 0x1 movs r0, 0xF ands r1, r0 movs r0, 0x10 negs r0, r0 ands r0, r3 orrs r0, r1 strb r0, [r2, 0x11] cmp r1, 0 bne _080539EE ldrb r0, [r6] adds r1, r0, 0 muls r1, r5 adds r1, r4 ldr r0, [r1] ldr r2, =0xffffefff ands r0, r2 str r0, [r1] _080539EE: ldr r3, =gUnknown_02024400 ldr r2, =gBattleMoves mov r0, r8 ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x1] strh r0, [r3] movs r2, 0x1 ldrb r1, [r6] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 mov r1, r12 adds r4, r0, r1 ldrb r0, [r4, 0x11] lsls r0, 28 lsrs r0, 28 movs r1, 0x5 subs r1, r0 ldr r7, =gBattlescriptCurrInstr adds r5, r3, 0 cmp r2, r1 bge _08053A3C adds r1, r5, 0 adds r3, r4, 0 movs r4, 0x5 _08053A28: ldrh r0, [r1] lsls r0, 1 strh r0, [r1] adds r2, 0x1 ldrb r0, [r3, 0x11] lsls r0, 28 lsrs r0, 28 subs r0, r4, r0 cmp r2, r0 blt _08053A28 _08053A3C: ldrb r1, [r6] movs r0, 0x58 muls r0, r1 mov r1, r9 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 23 ands r0, r1 cmp r0, 0 beq _08053A5A ldrh r0, [r5] lsls r0, 1 strh r0, [r5] _08053A5A: ldr r0, [r7] adds r0, 0x1 str r0, [r7] _08053A60: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atkB3_rolloutdamagecalculation thumb_func_start atkB4_jumpifconfusedandattackmaxed atkB4_jumpifconfusedandattackmaxed: @ 8053A90 push {r4,r5,lr} ldr r5, =gBattleMons ldr r0, =gBankTarget ldrb r1, [r0] movs r0, 0x58 adds r3, r1, 0 muls r3, r0 adds r0, r5, 0 adds r0, 0x50 adds r0, r3, r0 ldr r0, [r0] movs r1, 0x7 ands r0, r1 ldr r4, =gBattlescriptCurrInstr cmp r0, 0 beq _08053AEC ldr r2, [r4] ldrb r0, [r2, 0x1] adds r0, r3 adds r1, r5, 0 adds r1, 0x18 adds r0, r1 ldrb r0, [r0] lsls r0, 24 asrs r0, 24 cmp r0, 0xC bne _08053AEC ldrb r1, [r2, 0x2] ldrb r0, [r2, 0x3] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x5] lsls r0, 24 orrs r1, r0 str r1, [r4] b _08053AF2 .pool _08053AEC: ldr r0, [r4] adds r0, 0x6 str r0, [r4] _08053AF2: pop {r4,r5} pop {r0} bx r0 thumb_func_end atkB4_jumpifconfusedandattackmaxed thumb_func_start sub_8053AF8 sub_8053AF8: @ 8053AF8 push {r4,r5,lr} ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 beq _08053B34 ldr r2, =gDisableStructs ldr r0, =gBankAttacker ldrb r1, [r0] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0 strb r1, [r0, 0x10] ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082D8A60 str r0, [r1] b _08053B8C .pool _08053B34: ldr r5, =gDisableStructs ldr r4, =gBankAttacker ldrb r1, [r4] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r1, r0, r5 ldrb r0, [r1, 0x10] cmp r0, 0x5 beq _08053B4C adds r0, 0x1 strb r0, [r1, 0x10] _08053B4C: ldr r3, =gUnknown_02024400 ldr r2, =gBattleMoves ldr r0, =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x1] strh r0, [r3] movs r2, 0x1 ldrb r1, [r4] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r5 ldr r4, =gBattlescriptCurrInstr ldrb r1, [r0, 0x10] cmp r2, r1 bge _08053B86 adds r1, r3, 0 adds r3, r0, 0 _08053B78: ldrh r0, [r1] lsls r0, 1 strh r0, [r1] adds r2, 0x1 ldrb r0, [r3, 0x10] cmp r2, r0 blt _08053B78 _08053B86: ldr r0, [r4] adds r0, 0x1 str r0, [r4] _08053B8C: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_8053AF8 thumb_func_start atkB6_happinesstodamagecalculation atkB6_happinesstodamagecalculation: @ 8053BAC push {r4,lr} ldr r2, =gBattleMoves ldr r0, =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0] cmp r0, 0x79 bne _08053BEC ldr r4, =gUnknown_02024400 ldr r2, =gBattleMons ldr r0, =gBankAttacker ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x2B ldrb r1, [r0] b _08053C02 .pool _08053BEC: ldr r4, =gUnknown_02024400 ldr r2, =gBattleMons ldr r0, =gBankAttacker ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x2B ldrb r0, [r0] movs r1, 0xFF subs r1, r0 _08053C02: lsls r0, r1, 2 adds r0, r1 lsls r0, 1 movs r1, 0x19 bl __divsi3 strh r0, [r4] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .pool thumb_func_end atkB6_happinesstodamagecalculation thumb_func_start atkB7_presentdamagecalculation atkB7_presentdamagecalculation: @ 8053C30 push {r4,lr} bl Random movs r4, 0xFF ands r4, r0 cmp r4, 0x65 bgt _08053C4C ldr r1, =gUnknown_02024400 movs r0, 0x28 strh r0, [r1] b _08053C8E .pool _08053C4C: cmp r4, 0xB1 bgt _08053C5C ldr r1, =gUnknown_02024400 movs r0, 0x50 strh r0, [r1] b _08053C8E .pool _08053C5C: cmp r4, 0xCB bgt _08053C6C ldr r1, =gUnknown_02024400 movs r0, 0x78 strh r0, [r1] b _08053C8E .pool _08053C6C: ldr r3, =gBattleMoveDamage ldr r2, =gBattleMons ldr r0, =gBankTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r0, [r0, 0x2C] lsrs r0, 2 str r0, [r3] cmp r0, 0 bne _08053C88 movs r0, 0x1 str r0, [r3] _08053C88: ldr r0, [r3] negs r0, r0 str r0, [r3] _08053C8E: cmp r4, 0xCB bgt _08053CAC ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082D8A30 b _08053CE6 .pool _08053CAC: ldr r2, =gBattleMons ldr r0, =gBankTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r1, [r0, 0x2C] ldrh r0, [r0, 0x28] cmp r1, r0 bne _08053CD8 ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082D9EFB b _08053CE6 .pool _08053CD8: ldr r2, =gBattleMoveFlags ldrb r1, [r2] movs r0, 0xF7 ands r0, r1 strb r0, [r2] ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082D9EE1 _08053CE6: str r0, [r1] pop {r4} pop {r0} bx r0 .pool thumb_func_end atkB7_presentdamagecalculation thumb_func_start atkB8_setsafeguard atkB8_setsafeguard: @ 8053CFC push {r4-r7,lr} ldr r7, =gBankAttacker ldrb r0, [r7] bl GetBankIdentity ldr r4, =gUnknown_0202428E movs r6, 0x1 adds r1, r6, 0 ands r1, r0 lsls r1, 1 adds r1, r4 ldrh r1, [r1] movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _08053D40 ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r1, =gBattleCommunication movs r0, 0 strb r0, [r1, 0x5] b _08053D88 .pool _08053D40: ldrb r0, [r7] bl GetBankIdentity adds r1, r6, 0 ands r1, r0 lsls r1, 1 adds r1, r4 ldrh r0, [r1] movs r2, 0x20 orrs r0, r2 strh r0, [r1] ldrb r0, [r7] bl GetBankIdentity ldr r5, =gSideTimers adds r1, r6, 0 ands r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r5 movs r4, 0x5 strb r4, [r0, 0x6] ldrb r0, [r7] bl GetBankIdentity adds r1, r6, 0 ands r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r5 ldrb r1, [r7] strb r1, [r0, 0x7] ldr r0, =gBattleCommunication strb r4, [r0, 0x5] _08053D88: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atkB8_setsafeguard thumb_func_start atkB9_magnitudedamagecalculation atkB9_magnitudedamagecalculation: @ 8053DA4 push {r4-r7,lr} mov r7, r8 push {r7} bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x64 bl __umodsi3 lsls r0, 16 lsrs r3, r0, 16 cmp r3, 0x4 bgt _08053DD0 ldr r1, =gUnknown_02024400 movs r0, 0xA strh r0, [r1] movs r3, 0x4 b _08053E3C .pool _08053DD0: cmp r3, 0xE bgt _08053DE4 ldr r1, =gUnknown_02024400 movs r0, 0x1E strh r0, [r1] movs r3, 0x5 b _08053E3C .pool _08053DE4: cmp r3, 0x22 bgt _08053DF8 ldr r1, =gUnknown_02024400 movs r0, 0x32 strh r0, [r1] movs r3, 0x6 b _08053E3C .pool _08053DF8: cmp r3, 0x40 bgt _08053E0C ldr r1, =gUnknown_02024400 movs r0, 0x46 strh r0, [r1] movs r3, 0x7 b _08053E3C .pool _08053E0C: cmp r3, 0x54 bgt _08053E20 ldr r1, =gUnknown_02024400 movs r0, 0x5A strh r0, [r1] movs r3, 0x8 b _08053E3C .pool _08053E20: cmp r3, 0x5E bgt _08053E34 ldr r1, =gUnknown_02024400 movs r0, 0x6E strh r0, [r1] movs r3, 0x9 b _08053E3C .pool _08053E34: ldr r1, =gUnknown_02024400 movs r0, 0x96 strh r0, [r1] movs r3, 0xA _08053E3C: ldr r1, =gBattleTextBuff1 movs r2, 0 movs r0, 0xFD strb r0, [r1] movs r0, 0x1 strb r0, [r1, 0x1] strb r0, [r1, 0x2] movs r0, 0x2 strb r0, [r1, 0x3] strb r3, [r1, 0x4] movs r0, 0xFF strb r0, [r1, 0x5] ldr r1, =gBankTarget strb r2, [r1] ldr r0, =gNoOfAllBanks ldrb r3, [r0] adds r6, r1, 0 ldr r0, =gBattlescriptCurrInstr mov r8, r0 cmp r2, r3 bcs _08053E94 adds r4, r6, 0 ldr r0, =gBankAttacker ldrb r5, [r0] ldr r1, =gBitTable mov r12, r1 ldr r7, =gAbsentBankFlags _08053E72: ldrb r2, [r4] cmp r2, r5 beq _08053E88 ldrb r0, [r7] ldrb r1, [r6] lsls r1, 2 add r1, r12 ldr r1, [r1] ands r0, r1 cmp r0, 0 beq _08053E94 _08053E88: adds r0, r2, 0x1 strb r0, [r4] lsls r0, 24 lsrs r0, 24 cmp r0, r3 bcc _08053E72 _08053E94: mov r1, r8 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atkB9_magnitudedamagecalculation thumb_func_start atkBA_802B140 atkBA_802B140: @ 8053EC8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} ldr r0, =gUnknown_02024212 ldrb r0, [r0] cmp r0, 0x1 bne _08053EF8 ldr r0, =gBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 cmp r0, 0 bne _08053EF4 movs r0, 0x1 b _08053F12 .pool _08053EF4: movs r0, 0 b _08053F12 _08053EF8: ldr r0, =gBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 cmp r0, 0 bne _08053F10 movs r0, 0x3 b _08053F12 .pool _08053F10: movs r0, 0x2 _08053F12: bl GetBankByPlayerAI ldr r1, =gBankTarget strb r0, [r1] ldr r0, =gUnknown_0202421C ldr r1, =gBankTarget ldrb r3, [r1] adds r0, r3, r0 ldrb r0, [r0] cmp r0, 0 beq _08053F2A b _08054030 _08053F2A: ldr r5, =gBankAttacker ldr r0, =gBattleStruct ldr r1, [r0] adds r1, r3, r1 ldrb r2, [r5] ldrb r1, [r1, 0xC] cmp r2, r1 bne _08054030 ldr r4, =gBattleMons movs r2, 0x58 adds r0, r3, 0 muls r0, r2 adds r1, r4, 0 adds r1, 0x4C adds r0, r1 ldr r0, [r0] movs r1, 0x27 ands r0, r1 cmp r0, 0 bne _08054030 ldrb r0, [r5] muls r0, r2 adds r0, r4 ldrh r0, [r0, 0x28] cmp r0, 0 beq _08054030 ldr r0, =gDisableStructs lsls r1, r3, 3 subs r1, r3 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0x18] lsls r0, 31 cmp r0, 0 bne _08054030 ldr r0, =gUnknown_02024274 lsls r1, r3, 1 adds r1, r0 ldrh r0, [r1] cmp r0, 0xE4 bne _08054030 movs r1, 0 ldr r0, =gNoOfAllBanks ldr r2, =gCurrentMove mov r8, r2 ldr r7, =gCurrMovePos mov r10, r7 ldr r2, =gUnknown_020241E9 mov r9, r2 ldr r7, =gHitMarker mov r12, r7 ldrb r2, [r0] cmp r1, r2 bge _08053FB6 ldr r6, =gTurnOrder ldr r5, =gBankTarget ldr r4, =gUnknown_0202407A movs r3, 0xB adds r2, r0, 0 _08053FA0: adds r0, r1, r6 ldrb r0, [r0] ldrb r7, [r5] cmp r0, r7 bne _08053FAE adds r0, r1, r4 strb r3, [r0] _08053FAE: adds r1, 0x1 ldrb r0, [r2] cmp r1, r0 blt _08053FA0 _08053FB6: movs r0, 0xE4 mov r1, r8 strh r0, [r1] ldr r2, =gBankTarget ldrb r0, [r2] ldr r7, =gBattleStruct ldr r1, [r7] adds r0, r1 adds r0, 0x80 ldrb r0, [r0] mov r1, r9 strb r0, [r1] mov r2, r10 strb r0, [r2] ldr r7, =gBattlescriptCurrInstr ldr r0, [r7] adds r0, 0x5 str r0, [r7] movs r0, 0x1 ldr r1, =gBattleScripting strb r0, [r1, 0x18] mov r2, r12 ldr r0, [r2] ldr r1, =0xfffffbff ands r0, r1 str r0, [r2] b _0805404A .pool _08054030: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0805404A: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atkBA_802B140 thumb_func_start sub_805405C sub_805405C: @ 805405C push {lr} ldr r2, =gBattleWeather ldrh r1, [r2] movs r0, 0x60 ands r0, r1 cmp r0, 0 beq _08054088 ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r1, =gBattleCommunication movs r0, 0x2 strb r0, [r1, 0x5] b _0805409A .pool _08054088: movs r0, 0x20 strh r0, [r2] ldr r1, =gBattleCommunication movs r0, 0x4 strb r0, [r1, 0x5] ldr r0, =gUnknown_020243D0 adds r0, 0x28 movs r1, 0x5 strb r1, [r0] _0805409A: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .pool thumb_func_end sub_805405C thumb_func_start atkBC_maxattackhalvehp atkBC_maxattackhalvehp: @ 80540B4 push {r4,r5,lr} ldr r5, =gBattleMons ldr r4, =gBankAttacker ldrb r0, [r4] movs r3, 0x58 muls r0, r3 adds r2, r0, r5 ldrh r0, [r2, 0x2C] lsrs r1, r0, 1 cmp r1, 0 bne _080540CC movs r1, 0x1 _080540CC: movs r0, 0x19 ldrsb r0, [r2, r0] cmp r0, 0xB bgt _08054110 ldrh r0, [r2, 0x28] cmp r0, r1 bls _08054110 movs r0, 0xC strb r0, [r2, 0x19] ldr r1, =gBattleMoveDamage ldrb r0, [r4] muls r0, r3 adds r0, r5 ldrh r0, [r0, 0x2C] lsrs r0, 1 str r0, [r1] cmp r0, 0 bne _080540F4 movs r0, 0x1 str r0, [r1] _080540F4: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0805412A .pool _08054110: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0805412A: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end atkBC_maxattackhalvehp thumb_func_start atkBD_copyfoestats atkBD_copyfoestats: @ 8054134 push {r4-r7,lr} movs r2, 0 ldr r7, =gBattlescriptCurrInstr ldr r6, =gBankAttacker movs r4, 0x58 ldr r3, =gUnknown_0202409C ldr r5, =gBankTarget _08054142: ldrb r0, [r6] adds r1, r0, 0 muls r1, r4 adds r1, r2, r1 adds r1, r3 ldrb r0, [r5] muls r0, r4 adds r0, r2, r0 adds r0, r3 ldrb r0, [r0] strb r0, [r1] adds r2, 0x1 cmp r2, 0x7 ble _08054142 ldr r0, [r7] adds r0, 0x5 str r0, [r7] pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atkBD_copyfoestats thumb_func_start atkBE_breakfree atkBE_breakfree: @ 805417C push {r4-r6,lr} ldr r1, =gBattleMons ldr r5, =gBankAttacker ldrb r2, [r5] movs r6, 0x58 adds r0, r2, 0 muls r0, r6 adds r4, r1, 0 adds r4, 0x50 adds r0, r4 ldr r0, [r0] movs r1, 0xE0 lsls r1, 8 ands r0, r1 cmp r0, 0 beq _08054210 ldr r1, =gBattleScripting ldr r3, =gBankTarget ldrb r0, [r3] strb r0, [r1, 0x17] ldrb r0, [r5] adds r1, r0, 0 muls r1, r6 adds r1, r4 ldr r0, [r1] ldr r2, =0xffff1fff ands r0, r2 str r0, [r1] ldrb r0, [r5] ldr r1, =gBattleStruct ldr r2, [r1] adds r0, r2 ldrb r0, [r0, 0x14] strb r0, [r3] ldr r1, =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x2 strb r0, [r1, 0x1] ldrb r0, [r5] lsls r0, 1 adds r0, r2 ldrb r0, [r0, 0x4] strb r0, [r1, 0x2] ldrb r0, [r5] lsls r0, 1 adds r0, r2 ldrb r0, [r0, 0x5] strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] bl b_movescr_stack_push_cursor ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DAFC5 b _080542BA .pool _08054210: ldr r4, =gStatuses3 lsls r0, r2, 2 adds r3, r0, r4 ldr r1, [r3] movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _08054250 movs r0, 0x5 negs r0, r0 ands r1, r0 str r1, [r3] ldrb r1, [r5] lsls r1, 2 adds r1, r4 ldr r0, [r1] movs r2, 0x4 negs r2, r2 ands r0, r2 str r0, [r1] bl b_movescr_stack_push_cursor ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DAFD6 b _080542BA .pool _08054250: adds r0, r2, 0 bl GetBankSide ldr r4, =gUnknown_0202428E lsls r0, 24 lsrs r0, 23 adds r0, r4 ldrh r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _080542B4 ldrb r0, [r5] bl GetBankSide lsls r0, 24 lsrs r0, 23 adds r0, r4 ldrh r2, [r0] ldr r1, =0x0000ffef ands r1, r2 movs r4, 0 strh r1, [r0] ldrb r0, [r5] bl GetBankSide ldr r2, =gSideTimers lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r2 strb r4, [r1, 0xA] bl b_movescr_stack_push_cursor ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DAFDD b _080542BA .pool _080542B4: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 _080542BA: str r0, [r1] pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end atkBE_breakfree thumb_func_start atkBF_setcurled atkBF_setcurled: @ 80542C8 ldr r1, =gBattleMons ldr r0, =gBankAttacker ldrb r2, [r0] movs r0, 0x58 muls r2, r0 adds r1, 0x50 adds r2, r1 ldr r0, [r2] movs r1, 0x80 lsls r1, 23 orrs r0, r1 str r0, [r2] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] bx lr .pool thumb_func_end atkBF_setcurled thumb_func_start atkC0_recoverbasedonsunlight atkC0_recoverbasedonsunlight: @ 80542F8 push {r4-r7,lr} sub sp, 0x4 ldr r1, =gBankTarget ldr r5, =gBankAttacker ldrb r0, [r5] strb r0, [r1] ldr r7, =gBattleMons ldrb r0, [r5] movs r6, 0x58 muls r0, r6 adds r0, r7 ldrh r1, [r0, 0x28] ldrh r0, [r0, 0x2C] cmp r1, r0 beq _080543D8 ldr r4, =gBattleWeather ldrh r0, [r4] cmp r0, 0 beq _0805434A movs r0, 0 str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0xD movs r3, 0 bl AbilityBattleEffects lsls r0, 24 lsrs r0, 24 cmp r0, 0 bne _0805434A str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0x4D movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 beq _08054378 _0805434A: ldr r3, =gBattleMoveDamage ldr r2, =gBattleMons ldr r0, =gBankAttacker ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r0, [r0, 0x2C] lsrs r0, 1 str r0, [r3] adds r1, r3, 0 b _080543B2 .pool _08054378: ldrh r1, [r4] movs r0, 0x60 ands r0, r1 cmp r0, 0 beq _080543A4 ldr r4, =gBattleMoveDamage ldrb r0, [r5] muls r0, r6 adds r0, r7 ldrh r1, [r0, 0x2C] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 movs r1, 0x1E bl __divsi3 str r0, [r4] adds r1, r4, 0 b _080543B2 .pool _080543A4: ldr r1, =gBattleMoveDamage ldrb r0, [r5] muls r0, r6 adds r0, r7 ldrh r0, [r0, 0x2C] lsrs r0, 2 str r0, [r1] _080543B2: adds r2, r1, 0 ldr r0, [r2] cmp r0, 0 bne _080543BE movs r0, 0x1 str r0, [r2] _080543BE: ldr r0, [r1] negs r0, r0 str r0, [r1] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _080543F2 .pool _080543D8: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _080543F2: add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atkC0_recoverbasedonsunlight thumb_func_start sub_8054400 sub_8054400: @ 8054400 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} ldr r2, =gBattleMons ldr r0, =gBankAttacker ldrb r1, [r0] movs r0, 0x58 adds r4, r1, 0 muls r4, r0 adds r4, r2 ldrb r0, [r4, 0x14] mov r10, r0 mov r7, r10 lsls r7, 27 adds r0, r7, 0 lsrs r0, 27 mov r10, r0 movs r1, 0x2 mov r2, r10 ands r2, r1 asrs r2, 1 ldrh r7, [r4, 0x14] mov r9, r7 mov r0, r9 lsls r0, 22 mov r9, r0 lsrs r3, r0, 27 adds r0, r1, 0 ands r0, r3 orrs r2, r0 ldrb r7, [r4, 0x15] mov r8, r7 mov r0, r8 lsls r0, 25 mov r8, r0 lsrs r3, r0, 27 adds r0, r1, 0 ands r0, r3 lsls r0, 1 orrs r2, r0 ldr r6, [r4, 0x14] lsls r6, 12 lsrs r3, r6, 27 adds r0, r1, 0 ands r0, r3 lsls r0, 2 orrs r2, r0 ldrh r5, [r4, 0x16] lsls r5, 23 lsrs r3, r5, 27 adds r0, r1, 0 ands r0, r3 lsls r0, 3 orrs r2, r0 ldrb r3, [r4, 0x17] lsls r3, 26 lsrs r0, r3, 27 ands r1, r0 lsls r1, 4 orrs r2, r1 movs r1, 0x1 adds r4, r1, 0 mov r7, r10 ands r4, r7 mov r0, r9 lsrs r0, 27 mov r9, r0 adds r0, r1, 0 mov r7, r9 ands r0, r7 lsls r0, 1 orrs r4, r0 mov r0, r8 lsrs r0, 27 mov r8, r0 adds r0, r1, 0 mov r7, r8 ands r0, r7 lsls r0, 2 orrs r4, r0 lsrs r6, 27 adds r0, r1, 0 ands r0, r6 lsls r0, 3 orrs r4, r0 lsrs r5, 27 adds r0, r1, 0 ands r0, r5 lsls r0, 4 orrs r4, r0 lsrs r3, 27 ands r1, r3 lsls r1, 5 orrs r4, r1 ldr r5, =gUnknown_02024400 lsls r0, r2, 2 adds r0, r2 lsls r0, 3 movs r1, 0x3F bl __divsi3 adds r0, 0x1E strh r0, [r5] ldr r6, =gBattleStruct ldr r5, [r6] lsls r0, r4, 4 subs r0, r4 movs r1, 0x3F bl __divsi3 adds r0, 0x1 strb r0, [r5, 0x13] ldr r1, [r6] ldrb r0, [r1, 0x13] cmp r0, 0x8 bls _080544F0 adds r0, 0x1 strb r0, [r1, 0x13] _080544F0: ldr r2, [r6] ldrb r0, [r2, 0x13] movs r1, 0xC0 orrs r0, r1 strb r0, [r2, 0x13] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_8054400 thumb_func_start atkC2_selectnexttarget atkC2_selectnexttarget: @ 8054524 push {r4-r7,lr} mov r7, r8 push {r7} ldr r0, =gBankTarget movs r1, 0 strb r1, [r0] ldr r1, =gNoOfAllBanks ldrb r1, [r1] adds r6, r0, 0 ldr r0, =gBattlescriptCurrInstr mov r8, r0 cmp r1, 0 beq _0805456E adds r3, r6, 0 ldr r0, =gBankAttacker ldrb r5, [r0] ldr r0, =gBitTable mov r12, r0 adds r4, r1, 0 ldr r7, =gAbsentBankFlags _0805454C: ldrb r2, [r3] cmp r2, r5 beq _08054562 ldrb r0, [r7] ldrb r1, [r6] lsls r1, 2 add r1, r12 ldr r1, [r1] ands r0, r1 cmp r0, 0 beq _0805456E _08054562: adds r0, r2, 0x1 strb r0, [r3] lsls r0, 24 lsrs r0, 24 cmp r0, r4 bcc _0805454C _0805456E: mov r1, r8 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atkC2_selectnexttarget thumb_func_start atkC3_setfutureattack atkC3_setfutureattack: @ 8054598 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x14 ldr r0, =gUnknown_020243D0 mov r8, r0 ldr r6, =gBankTarget ldrb r1, [r6] adds r0, r1, r0 ldrb r7, [r0] cmp r7, 0 beq _080545DC ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _080546CC .pool _080545DC: adds r0, r1, 0 bl GetBankIdentity ldr r4, =gUnknown_0202428E lsls r0, 24 lsrs r0, 24 movs r1, 0x1 mov r10, r1 ands r0, r1 lsls r0, 1 adds r0, r4 ldrh r2, [r0] movs r1, 0x40 movs r5, 0 mov r3, sp strh r5, [r3, 0x10] orrs r1, r2 strh r1, [r0] ldrb r0, [r6] lsls r0, 1 mov r1, r8 adds r1, 0x18 adds r0, r1 ldr r1, =gCurrentMove mov r9, r1 ldrh r1, [r1] strh r1, [r0] mov r0, r8 adds r0, 0x4 ldrb r2, [r6] adds r0, r2 ldr r5, =gBankAttacker ldrb r1, [r5] strb r1, [r0] ldrb r0, [r6] add r0, r8 movs r1, 0x3 strb r1, [r0] ldrb r0, [r6] bl GetBankIdentity mov r1, r10 ands r1, r0 lsls r1, 1 adds r1, r4 ldrh r3, [r1] ldrb r0, [r5] movs r4, 0x58 muls r0, r4 ldr r2, =gBattleMons adds r0, r2 ldrb r1, [r6] muls r1, r4 adds r1, r2 mov r4, r9 ldrh r2, [r4] str r7, [sp] str r7, [sp, 0x4] ldrb r4, [r5] str r4, [sp, 0x8] ldrb r4, [r6] str r4, [sp, 0xC] bl sub_806957C ldrb r1, [r6] lsls r1, 2 mov r2, r8 adds r2, 0x8 adds r1, r2 str r0, [r1] ldr r1, =gProtectStructs ldrb r0, [r5] lsls r0, 4 adds r0, r1 ldrb r0, [r0] lsls r0, 28 cmp r0, 0 bge _0805468C ldrb r4, [r6] lsls r4, 2 adds r4, r2 ldr r1, [r4] lsls r0, r1, 4 subs r0, r1 movs r1, 0xA bl __divsi3 str r0, [r4] _0805468C: mov r5, r9 ldrh r1, [r5] ldr r0, =0x00000161 cmp r1, r0 bne _080546BC ldr r0, =gBattleCommunication mov r1, r10 strb r1, [r0, 0x5] b _080546C4 .pool _080546BC: ldr r0, =gBattleCommunication mov r2, sp ldrb r2, [r2, 0x10] strb r2, [r0, 0x5] _080546C4: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _080546CC: add sp, 0x14 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atkC3_setfutureattack thumb_func_start atkC4_802B910 atkC4_802B910: @ 80546E4 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} ldr r0, =gBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 ldr r7, =gEnemyParty cmp r0, 0 bne _080546FE ldr r7, =gPlayerParty _080546FE: ldr r2, =gBattleMons ldr r0, =gBankTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r0, [r0, 0x28] cmp r0, 0 bne _08054740 ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] b _080548DC .pool _08054740: ldr r6, =gBattleCommunication ldrb r0, [r6] mov r8, r0 cmp r0, 0x5 bls _0805474C b _080548A8 _0805474C: adds r4, r6, 0 movs r5, 0x64 _08054750: ldrb r0, [r4] muls r0, r5 adds r0, r7, r0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _08054794 ldrb r0, [r6] muls r0, r5 adds r0, r7, r0 movs r1, 0x41 bl GetMonData cmp r0, 0 beq _08054794 ldrb r0, [r4] muls r0, r5 adds r0, r7, r0 movs r1, 0x41 bl GetMonData movs r1, 0xCE lsls r1, 1 cmp r0, r1 beq _08054794 ldrb r0, [r4] muls r0, r5 adds r0, r7, r0 movs r1, 0x37 bl GetMonData cmp r0, 0 beq _080547A4 _08054794: ldrb r0, [r4] adds r0, 0x1 strb r0, [r4] adds r6, r4, 0 lsls r0, 24 lsrs r0, 24 cmp r0, 0x5 bls _08054750 _080547A4: ldr r1, =gBattleCommunication mov r9, r1 ldrb r2, [r1] cmp r2, 0x5 bhi _080548A8 ldr r1, =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x4 strb r0, [r1, 0x1] ldr r6, =gBankAttacker ldrb r0, [r6] strb r0, [r1, 0x2] strb r2, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x9 str r0, [r1] ldr r2, =gBattleMoveDamage mov r8, r2 ldr r5, =gBaseStats mov r1, r9 ldrb r0, [r1] movs r4, 0x64 muls r0, r4 adds r0, r7, r0 movs r1, 0xB bl GetMonData lsls r1, r0, 3 subs r1, r0 lsls r1, 2 adds r1, r5 ldrb r3, [r1, 0x1] mov r2, r8 str r3, [r2] ldr r2, =gBattleMoves ldr r0, =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x1] muls r0, r3 mov r1, r8 str r0, [r1] mov r2, r9 ldrb r0, [r2] muls r0, r4 adds r0, r7, r0 movs r1, 0x38 bl GetMonData lsls r0, 1 movs r1, 0x5 bl __udivsi3 adds r0, 0x2 mov r2, r8 ldr r1, [r2] muls r0, r1 str r0, [r2] ldr r3, =gBattleMons ldr r1, =gBankTarget ldrb r2, [r1] movs r1, 0x58 muls r1, r2 adds r1, r3 ldrh r2, [r1] lsls r1, r2, 3 subs r1, r2 lsls r1, 2 adds r1, r5 ldrb r1, [r1, 0x2] bl __divsi3 mov r1, r8 str r0, [r1] movs r1, 0x32 bl __divsi3 adds r2, r0, 0x2 mov r0, r8 str r2, [r0] ldr r1, =gProtectStructs ldrb r0, [r6] lsls r0, 4 adds r0, r1 ldrb r0, [r0] lsls r0, 28 cmp r0, 0 bge _08054870 lsls r0, r2, 4 subs r0, r2 movs r1, 0xA bl __divsi3 mov r1, r8 str r0, [r1] _08054870: mov r2, r9 ldrb r0, [r2] adds r0, 0x1 strb r0, [r2] b _080548E2 .pool _080548A8: mov r0, r8 cmp r0, 0 beq _080548C8 ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] b _080548DC .pool _080548C8: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x5] ldrb r0, [r2, 0x6] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x7] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x8] _080548DC: lsls r0, 24 orrs r1, r0 str r1, [r3] _080548E2: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atkC4_802B910 thumb_func_start atkC5_hidepreattack atkC5_hidepreattack: @ 80548F4 push {lr} ldr r0, =gCurrentMove ldrh r1, [r0] cmp r1, 0x5B beq _08054934 cmp r1, 0x5B bgt _0805490C cmp r1, 0x13 beq _08054918 b _08054960 .pool _0805490C: ldr r0, =0x00000123 cmp r1, r0 beq _0805494C adds r0, 0x31 cmp r1, r0 bne _08054960 _08054918: ldr r2, =gStatuses3 ldr r0, =gBankAttacker ldrb r1, [r0] lsls r1, 2 adds r1, r2 ldr r0, [r1] movs r2, 0x40 b _0805495C .pool _08054934: ldr r2, =gStatuses3 ldr r0, =gBankAttacker ldrb r1, [r0] lsls r1, 2 adds r1, r2 ldr r0, [r1] movs r2, 0x80 b _0805495C .pool _0805494C: ldr r2, =gStatuses3 ldr r0, =gBankAttacker ldrb r1, [r0] lsls r1, 2 adds r1, r2 ldr r0, [r1] movs r2, 0x80 lsls r2, 11 _0805495C: orrs r0, r2 str r0, [r1] _08054960: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .pool thumb_func_end atkC5_hidepreattack thumb_func_start atkC6_unhidepostattack atkC6_unhidepostattack: @ 8054978 push {lr} ldr r0, =gCurrentMove ldrh r1, [r0] cmp r1, 0x5B beq _080549BC cmp r1, 0x5B bgt _08054990 cmp r1, 0x13 beq _0805499C b _080549EA .pool _08054990: ldr r0, =0x00000123 cmp r1, r0 beq _080549D8 adds r0, 0x31 cmp r1, r0 bne _080549EA _0805499C: ldr r2, =gStatuses3 ldr r0, =gBankAttacker ldrb r1, [r0] lsls r1, 2 adds r1, r2 ldr r0, [r1] movs r2, 0x41 negs r2, r2 b _080549E6 .pool _080549BC: ldr r2, =gStatuses3 ldr r0, =gBankAttacker ldrb r1, [r0] lsls r1, 2 adds r1, r2 ldr r0, [r1] movs r2, 0x81 negs r2, r2 b _080549E6 .pool _080549D8: ldr r2, =gStatuses3 ldr r0, =gBankAttacker ldrb r1, [r0] lsls r1, 2 adds r1, r2 ldr r0, [r1] ldr r2, =0xfffbffff _080549E6: ands r0, r2 str r0, [r1] _080549EA: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .pool thumb_func_end atkC6_unhidepostattack thumb_func_start atkC7_setminimize atkC7_setminimize: @ 8054A08 push {lr} ldr r0, =gHitMarker ldr r0, [r0] movs r1, 0x80 lsls r1, 18 ands r0, r1 cmp r0, 0 beq _08054A2C ldr r2, =gStatuses3 ldr r0, =gBankAttacker ldrb r1, [r0] lsls r1, 2 adds r1, r2 ldr r0, [r1] movs r2, 0x80 lsls r2, 1 orrs r0, r2 str r0, [r1] _08054A2C: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .pool thumb_func_end atkC7_setminimize thumb_func_start sub_8054A48 sub_8054A48: @ 8054A48 push {lr} ldr r3, =gBattleWeather ldrh r1, [r3] movs r2, 0x80 adds r0, r2, 0 ands r0, r1 cmp r0, 0 beq _08054A78 ldr r2, =gBattleMoveFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r1, =gBattleCommunication movs r0, 0x2 strb r0, [r1, 0x5] b _08054A86 .pool _08054A78: strh r2, [r3] ldr r0, =gBattleCommunication movs r1, 0x5 strb r1, [r0, 0x5] ldr r0, =gUnknown_020243D0 adds r0, 0x28 strb r1, [r0] _08054A86: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .pool thumb_func_end sub_8054A48 thumb_func_start atkC9_jumpifattackandspecialattackcannotfall atkC9_jumpifattackandspecialattackcannotfall: @ 8054AA0 push {r4,lr} ldr r2, =gBattleMons ldr r0, =gBankTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r1, r0, r2 movs r0, 0x19 ldrsb r0, [r1, r0] adds r3, r2, 0 cmp r0, 0 bne _08054AF4 movs r0, 0x1C ldrsb r0, [r1, r0] cmp r0, 0 bne _08054AF4 ldr r0, =gBattleCommunication ldrb r0, [r0, 0x6] cmp r0, 0x1 beq _08054AF4 ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _08054B20 .pool _08054AF4: ldr r4, =gActiveBank ldr r0, =gBankAttacker ldrb r0, [r0] strb r0, [r4] ldr r2, =gBattleMoveDamage ldrb r1, [r4] movs r0, 0x58 muls r0, r1 adds r0, r3 ldrh r0, [r0, 0x28] str r0, [r2] ldr r1, =0x00007fff movs r0, 0 bl dp01_build_cmdbuf_x18_0_aa_health_bar_update ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _08054B20: pop {r4} pop {r0} bx r0 .pool thumb_func_end atkC9_jumpifattackandspecialattackcannotfall thumb_func_start atkCA_setforcedtarget atkCA_setforcedtarget: @ 8054B3C push {r4,r5,lr} ldr r4, =gBankAttacker ldrb r0, [r4] bl GetBankSide ldr r5, =gSideTimers lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r5 movs r0, 0x1 strb r0, [r1, 0x8] ldrb r0, [r4] bl GetBankSide lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r5 ldrb r0, [r4] strb r0, [r1, 0x9] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end atkCA_setforcedtarget thumb_func_start atkCB_setcharge atkCB_setcharge: @ 8054B88 push {r4,lr} ldr r0, =gStatuses3 ldr r3, =gBankAttacker ldrb r1, [r3] lsls r1, 2 adds r1, r0 ldr r0, [r1] movs r2, 0x80 lsls r2, 2 orrs r0, r2 str r0, [r1] ldr r4, =gDisableStructs ldrb r1, [r3] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r4 ldrb r2, [r0, 0x12] movs r1, 0x10 negs r1, r1 ands r1, r2 movs r2, 0x2 orrs r1, r2 strb r1, [r0, 0x12] ldrb r1, [r3] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r4 ldrb r2, [r0, 0x12] movs r1, 0xF ands r1, r2 movs r2, 0x20 orrs r1, r2 strb r1, [r0, 0x12] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .pool thumb_func_end atkCB_setcharge thumb_func_start atkCC_callterrainattack atkCC_callterrainattack: @ 8054BEC push {r4,lr} ldr r2, =gHitMarker ldr r0, [r2] ldr r1, =0xfffffbff ands r0, r1 str r0, [r2] ldr r4, =gCurrentMove ldr r1, =gUnknown_0831C414 ldr r0, =gUnknown_02022FF0 ldrb r0, [r0] lsls r0, 1 adds r0, r1 ldrh r0, [r0] strh r0, [r4] ldrh r0, [r4] movs r1, 0 bl GetMoveTarget ldr r1, =gBankTarget strb r0, [r1] ldr r3, =gUnknown_082D86A8 ldr r2, =gBattleMoves ldrh r1, [r4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0] lsls r0, 2 adds r0, r3 ldr r0, [r0] bl b_movescr_stack_push ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .pool thumb_func_end atkCC_callterrainattack thumb_func_start atkCD_cureifburnedparalysedorpoisoned atkCD_cureifburnedparalysedorpoisoned: @ 8054C60 push {r4-r6,lr} sub sp, 0x4 ldr r1, =gBattleMons ldr r3, =gBankAttacker ldrb r0, [r3] movs r6, 0x58 muls r0, r6 adds r5, r1, 0 adds r5, 0x4C adds r2, r0, r5 ldr r0, [r2] movs r1, 0xD8 ands r0, r1 cmp r0, 0 beq _08054CBC movs r0, 0 str r0, [r2] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] ldr r4, =gActiveBank ldrb r0, [r3] strb r0, [r4] ldrb r0, [r4] muls r0, r6 adds r0, r5 str r0, [sp] movs r0, 0 movs r1, 0x28 movs r2, 0 movs r3, 0x4 bl dp01_build_cmdbuf_x02_a_b_varargs ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution b _08054CD6 .pool _08054CBC: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08054CD6: add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end atkCD_cureifburnedparalysedorpoisoned thumb_func_start atkCE_settorment atkCE_settorment: @ 8054CE4 push {lr} ldr r1, =gBattleMons ldr r0, =gBankTarget ldrb r2, [r0] movs r0, 0x58 muls r0, r2 adds r1, 0x50 adds r0, r1 ldr r1, [r0] movs r2, 0x80 lsls r2, 24 cmp r1, 0 bge _08054D28 ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _08054D34 .pool _08054D28: orrs r1, r2 str r1, [r0] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _08054D34: pop {r0} bx r0 .pool thumb_func_end atkCE_settorment thumb_func_start atkCF_jumpifnodamage atkCF_jumpifnodamage: @ 8054D3C push {lr} ldr r2, =gProtectStructs ldr r0, =gBankAttacker ldrb r0, [r0] lsls r1, r0, 4 adds r0, r2, 0x4 adds r0, r1, r0 ldr r0, [r0] cmp r0, 0 bne _08054D5C adds r0, r2, 0 adds r0, 0x8 adds r0, r1, r0 ldr r0, [r0] cmp r0, 0 beq _08054D74 _08054D5C: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08054D8E .pool _08054D74: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08054D8E: pop {r0} bx r0 .pool thumb_func_end atkCF_jumpifnodamage thumb_func_start atkD0_settaunt atkD0_settaunt: @ 8054D98 push {r4,lr} ldr r4, =gDisableStructs ldr r3, =gBankTarget ldrb r0, [r3] lsls r1, r0, 3 subs r1, r0 lsls r1, 2 adds r2, r1, r4 ldrb r1, [r2, 0x13] lsls r0, r1, 28 cmp r0, 0 bne _08054DE8 movs r0, 0x10 negs r0, r0 ands r0, r1 movs r1, 0x2 orrs r0, r1 strb r0, [r2, 0x13] ldrb r1, [r3] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r4 ldrb r2, [r0, 0x13] movs r1, 0xF ands r1, r2 movs r2, 0x20 orrs r1, r2 strb r1, [r0, 0x13] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08054E02 .pool _08054DE8: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08054E02: pop {r4} pop {r0} bx r0 .pool thumb_func_end atkD0_settaunt thumb_func_start atkD1_sethelpinghand atkD1_sethelpinghand: @ 8054E0C push {r4,lr} ldr r4, =gBankAttacker ldrb r0, [r4] bl GetBankIdentity movs r1, 0x2 eors r0, r1 lsls r0, 24 lsrs r0, 24 bl GetBankByPlayerAI ldr r3, =gBankTarget strb r0, [r3] ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _08054E90 ldr r0, =gAbsentBankFlags ldrb r1, [r0] ldr r2, =gBitTable ldrb r3, [r3] lsls r0, r3, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _08054E90 ldr r1, =gProtectStructs ldrb r0, [r4] lsls r0, 4 adds r0, r1 ldrb r0, [r0] lsls r0, 28 cmp r0, 0 blt _08054E90 lsls r0, r3, 4 adds r2, r0, r1 ldrb r1, [r2] lsls r0, r1, 28 cmp r0, 0 blt _08054E90 movs r0, 0x8 orrs r0, r1 strb r0, [r2] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08054EAA .pool _08054E90: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08054EAA: pop {r4} pop {r0} bx r0 .pool thumb_func_end atkD1_sethelpinghand thumb_func_start sub_8054EB4 sub_8054EB4: @ 8054EB4 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 ldr r4, =gBattleTypeFlags ldr r0, [r4] movs r1, 0x80 lsls r1, 19 ands r0, r1 cmp r0, 0 bne _08054F9A ldr r0, =gBankAttacker ldrb r0, [r0] bl GetBankSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _08054EE8 ldr r0, [r4] ldr r1, =0x0a3f0902 ands r0, r1 cmp r0, 0 beq _08054F9A _08054EE8: ldr r6, =gBankAttacker ldrb r0, [r6] bl GetBankSide lsls r0, 24 lsrs r4, r0, 24 ldr r7, =gBankTarget ldrb r0, [r7] bl GetBankSide lsls r0, 24 lsrs r5, r0, 24 ldr r0, =gBattleTypeFlags ldr r0, [r0] ldr r1, =0x0a3f0902 ands r0, r1 cmp r0, 0 bne _08054F46 ldr r0, =gUnknown_020243D0 adds r2, r0, 0 adds r2, 0x29 adds r0, r4, r2 ldrb r1, [r0] ldr r4, =gBitTable ldr r3, =gBattlePartyID ldrb r0, [r6] lsls r0, 1 adds r0, r3 ldrh r0, [r0] lsls r0, 2 adds r0, r4 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _08054F9A adds r0, r5, r2 ldrb r1, [r0] ldrb r0, [r7] lsls r0, 1 adds r0, r3 ldrh r0, [r0] lsls r0, 2 adds r0, r4 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _08054F9A _08054F46: ldr r0, =gBattleMons mov r8, r0 ldr r1, =gBankAttacker ldrb r4, [r1] movs r5, 0x58 adds r0, r4, 0 muls r0, r5 add r0, r8 mov r9, r0 ldrh r3, [r0, 0x2E] adds r1, r3, 0 cmp r1, 0 bne _08054F6E ldr r0, =gBankTarget ldrb r0, [r0] muls r0, r5 add r0, r8 ldrh r0, [r0, 0x2E] cmp r0, 0 beq _08054F9A _08054F6E: cmp r1, 0xAF beq _08054F9A ldr r7, =gBankTarget ldrb r0, [r7] muls r0, r5 mov r2, r8 adds r1, r0, r2 ldrh r2, [r1, 0x2E] cmp r2, 0xAF beq _08054F9A adds r0, r3, 0 subs r0, 0x79 lsls r0, 16 lsrs r0, 16 cmp r0, 0xB bls _08054F9A adds r0, r2, 0 subs r0, 0x79 lsls r0, 16 lsrs r0, 16 cmp r0, 0xB bhi _08054FDC _08054F9A: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _08055132 .pool _08054FDC: adds r0, r1, 0 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x3C bne _08055010 ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DB63F str r0, [r1] ldr r1, =gLastUsedAbility ldrb r0, [r7] muls r0, r5 add r0, r8 adds r0, 0x20 ldrb r0, [r0] strb r0, [r1] ldrb r0, [r7] ldrb r1, [r1] bl RecordAbilityBattle b _08055132 .pool _08055010: ldr r3, =gBattleStruct mov r10, r3 lsls r0, r4, 1 adds r0, 0xD0 ldr r1, [r3] adds r6, r1, r0 mov r0, r9 ldrh r0, [r0, 0x2E] mov r9, r0 strh r2, [r6] ldr r1, =gBankAttacker ldrb r0, [r1] muls r0, r5 add r0, r8 movs r1, 0 strh r1, [r0, 0x2E] ldrb r0, [r7] muls r0, r5 add r0, r8 mov r2, r9 strh r2, [r0, 0x2E] ldr r4, =gActiveBank ldr r3, =gBankAttacker ldrb r0, [r3] strb r0, [r4] str r6, [sp] movs r0, 0 movs r1, 0x2 movs r2, 0 movs r3, 0x2 bl dp01_build_cmdbuf_x02_a_b_varargs ldr r1, =gBankAttacker ldrb r0, [r1] bl dp01_battle_side_mark_buffer_for_execution ldrb r0, [r7] strb r0, [r4] ldrb r0, [r7] muls r0, r5 mov r1, r8 adds r1, 0x2E adds r0, r1 str r0, [sp] movs r0, 0 movs r1, 0x2 movs r2, 0 movs r3, 0x2 bl dp01_build_cmdbuf_x02_a_b_varargs ldrb r0, [r7] bl dp01_battle_side_mark_buffer_for_execution ldrb r0, [r7] mov r2, r10 ldr r1, [r2] lsls r0, 1 adds r0, r1 adds r0, 0xC8 movs r3, 0 strb r3, [r0] ldrb r0, [r7] ldr r1, [r2] lsls r0, 1 adds r0, r1 adds r0, 0xC9 strb r3, [r0] ldr r1, =gBankAttacker ldrb r0, [r1] ldr r1, [r2] lsls r0, 1 adds r0, r1 adds r0, 0xC8 strb r3, [r0] ldr r2, =gBankAttacker ldrb r0, [r2] mov r3, r10 ldr r1, [r3] lsls r0, 1 adds r0, r1 adds r0, 0xC9 movs r1, 0 strb r1, [r0] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] ldr r1, =gBattleTextBuff1 movs r3, 0xFD strb r3, [r1] movs r2, 0xA strb r2, [r1, 0x1] ldrh r0, [r6] strb r0, [r1, 0x2] ldrh r0, [r6] lsrs r0, 8 strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldr r1, =gBattleTextBuff2 strb r3, [r1] strb r2, [r1, 0x1] mov r2, r9 strb r2, [r1, 0x2] mov r3, r9 lsrs r0, r3, 8 strb r0, [r1, 0x3] movs r0, 0x1 negs r0, r0 strb r0, [r1, 0x4] cmp r3, 0 beq _08055118 ldrh r0, [r6] cmp r0, 0 beq _0805512C ldr r1, =gBattleCommunication movs r0, 0x2 b _08055130 .pool _08055118: ldrh r0, [r6] cmp r0, 0 beq _0805512C ldr r0, =gBattleCommunication movs r1, 0 strb r1, [r0, 0x5] b _08055132 .pool _0805512C: ldr r1, =gBattleCommunication movs r0, 0x1 _08055130: strb r0, [r1, 0x5] _08055132: add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_8054EB4 thumb_func_start sub_8055148 sub_8055148: @ 8055148 push {r4,lr} ldr r3, =gBattleMons ldr r4, =gBankTarget ldrb r0, [r4] movs r2, 0x58 muls r0, r2 adds r0, r3 adds r0, 0x20 ldrb r1, [r0] adds r0, r1, 0 cmp r0, 0 beq _0805519C cmp r0, 0x19 beq _0805519C ldr r0, =gBankAttacker ldrb r0, [r0] muls r0, r2 adds r0, r3 adds r0, 0x20 strb r1, [r0] ldr r1, =gLastUsedAbility ldrb r0, [r4] muls r0, r2 adds r0, r3 adds r0, 0x20 ldrb r0, [r0] strb r0, [r1] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _080551B6 .pool _0805519C: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _080551B6: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_8055148 thumb_func_start atkD4_802C408 atkD4_802C408: @ 80551C0 push {r4-r7,lr} ldr r7, =gBattlescriptCurrInstr ldr r2, [r7] ldrb r3, [r2, 0x1] cmp r3, 0 beq _080551D8 cmp r3, 0x1 beq _08055210 b _0805528C .pool _080551D8: ldr r1, =gUnknown_020243D0 ldr r4, =gBankAttacker adds r0, r1, 0 adds r0, 0x20 ldrb r5, [r4] adds r3, r0, r5 ldrb r0, [r3] cmp r0, 0 bne _0805525C movs r0, 0x2 strb r0, [r3] ldrb r0, [r4] adds r1, 0x24 adds r1, r0, r1 ldr r2, =gBattlePartyID lsls r0, 1 adds r0, r2 ldrh r0, [r0] strb r0, [r1] ldr r0, [r7] adds r0, 0x6 b _0805528A .pool _08055210: ldr r1, =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x4 strb r0, [r1, 0x1] ldr r4, =gBankTarget ldrb r0, [r4] strb r0, [r1, 0x2] ldr r0, =gUnknown_020243D0 adds r0, 0x24 ldrb r5, [r4] adds r0, r5 ldrb r0, [r0] strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldr r1, =gBattleMoveDamage ldr r6, =gBattleMons ldrb r0, [r4] movs r5, 0x58 muls r0, r5 adds r0, r6 ldrh r0, [r0, 0x2C] lsrs r0, 1 str r0, [r1] cmp r0, 0 bne _08055248 str r3, [r1] _08055248: ldr r0, [r1] negs r0, r0 str r0, [r1] ldrb r0, [r4] muls r0, r5 adds r0, r6 ldrh r1, [r0, 0x28] ldrh r0, [r0, 0x2C] cmp r1, r0 bne _08055288 _0805525C: ldrb r1, [r2, 0x2] ldrb r0, [r2, 0x3] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x5] lsls r0, 24 orrs r1, r0 str r1, [r7] b _0805528C .pool _08055288: adds r0, r2, 0x6 _0805528A: str r0, [r7] _0805528C: pop {r4-r7} pop {r0} bx r0 thumb_func_end atkD4_802C408 thumb_func_start sub_8055294 sub_8055294: @ 8055294 push {lr} ldr r1, =gStatuses3 ldr r0, =gBankAttacker ldrb r0, [r0] lsls r0, 2 adds r2, r0, r1 ldr r1, [r2] movs r3, 0x80 lsls r3, 3 adds r0, r1, 0 ands r0, r3 cmp r0, 0 beq _080552D8 ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _080552E4 .pool _080552D8: orrs r1, r3 str r1, [r2] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _080552E4: pop {r0} bx r0 .pool thumb_func_end sub_8055294 thumb_func_start atkD6_doubledamagedealtifdamaged atkD6_doubledamagedealtifdamaged: @ 80552EC push {lr} ldr r3, =gProtectStructs ldr r0, =gBankAttacker ldrb r0, [r0] lsls r2, r0, 4 adds r0, r3, 0x4 adds r0, r2, r0 ldr r0, [r0] cmp r0, 0 beq _0805530C adds r0, r2, r3 ldr r1, =gBankTarget ldrb r0, [r0, 0xC] ldrb r1, [r1] cmp r0, r1 beq _08055324 _0805530C: adds r0, r3, 0 adds r0, 0x8 adds r0, r2, r0 ldr r0, [r0] cmp r0, 0 beq _0805532A adds r0, r2, r3 ldr r1, =gBankTarget ldrb r0, [r0, 0xD] ldrb r1, [r1] cmp r0, r1 bne _0805532A _08055324: ldr r1, =gBattleScripting movs r0, 0x2 strb r0, [r1, 0xE] _0805532A: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .pool thumb_func_end atkD6_doubledamagedealtifdamaged thumb_func_start sub_805534C sub_805534C: @ 805534C push {r4,lr} ldr r1, =gStatuses3 ldr r0, =gBankTarget ldrb r3, [r0] lsls r0, r3, 2 adds r4, r0, r1 ldr r2, [r4] movs r0, 0xC0 lsls r0, 5 ands r0, r2 cmp r0, 0 bne _08055374 ldr r1, =gBattleMons movs r0, 0x58 muls r0, r3 adds r1, 0x4C adds r0, r1 ldrb r0, [r0] cmp r0, 0 beq _080553A0 _08055374: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _080553B0 .pool _080553A0: movs r0, 0x80 lsls r0, 5 orrs r2, r0 str r2, [r4] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _080553B0: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_805534C thumb_func_start atkD8_setdamagetohealthdifference atkD8_setdamagetohealthdifference: @ 80553BC push {lr} ldr r2, =gBattleMons ldr r0, =gBankTarget ldrb r0, [r0] movs r1, 0x58 muls r0, r1 adds r3, r0, r2 ldr r0, =gBankAttacker ldrb r0, [r0] muls r0, r1 adds r1, r0, r2 ldrh r0, [r3, 0x28] ldrh r2, [r1, 0x28] cmp r0, r2 bhi _08055408 ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0805541A .pool _08055408: ldr r2, =gBattleMoveDamage ldrh r0, [r3, 0x28] ldrh r1, [r1, 0x28] subs r0, r1 str r0, [r2] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0805541A: pop {r0} bx r0 .pool thumb_func_end atkD8_setdamagetohealthdifference thumb_func_start atkD9_scaledamagebyhealthratio atkD9_scaledamagebyhealthratio: @ 8055428 push {r4,lr} ldr r4, =gUnknown_02024400 ldrh r0, [r4] cmp r0, 0 bne _08055464 ldr r2, =gBattleMoves ldr r0, =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r3, [r0, 0x1] ldr r2, =gBattleMons ldr r0, =gBankAttacker ldrb r1, [r0] movs r0, 0x58 muls r1, r0 adds r1, r2 ldrh r0, [r1, 0x28] muls r0, r3 ldrh r1, [r1, 0x2C] bl __divsi3 strh r0, [r4] lsls r0, 16 cmp r0, 0 bne _08055464 movs r0, 0x1 strh r0, [r4] _08055464: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .pool thumb_func_end atkD9_scaledamagebyhealthratio thumb_func_start atkDA_abilityswap atkDA_abilityswap: @ 805548C push {r4-r6,lr} ldr r5, =gBattleMons ldr r0, =gBankAttacker ldrb r0, [r0] movs r4, 0x58 muls r0, r4 adds r0, r5 adds r2, r0, 0 adds r2, 0x20 ldrb r1, [r2] cmp r1, 0 bne _080554B4 ldr r0, =gBankTarget ldrb r0, [r0] muls r0, r4 adds r0, r5 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0 beq _080554D4 _080554B4: cmp r1, 0x19 beq _080554D4 ldr r6, =gBankTarget ldrb r0, [r6] muls r0, r4 adds r0, r5 adds r0, 0x20 ldrb r3, [r0] cmp r3, 0x19 beq _080554D4 ldr r0, =gBattleMoveFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 beq _08055504 _080554D4: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0805551A .pool _08055504: ldrb r1, [r2] strb r3, [r2] ldrb r0, [r6] muls r0, r4 adds r0, r5 adds r0, 0x20 strb r1, [r0] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0805551A: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end atkDA_abilityswap thumb_func_start atkDB_imprisoneffect atkDB_imprisoneffect: @ 8055524 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} ldr r1, =gStatuses3 ldr r4, =gBankAttacker ldrb r2, [r4] lsls r0, r2, 2 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 6 ands r0, r1 cmp r0, 0 beq _08055574 b _080555F6 .pool _0805554C: ldr r0, =gStatuses3 mov r2, r9 ldrb r1, [r2] lsls r1, 2 adds r1, r0 ldr r0, [r1] movs r2, 0x80 lsls r2, 6 orrs r0, r2 str r0, [r1] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _080555EE .pool _08055574: adds r0, r2, 0 bl GetBankSide lsls r0, 24 lsrs r0, 24 mov r8, r0 ldrb r0, [r4] bl sub_803F548 movs r6, 0 b _080555E6 _0805558A: adds r0, r6, 0 bl GetBankSide lsls r0, 24 lsrs r0, 24 cmp r8, r0 beq _080555E0 movs r4, 0 ldr r7, =gBankAttacker mov r9, r7 ldr r0, =gBattleMons mov r12, r0 mov r1, r9 ldrb r0, [r1] mov r2, r12 adds r2, 0xC movs r1, 0x58 muls r0, r1 adds r3, r0, r2 adds r5, r6, 0 muls r5, r1 _080555B4: movs r2, 0 ldrh r1, [r3] mov r0, r12 adds r0, 0xC adds r0, r5, r0 _080555BE: ldrh r7, [r0] cmp r1, r7 bne _080555C8 cmp r1, 0 bne _080555D0 _080555C8: adds r0, 0x2 adds r2, 0x1 cmp r2, 0x3 ble _080555BE _080555D0: cmp r2, 0x4 bne _080555DC adds r3, 0x2 adds r4, 0x1 cmp r4, 0x3 ble _080555B4 _080555DC: cmp r4, 0x4 bne _0805554C _080555E0: adds r0, r6, 0x1 lsls r0, 24 lsrs r6, r0, 24 _080555E6: ldr r0, =gNoOfAllBanks ldrb r0, [r0] cmp r6, r0 bcc _0805558A _080555EE: ldr r0, =gNoOfAllBanks ldrb r0, [r0] cmp r6, r0 bne _08055610 _080555F6: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08055610: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atkDB_imprisoneffect thumb_func_start atkDC_setgrudge atkDC_setgrudge: @ 805562C push {lr} ldr r1, =gStatuses3 ldr r0, =gBankAttacker ldrb r0, [r0] lsls r0, 2 adds r2, r0, r1 ldr r1, [r2] movs r3, 0x80 lsls r3, 7 adds r0, r1, 0 ands r0, r3 cmp r0, 0 beq _08055670 ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0805567C .pool _08055670: orrs r1, r3 str r1, [r2] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0805567C: pop {r0} bx r0 .pool thumb_func_end atkDC_setgrudge thumb_func_start atkDD_weightdamagecalculation atkDD_weightdamagecalculation: @ 8055684 push {r4-r7,lr} mov r7, r8 push {r7} movs r5, 0 ldr r2, =gUnknown_0831C428 ldrh r0, [r2] ldr r1, =0x0000ffff cmp r0, r1 beq _080556FC adds r6, r2, 0 ldr r0, =gBattleMons mov r8, r0 adds r7, r1, 0 adds r4, r6, 0 _080556A0: ldr r0, =gBankTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 add r0, r8 ldrh r0, [r0] bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 movs r1, 0x1 bl sub_80C0630 ldrh r1, [r4] lsls r0, 16 lsrs r0, 16 cmp r1, r0 bhi _080556CE adds r4, 0x4 adds r5, 0x2 ldrh r0, [r4] cmp r0, r7 bne _080556A0 _080556CE: lsls r0, r5, 1 adds r0, r6 ldrh r1, [r0] ldr r0, =0x0000ffff cmp r1, r0 beq _080556FC ldr r0, =gUnknown_02024400 adds r1, r5, 0x1 lsls r1, 1 adds r1, r6 ldrh r1, [r1] strh r1, [r0] b _08055702 .pool _080556FC: ldr r1, =gUnknown_02024400 movs r0, 0x78 strh r0, [r1] _08055702: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atkDD_weightdamagecalculation thumb_func_start atkDE_asistattackselect atkDE_asistattackselect: @ 805571C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0xC movs r0, 0 mov r10, r0 ldr r0, =gBattleStruct ldr r0, [r0] adds r0, 0x18 str r0, [sp, 0x4] ldr r0, =gBankAttacker ldrb r0, [r0] bl GetBankIdentity movs r1, 0x1 ands r1, r0 ldr r0, =gPlayerParty str r0, [sp] cmp r1, 0 beq _0805574C ldr r1, =gEnemyParty str r1, [sp] _0805574C: movs r2, 0 _0805574E: ldr r1, =gBattlePartyID ldr r0, =gBankAttacker ldrb r0, [r0] lsls r0, 1 adds r0, r1 adds r1, r2, 0x1 str r1, [sp, 0x8] ldrh r0, [r0] cmp r2, r0 beq _080557F4 movs r0, 0x64 adds r6, r2, 0 muls r6, r0 ldr r0, [sp] adds r4, r0, r6 adds r0, r4, 0 movs r1, 0x41 bl GetMonData cmp r0, 0 beq _080557F4 adds r0, r4, 0 movs r1, 0x41 bl GetMonData movs r1, 0xCE lsls r1, 1 cmp r0, r1 beq _080557F4 movs r5, 0 ldr r1, =0x0000ffff mov r8, r1 mov r9, r6 mov r1, r10 lsls r0, r1, 1 ldr r1, [sp, 0x4] adds r6, r0, r1 _08055798: movs r7, 0 adds r1, r5, 0 adds r1, 0xD ldr r0, [sp] add r0, r9 bl GetMonData lsls r0, 16 lsrs r4, r0, 16 adds r0, r4, 0 bl sub_8052F84 lsls r0, 24 adds r1, r5, 0x1 cmp r0, 0 bne _080557EE ldr r0, =gUnknown_0831C3E0 ldrh r2, [r0] adds r3, r0, 0 cmp r2, r8 beq _080557E2 cmp r4, r2 beq _080557D8 ldr r5, =0x0000ffff adds r2, r3, 0 _080557CA: adds r2, 0x2 adds r7, 0x1 ldrh r0, [r2] cmp r0, r5 beq _080557E2 cmp r4, r0 bne _080557CA _080557D8: lsls r0, r7, 1 adds r0, r3 ldrh r0, [r0] cmp r0, r8 bne _080557EE _080557E2: cmp r4, 0 beq _080557EE strh r4, [r6] adds r6, 0x2 movs r0, 0x1 add r10, r0 _080557EE: adds r5, r1, 0 cmp r5, 0x3 ble _08055798 _080557F4: ldr r2, [sp, 0x8] cmp r2, 0x5 ble _0805574E mov r1, r10 cmp r1, 0 beq _0805586C ldr r2, =gHitMarker ldr r0, [r2] ldr r1, =0xfffffbff ands r0, r1 str r0, [r2] ldr r4, =gRandomMove bl Random movs r1, 0xFF ands r1, r0 mov r0, r10 muls r0, r1 asrs r0, 8 lsls r0, 1 ldr r1, [sp, 0x4] adds r0, r1 ldrh r0, [r0] strh r0, [r4] ldrh r0, [r4] movs r1, 0 bl GetMoveTarget ldr r1, =gBankTarget strb r0, [r1] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08055886 .pool _0805586C: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08055886: add sp, 0xC pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atkDE_asistattackselect thumb_func_start atkDF_setmagiccoat atkDF_setmagiccoat: @ 805589C push {lr} ldr r1, =gBankTarget ldr r3, =gBankAttacker ldrb r0, [r3] strb r0, [r1] ldr r2, =gSpecialStatuses ldrb r1, [r3] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r2, 0x20 orrs r1, r2 strb r1, [r0] ldr r0, =gUnknown_02024082 ldrb r1, [r0] ldr r0, =gNoOfAllBanks ldrb r0, [r0] subs r0, 0x1 cmp r1, r0 bne _080558FC ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _08055914 .pool _080558FC: ldr r0, =gProtectStructs ldrb r1, [r3] lsls r1, 4 adds r1, r0 ldrb r0, [r1] movs r2, 0x10 orrs r0, r2 strb r0, [r1] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _08055914: pop {r0} bx r0 .pool thumb_func_end atkDF_setmagiccoat thumb_func_start atkE0_setstealstatchange atkE0_setstealstatchange: @ 8055920 push {lr} ldr r2, =gSpecialStatuses ldr r3, =gBankAttacker ldrb r1, [r3] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r2, 0x20 orrs r1, r2 strb r1, [r0] ldr r0, =gUnknown_02024082 ldrb r1, [r0] ldr r0, =gNoOfAllBanks ldrb r0, [r0] subs r0, 0x1 cmp r1, r0 bne _08055978 ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0805598E .pool _08055978: ldr r0, =gProtectStructs ldrb r1, [r3] lsls r1, 4 adds r1, r0 ldrb r0, [r1] orrs r0, r2 strb r0, [r1] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0805598E: pop {r0} bx r0 .pool thumb_func_end atkE0_setstealstatchange thumb_func_start atkE1_802CBE4 atkE1_802CBE4: @ 805599C push {r4-r6,lr} ldr r4, =gBattleScripting ldr r0, =gBattleStruct ldr r0, [r0] adds r0, 0xD8 ldrb r0, [r0] strb r0, [r4, 0x17] ldrb r0, [r4, 0x17] bl GetBankSide lsls r0, 24 lsrs r5, r0, 24 ldr r2, =gBattleTextBuff1 movs r0, 0xFD strb r0, [r2] movs r0, 0x9 strb r0, [r2, 0x1] ldr r3, =gBattleMons ldrb r1, [r4, 0x17] movs r0, 0x58 muls r0, r1 adds r0, r3 adds r0, 0x20 ldrb r0, [r0] strb r0, [r2, 0x2] movs r0, 0xFF strb r0, [r2, 0x3] ldr r2, =gBankTarget ldr r1, =gNoOfAllBanks ldrb r0, [r2] ldrb r1, [r1] cmp r0, r1 bcs _08055A22 adds r4, r2, 0 ldr r6, =gBitTable _080559E2: ldrb r0, [r4] bl GetBankSide lsls r0, 24 lsrs r0, 24 cmp r0, r5 beq _08055A04 ldr r0, =gAbsentBankFlags ldrb r1, [r0] ldrb r0, [r4] lsls r0, 2 adds r0, r6 ldr r0, [r0] ands r1, r0 ldr r2, =gNoOfAllBanks cmp r1, 0 beq _08055A18 _08055A04: ldrb r0, [r4] adds r0, 0x1 strb r0, [r4] ldr r1, =gNoOfAllBanks lsls r0, 24 lsrs r0, 24 adds r2, r1, 0 ldrb r1, [r2] cmp r0, r1 bcc _080559E2 _08055A18: ldr r0, =gBankTarget ldrb r0, [r0] ldrb r2, [r2] cmp r0, r2 bcc _08055A64 _08055A22: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _08055A6C .pool _08055A64: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _08055A6C: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end atkE1_802CBE4 thumb_func_start atkE2_cmde2 atkE2_cmde2: @ 8055A78 push {r4-r6,lr} sub sp, 0x4 ldr r5, =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r4, =gActiveBank strb r0, [r4] ldr r3, =gBattleMons ldrb r0, [r4] movs r6, 0x58 adds r1, r0, 0 muls r1, r6 adds r0, r1, r3 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x1E bne _08055AD2 adds r3, 0x4C adds r1, r3 movs r0, 0 str r0, [r1] ldr r2, =gBitTable ldrb r1, [r4] ldr r0, =gBattleStruct ldr r0, [r0] adds r0, r1, r0 adds r0, 0x58 ldrb r0, [r0] lsls r0, 2 adds r0, r2 ldrb r2, [r0] adds r0, r1, 0 muls r0, r6 adds r0, r3 str r0, [sp] movs r0, 0 movs r1, 0x28 movs r3, 0x4 bl dp01_build_cmdbuf_x02_a_b_varargs ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution _08055AD2: ldr r0, [r5] adds r0, 0x2 str r0, [r5] add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end atkE2_cmde2 thumb_func_start atkE3_jumpiffainted atkE3_jumpiffainted: @ 8055AF4 push {r4,lr} ldr r4, =gBattlescriptCurrInstr ldr r0, [r4] ldrb r0, [r0, 0x1] bl get_battle_side_of_something ldr r1, =gActiveBank strb r0, [r1] ldr r2, =gBattleMons ldrb r1, [r1] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r0, [r0, 0x28] cmp r0, 0 bne _08055B3C ldr r2, [r4] ldrb r1, [r2, 0x2] ldrb r0, [r2, 0x3] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x5] lsls r0, 24 orrs r1, r0 str r1, [r4] b _08055B42 .pool _08055B3C: ldr r0, [r4] adds r0, 0x6 str r0, [r4] _08055B42: pop {r4} pop {r0} bx r0 thumb_func_end atkE3_jumpiffainted thumb_func_start sub_8055B48 sub_8055B48: @ 8055B48 push {lr} ldr r0, =gUnknown_02022FF0 ldrb r0, [r0] cmp r0, 0x7 bhi _08055BE4 lsls r0, 2 ldr r1, =_08055B64 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _08055B64: .4byte _08055B84 .4byte _08055B90 .4byte _08055B9C .4byte _08055BA8 .4byte _08055BB4 .4byte _08055BC0 .4byte _08055BCC .4byte _08055BD8 _08055B84: ldr r1, =gBattleCommunication movs r0, 0x2 b _08055BE8 .pool _08055B90: ldr r1, =gBattleCommunication movs r0, 0x1 b _08055BE8 .pool _08055B9C: ldr r1, =gBattleCommunication movs r0, 0x1B b _08055BE8 .pool _08055BA8: ldr r1, =gBattleCommunication movs r0, 0x17 b _08055BE8 .pool _08055BB4: ldr r1, =gBattleCommunication movs r0, 0x16 b _08055BE8 .pool _08055BC0: ldr r1, =gBattleCommunication movs r0, 0x18 b _08055BE8 .pool _08055BCC: ldr r1, =gBattleCommunication movs r0, 0x7 b _08055BE8 .pool _08055BD8: ldr r1, =gBattleCommunication movs r0, 0x8 b _08055BE8 .pool _08055BE4: ldr r1, =gBattleCommunication movs r0, 0x5 _08055BE8: strb r0, [r1, 0x3] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .pool thumb_func_end sub_8055B48 thumb_func_start atkE5_pickupitemcalculation atkE5_pickupitemcalculation: @ 8055C00 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 bl InBattlePike lsls r0, 24 cmp r0, 0 beq _08055C18 b _08055DD8 _08055C18: bl InBattlePyramid lsls r0, 24 cmp r0, 0 beq _08055CC4 movs r6, 0 mov r7, sp ldr r0, =gBaseStats mov r8, r0 _08055C2A: movs r0, 0x64 adds r4, r6, 0 muls r4, r0 ldr r0, =gPlayerParty adds r4, r0 adds r0, r4, 0 movs r1, 0x41 bl GetMonData lsls r0, 16 lsrs r5, r0, 16 adds r0, r4, 0 movs r1, 0xC bl GetMonData strh r0, [r7] adds r0, r4, 0 movs r1, 0x2E bl GetMonData cmp r0, 0 beq _08055C6C lsls r0, r5, 3 subs r0, r5 lsls r0, 2 add r0, r8 ldrb r0, [r0, 0x17] b _08055C76 .pool _08055C6C: lsls r0, r5, 3 subs r0, r5 lsls r0, 2 add r0, r8 ldrb r0, [r0, 0x16] _08055C76: cmp r0, 0x35 bne _08055CB6 cmp r5, 0 beq _08055CB6 movs r0, 0xCE lsls r0, 1 cmp r5, r0 beq _08055CB6 ldrh r0, [r7] cmp r0, 0 bne _08055CB6 bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0xA bl __umodsi3 lsls r0, 16 cmp r0, 0 bne _08055CB6 bl CalculateBattlePyramidPickupItemId strh r0, [r7] movs r0, 0x64 muls r0, r6 ldr r1, =gPlayerParty adds r0, r1 movs r1, 0xC mov r2, sp bl SetMonData _08055CB6: adds r6, 0x1 cmp r6, 0x5 ble _08055C2A b _08055DD8 .pool _08055CC4: movs r6, 0 movs r1, 0x64 mov r8, r1 ldr r7, =gPlayerParty mov r10, sp _08055CCE: mov r4, r8 muls r4, r6 adds r4, r7 adds r0, r4, 0 movs r1, 0x41 bl GetMonData lsls r0, 16 lsrs r5, r0, 16 adds r0, r4, 0 movs r1, 0xC bl GetMonData mov r1, r10 strh r0, [r1] adds r0, r4, 0 movs r1, 0x2E bl GetMonData cmp r0, 0 beq _08055D30 lsls r0, r5, 3 subs r0, r5 lsls r0, 2 ldr r1, =gBaseStats adds r0, r1 ldrb r0, [r0, 0x17] b _08055D3C .pool _08055D10: mov r0, r8 muls r0, r6 adds r0, r7 adds r2, r1, 0 adds r2, 0x63 subs r2, r4 lsls r2, 1 ldr r1, =gRarePickupItems adds r2, r1 movs r1, 0xC bl SetMonData b _08055DD0 .pool _08055D30: lsls r0, r5, 3 subs r0, r5 lsls r0, 2 ldr r1, =gBaseStats adds r0, r1 ldrb r0, [r0, 0x16] _08055D3C: adds r1, r6, 0x1 mov r9, r1 cmp r0, 0x35 bne _08055DD0 cmp r5, 0 beq _08055DD0 movs r0, 0xCE lsls r0, 1 cmp r5, r0 beq _08055DD0 mov r1, r10 ldrh r0, [r1] cmp r0, 0 bne _08055DD0 bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0xA bl __umodsi3 lsls r0, 16 cmp r0, 0 bne _08055DD0 bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x64 bl __umodsi3 lsls r0, 16 lsrs r4, r0, 16 mov r0, r8 muls r0, r6 adds r0, r7 movs r1, 0x38 bl GetMonData subs r0, 0x1 movs r1, 0xA bl __udivsi3 lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x9 bls _08055D9C movs r1, 0x9 _08055D9C: movs r2, 0 b _08055DAE .pool _08055DA4: adds r0, r4, 0 subs r0, 0x62 cmp r0, 0x1 bls _08055D10 adds r2, 0x1 _08055DAE: cmp r2, 0x8 bgt _08055DD0 ldr r0, =gPickupProbabilities adds r0, r2, r0 ldrb r0, [r0] cmp r0, r4 ble _08055DA4 mov r0, r8 muls r0, r6 adds r0, r7 adds r2, r1, r2 lsls r2, 1 ldr r1, =gPickupItems adds r2, r1 movs r1, 0xC bl SetMonData _08055DD0: mov r6, r9 cmp r6, 0x5 bgt _08055DD8 b _08055CCE _08055DD8: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atkE5_pickupitemcalculation thumb_func_start atkE6_castform_transform atkE6_castform_transform: @ 8055DFC push {r4,lr} ldr r4, =gActiveBank ldr r0, =gBattleScripting ldrb r0, [r0, 0x17] strb r0, [r4] ldr r1, =gBattleMons ldrb r2, [r4] movs r0, 0x58 muls r0, r2 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 17 ands r0, r1 ldr r3, =gBattleStruct cmp r0, 0 beq _08055E2C ldr r0, [r3] adds r0, 0x7F ldrb r1, [r0] movs r2, 0x80 orrs r1, r2 strb r1, [r0] _08055E2C: ldr r0, [r3] adds r0, 0x7F ldrb r2, [r0] movs r0, 0 movs r1, 0 bl dp01_build_cmdbuf_x34_a_bb_aka_battle_anim ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .pool thumb_func_end atkE6_castform_transform thumb_func_start atkE7_castform_switch atkE7_castform_switch: @ 8055E64 push {r4,lr} ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] ldr r0, =gBattleScripting ldrb r0, [r0, 0x17] bl castform_switch lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 beq _08055E8E ldr r0, =gUnknown_082DB4A9 bl b_push_move_exec ldr r0, =gBattleStruct ldr r0, [r0] adds r0, 0x7F subs r1, r4, 0x1 strb r1, [r0] _08055E8E: pop {r4} pop {r0} bx r0 .pool thumb_func_end atkE7_castform_switch thumb_func_start atkE8_settypebasedhalvers atkE8_settypebasedhalvers: @ 8055EA4 push {r4,lr} movs r4, 0 ldr r2, =gBattleMoves ldr r0, =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0] cmp r0, 0xC9 bne _08055EF4 ldr r1, =gStatuses3 ldr r0, =gBankAttacker ldrb r0, [r0] lsls r0, 2 adds r2, r0, r1 ldr r1, [r2] movs r3, 0x80 lsls r3, 9 adds r0, r1, 0 ands r0, r3 cmp r0, 0 bne _08055F18 orrs r1, r3 str r1, [r2] ldr r0, =gBattleCommunication strb r4, [r0, 0x5] b _08055F1C .pool _08055EF4: ldr r1, =gStatuses3 ldr r0, =gBankAttacker ldrb r0, [r0] lsls r0, 2 adds r2, r0, r1 ldr r1, [r2] movs r3, 0x80 lsls r3, 10 adds r0, r1, 0 ands r0, r3 cmp r0, 0 bne _08055F18 orrs r1, r3 str r1, [r2] ldr r1, =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] movs r4, 0x1 _08055F18: cmp r4, 0 beq _08055F38 _08055F1C: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08055F52 .pool _08055F38: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08055F52: pop {r4} pop {r0} bx r0 .pool thumb_func_end atkE8_settypebasedhalvers thumb_func_start atkE9_seteffectbyweather atkE9_seteffectbyweather: @ 8055F5C push {lr} sub sp, 0x4 movs r0, 0 str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0xD movs r3, 0 bl AbilityBattleEffects lsls r0, 24 lsrs r0, 24 cmp r0, 0 bne _08055FFC str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0x4D movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 bne _08055FFC ldr r2, =gBattleWeather ldrb r0, [r2] cmp r0, 0 beq _08055F9A ldr r1, =gBattleScripting movs r0, 0x2 strb r0, [r1, 0xE] _08055F9A: ldrh r1, [r2] movs r0, 0x7 ands r0, r1 cmp r0, 0 beq _08055FB8 ldr r0, =gBattleStruct ldr r1, [r0] movs r0, 0x8B b _08055FFA .pool _08055FB8: movs r0, 0x18 ands r0, r1 cmp r0, 0 beq _08055FCC ldr r0, =gBattleStruct ldr r1, [r0] movs r0, 0x85 b _08055FFA .pool _08055FCC: movs r0, 0x60 ands r0, r1 cmp r0, 0 beq _08055FE0 ldr r0, =gBattleStruct ldr r1, [r0] movs r0, 0x8A b _08055FFA .pool _08055FE0: movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _08055FF4 ldr r0, =gBattleStruct ldr r1, [r0] movs r0, 0x8F b _08055FFA .pool _08055FF4: ldr r0, =gBattleStruct ldr r1, [r0] movs r0, 0x80 _08055FFA: strb r0, [r1, 0x13] _08055FFC: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] add sp, 0x4 pop {r0} bx r0 .pool thumb_func_end atkE9_seteffectbyweather thumb_func_start atkEA_recycleitem atkEA_recycleitem: @ 8056014 push {r4-r7,lr} sub sp, 0x4 ldr r7, =gActiveBank ldr r0, =gBankAttacker ldrb r0, [r0] strb r0, [r7] ldr r1, =gBattleStruct ldrb r2, [r7] lsls r0, r2, 1 adds r0, 0xB8 ldr r1, [r1] adds r6, r1, r0 ldrh r5, [r6] cmp r5, 0 beq _08056094 ldr r4, =gBattleMons movs r3, 0x58 adds r0, r2, 0 muls r0, r3 adds r0, r4 ldrh r0, [r0, 0x2E] cmp r0, 0 bne _08056094 ldr r1, =gUnknown_02024208 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 dp01_build_cmdbuf_x02_a_b_varargs ldrb r0, [r7] bl dp01_battle_side_mark_buffer_for_execution ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _080560AE .pool _08056094: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _080560AE: add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atkEA_recycleitem thumb_func_start atkEB_settypetoterrain atkEB_settypetoterrain: @ 80560BC push {r4-r7,lr} mov r7, r8 push {r7} ldr r0, =gBattleMons mov r8, r0 ldr r7, =gBankAttacker ldrb r0, [r7] movs r6, 0x58 muls r0, r6 mov r1, r8 adds r3, r0, r1 movs r0, 0x21 adds r0, r3 mov r12, r0 ldr r5, =gUnknown_0831C483 ldr r4, =gUnknown_02022FF0 ldrb r0, [r4] adds r0, r5 ldrb r2, [r0] mov r1, r12 ldrb r0, [r1] adds r1, r2, 0 cmp r0, r1 beq _08056144 adds r0, r3, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, r1 beq _08056144 mov r0, r12 strb r2, [r0] ldrb r0, [r7] adds r1, r0, 0 muls r1, r6 add r1, r8 ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] adds r1, 0x22 strb r0, [r1] ldr r1, =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x3 strb r0, [r1, 0x1] ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] strb r0, [r1, 0x2] movs r0, 0xFF strb r0, [r1, 0x3] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0805615E .pool _08056144: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0805615E: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atkEB_settypetoterrain thumb_func_start atkEC_802D2A0 atkEC_802D2A0: @ 805616C push {r4-r6,lr} ldr r5, =gBankAttacker ldrb r0, [r5] bl GetBankIdentity movs r1, 0x2 eors r0, r1 lsls r0, 24 lsrs r0, 24 bl GetBankByPlayerAI ldr r4, =gActiveBank strb r0, [r4] ldr r0, =gBattleTypeFlags ldr r0, [r0] movs r6, 0x1 ands r0, r6 cmp r0, 0 beq _0805620C ldr r0, =gAbsentBankFlags ldrb r1, [r0] ldr r2, =gBitTable ldrb r3, [r4] lsls r0, r3, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _0805620C ldr r0, =gUnknown_0202421C adds r0, r3, r0 ldrb r0, [r0] cmp r0, 0 bne _0805620C ldr r1, =gUnknown_02024274 lsls r0, r3, 1 adds r0, r1 ldrh r2, [r0] cmp r2, 0xE4 bne _0805620C ldr r0, =gUnknown_0202407A adds r0, r3, r0 movs r1, 0xB strb r1, [r0] ldr r0, =gCurrentMove strh r2, [r0] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] ldr r0, =gBattleScripting strb r6, [r0, 0x18] ldrb r1, [r5] adds r0, 0x20 strb r1, [r0] ldrb r0, [r4] strb r0, [r5] b _08056226 .pool _0805620C: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08056226: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end atkEC_802D2A0 thumb_func_start atkED_802D364 atkED_802D364: @ 8056230 push {r4,lr} ldr r1, =gUnknown_0202420E ldr r3, =gBankAttacker ldrb r0, [r3] strb r0, [r1] ldr r2, =gBankTarget lsls r0, 24 lsrs r0, 24 adds r4, r1, 0 ldrb r1, [r2] cmp r0, r1 bne _08056264 ldr r1, =gBattleScripting ldrb r0, [r1, 0x17] strb r0, [r2] strb r0, [r3] b _0805626A .pool _08056264: ldr r1, =gBattleScripting ldrb r0, [r1, 0x17] strb r0, [r2] _0805626A: ldrb r0, [r4] strb r0, [r1, 0x17] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .pool thumb_func_end atkED_802D364 thumb_func_start atkEE_removereflectlightscreen atkEE_removereflectlightscreen: @ 8056284 push {r4,lr} ldr r0, =gBankAttacker ldrb r0, [r0] bl GetBankSide movs r1, 0x1 eors r0, r1 lsls r0, 24 lsrs r0, 24 ldr r1, =gSideTimers lsls r3, r0, 1 adds r0, r3, r0 lsls r0, 2 adds r4, r0, r1 ldrb r0, [r4] cmp r0, 0 bne _080562AC ldrb r1, [r4, 0x2] cmp r1, 0 beq _080562E4 _080562AC: ldr r2, =gUnknown_0202428E adds r2, r3, r2 ldrh r1, [r2] ldr r0, =0x0000fffe ands r0, r1 movs r3, 0 ldr r1, =0x0000fffd ands r0, r1 strh r0, [r2] strb r3, [r4] strb r3, [r4, 0x2] ldr r1, =gBattleScripting movs r0, 0x1 strb r0, [r1, 0x18] strb r0, [r1, 0x19] b _080562EA .pool _080562E4: ldr r0, =gBattleScripting strb r1, [r0, 0x18] strb r1, [r0, 0x19] _080562EA: ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .pool thumb_func_end atkEE_removereflectlightscreen thumb_func_start sub_8056300 sub_8056300: @ 8056300 push {r4-r6,lr} movs r4, 0 ldr r0, =gBattleExecBuffer ldr r0, [r0] cmp r0, 0 beq _0805630E b _08056696 _0805630E: ldr r5, =gActiveBank ldr r0, =gBankAttacker ldrb r0, [r0] strb r0, [r5] ldr r6, =gBankTarget movs r1, 0x1 eors r0, r1 strb r0, [r6] ldr r0, =gBattleTypeFlags ldr r1, [r0] movs r0, 0x8 ands r0, r1 cmp r0, 0 beq _0805635C movs r0, 0 movs r1, 0x5 bl dp01_build_cmdbuf_x0D_a ldrb r0, [r5] bl dp01_battle_side_mark_buffer_for_execution ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DBE02 b _08056694 .pool _0805635C: movs r0, 0x80 lsls r0, 2 ands r1, r0 cmp r1, 0 beq _08056384 movs r0, 0 movs r1, 0x4 bl dp01_build_cmdbuf_x0D_a ldrb r0, [r5] bl dp01_battle_side_mark_buffer_for_execution ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DBDCA b _08056694 .pool _08056384: ldr r0, =gUnknown_02024208 ldrh r0, [r0] cmp r0, 0x5 bne _080563B0 ldr r0, =gBattleStruct ldr r0, [r0] adds r0, 0x7C ldrb r0, [r0] lsls r1, r0, 2 adds r1, r0 lsls r0, r1, 8 subs r0, r1 movs r1, 0x64 bl __divsi3 lsls r0, 24 lsrs r5, r0, 24 b _080563C8 .pool _080563B0: ldr r3, =gBaseStats ldr r2, =gBattleMons ldrb r1, [r6] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r1, [r0] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r3 ldrb r5, [r0, 0x8] _080563C8: ldr r2, =gUnknown_02024208 ldrh r0, [r2] cmp r0, 0x5 bhi _080563D2 b _080564C8 _080563D2: subs r0, 0x6 cmp r0, 0x6 bls _080563DA b _080564D2 _080563DA: lsls r0, 2 ldr r1, =_080563F4 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _080563F4: .4byte _08056410 .4byte _08056440 .4byte _08056452 .4byte _08056480 .4byte _080564B0 .4byte _08056472 .4byte _08056472 _08056410: ldr r2, =gBattleMons ldr r0, =gBankTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r1, r0, 0 adds r1, 0x21 ldrb r1, [r1] cmp r1, 0xB beq _080564A4 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0xB beq _080564A4 cmp r1, 0x6 beq _080564A4 cmp r0, 0x6 beq _080564A4 b _08056472 .pool _08056440: bl sav1_map_get_light_level lsls r0, 24 lsrs r0, 24 movs r4, 0xA cmp r0, 0x5 bne _080564D2 movs r4, 0x23 b _080564D2 _08056452: ldr r2, =gBattleMons ldr r0, =gBankTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x2A ldrb r1, [r0] cmp r1, 0x27 bhi _08056472 movs r0, 0x28 subs r0, r1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x9 bhi _080564D2 _08056472: movs r4, 0xA b _080564D2 .pool _08056480: ldr r2, =gBattleMons ldr r0, =gBankTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r0, [r0] bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 movs r1, 0x1 bl pokedex_flag_operation lsls r0, 24 movs r4, 0xA cmp r0, 0 beq _080564D2 _080564A4: movs r4, 0x1E b _080564D2 .pool _080564B0: ldr r0, =gUnknown_03005D10 ldrb r0, [r0, 0x13] adds r0, 0xA lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x28 bls _080564D2 movs r4, 0x28 b _080564D2 .pool _080564C8: ldr r1, =gUnknown_0831C48D ldrh r0, [r2] subs r0, 0x2 adds r0, r1 ldrb r4, [r0] _080564D2: adds r0, r5, 0 muls r0, r4 movs r1, 0xA bl __divsi3 ldr r5, =gBattleMons ldr r1, =gBankTarget ldrb r2, [r1] movs r1, 0x58 adds r4, r2, 0 muls r4, r1 adds r3, r4, r5 ldrh r2, [r3, 0x2C] lsls r1, r2, 1 adds r1, r2 ldrh r2, [r3, 0x28] lsls r2, 1 subs r2, r1, r2 muls r0, r2 bl __divsi3 adds r6, r0, 0 adds r5, 0x4C adds r4, r5 ldr r4, [r4] movs r0, 0x27 ands r0, r4 cmp r0, 0 beq _0805650E lsls r6, 1 _0805650E: movs r0, 0xD8 ands r4, r0 cmp r4, 0 beq _08056522 lsls r0, r6, 4 subs r0, r6 movs r1, 0xA bl __udivsi3 adds r6, r0, 0 _08056522: ldr r1, =gUnknown_02024208 ldrh r0, [r1] cmp r0, 0x5 beq _08056564 cmp r0, 0x1 bne _08056550 ldr r0, =gUnknown_03005D10 ldrb r1, [r0, 0x5] movs r2, 0x2 orrs r1, r2 strb r1, [r0, 0x5] b _08056564 .pool _08056550: ldr r0, =gUnknown_03005D10 ldrh r1, [r1] adds r0, r1 adds r1, r0, 0 adds r1, 0x34 ldrb r0, [r1] cmp r0, 0xFE bhi _08056564 adds r0, 0x1 strb r0, [r1] _08056564: cmp r6, 0xFE bls _080565C8 movs r0, 0 movs r1, 0x4 bl dp01_build_cmdbuf_x0D_a ldr r0, =gActiveBank ldrb r0, [r0] bl dp01_battle_side_mark_buffer_for_execution ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DBD84 str r0, [r1] ldr r1, =gBattlePartyID ldr r0, =gBankTarget ldrb r0, [r0] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, =gEnemyParty adds r0, r1 ldr r2, =gUnknown_02024208 movs r1, 0x26 bl SetMonData bl calc_player_party_count lsls r0, 24 lsrs r0, 24 cmp r0, 0x6 beq _08056656 b _08056680 .pool _080565C8: movs r0, 0xFF lsls r0, 16 adds r1, r6, 0 bl __udivsi3 bl Sqrt lsls r0, 16 lsrs r0, 16 bl Sqrt lsls r0, 16 lsrs r6, r0, 16 ldr r0, =0x000ffff0 adds r1, r6, 0 bl __udivsi3 adds r6, r0, 0 movs r4, 0 b _080565FA .pool _080565F4: adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 _080565FA: cmp r4, 0x3 bhi _0805660A bl Random lsls r0, 16 lsrs r0, 16 cmp r0, r6 bcc _080565F4 _0805660A: ldr r5, =gUnknown_02024208 ldrh r0, [r5] cmp r0, 0x1 bne _08056614 movs r4, 0x4 _08056614: movs r0, 0 adds r1, r4, 0 bl dp01_build_cmdbuf_x0D_a ldr r0, =gActiveBank ldrb r0, [r0] bl dp01_battle_side_mark_buffer_for_execution cmp r4, 0x4 bne _0805668C ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DBD84 str r0, [r1] ldr r1, =gBattlePartyID ldr r0, =gBankTarget ldrb r0, [r0] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, =gEnemyParty adds r0, r1 movs r1, 0x26 adds r2, r5, 0 bl SetMonData bl calc_player_party_count lsls r0, 24 lsrs r0, 24 cmp r0, 0x6 bne _08056680 _08056656: ldr r1, =gBattleCommunication movs r0, 0 strb r0, [r1, 0x5] b _08056696 .pool _08056680: ldr r1, =gBattleCommunication movs r0, 0x1 strb r0, [r1, 0x5] b _08056696 .pool _0805668C: ldr r0, =gBattleCommunication strb r4, [r0, 0x5] ldr r1, =gBattlescriptCurrInstr ldr r0, =gUnknown_082DBDD4 _08056694: str r0, [r1] _08056696: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_8056300 thumb_func_start atkF0_catch_pokemon atkF0_catch_pokemon: @ 80566A8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} ldr r0, =gBattlePartyID mov r9, r0 ldr r5, =gBankAttacker ldrb r0, [r5] movs r6, 0x1 eors r0, r6 lsls r0, 1 add r0, r9 ldrh r0, [r0] movs r7, 0x64 muls r0, r7 ldr r1, =gEnemyParty mov r8, r1 add r0, r8 bl pokemon_catch lsls r0, 24 cmp r0, 0 beq _08056792 bl sub_813B21C lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 bne _08056734 ldr r0, =gBattleCommunication strb r1, [r0, 0x5] ldr r4, =gStringVar1 ldr r0, =0x00004036 bl VarGet lsls r0, 24 lsrs r0, 24 bl sav3_get_box_name adds r1, r0, 0 adds r0, r4, 0 bl StringCopy ldrb r0, [r5] eors r0, r6 lsls r0, 1 add r0, r9 ldrh r0, [r0] muls r0, r7 add r0, r8 ldr r2, =gStringVar2 movs r1, 0x2 bl GetMonData b _0805677E .pool _08056734: ldr r4, =gStringVar1 ldr r0, =0x00004036 bl VarGet lsls r0, 24 lsrs r0, 24 bl sav3_get_box_name adds r1, r0, 0 adds r0, r4, 0 bl StringCopy ldrb r0, [r5] eors r0, r6 lsls r0, 1 add r0, r9 ldrh r0, [r0] muls r0, r7 add r0, r8 ldr r2, =gStringVar2 movs r1, 0x2 bl GetMonData ldr r4, =gStringVar3 bl get_unknown_box_id lsls r0, 24 lsrs r0, 24 bl sav3_get_box_name adds r1, r0, 0 adds r0, r4, 0 bl StringCopy ldr r1, =gBattleCommunication movs r0, 0x2 strb r0, [r1, 0x5] _0805677E: ldr r0, =0x000008ab bl FlagGet lsls r0, 24 cmp r0, 0 beq _08056792 ldr r1, =gBattleCommunication ldrb r0, [r1, 0x5] adds r0, 0x1 strb r0, [r1, 0x5] _08056792: ldr r0, =gBattlePartyID mov r10, r0 ldr r1, =gBankAttacker mov r9, r1 ldrb r0, [r1] movs r4, 0x1 eors r0, r4 lsls r0, 1 add r0, r10 ldrh r0, [r0] movs r1, 0x64 mov r8, r1 mov r1, r8 muls r1, r0 adds r0, r1, 0 ldr r6, =gEnemyParty adds r0, r6 movs r1, 0xB movs r2, 0 bl GetMonData ldr r5, =gUnknown_03005D10 strh r0, [r5, 0x28] mov r1, r9 ldrb r0, [r1] eors r0, r4 lsls r0, 1 add r0, r10 ldrh r0, [r0] mov r1, r8 muls r1, r0 adds r0, r1, 0 adds r0, r6 adds r2, r5, 0 adds r2, 0x2A movs r1, 0x2 bl GetMonData mov r1, r9 ldrb r0, [r1] eors r4, r0 lsls r4, 1 add r4, r10 ldrh r0, [r4] mov r1, r8 muls r1, r0 adds r0, r1, 0 adds r0, r6 movs r1, 0x26 movs r2, 0 bl GetMonData movs r1, 0xF ands r0, r1 lsls r0, 2 ldrb r2, [r5, 0x5] movs r1, 0x3D negs r1, r1 ands r1, r2 orrs r1, r0 strb r1, [r5, 0x5] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atkF0_catch_pokemon thumb_func_start atkF1_802D95C atkF1_802D95C: @ 8056850 push {r4,r5,lr} ldr r4, =gEnemyParty adds r0, r4, 0 movs r1, 0xB movs r2, 0 bl GetMonData lsls r0, 16 lsrs r5, r0, 16 adds r0, r4, 0 movs r1, 0 movs r2, 0 bl GetMonData adds r4, r0, 0 adds r0, r5, 0 bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 movs r1, 0x1 bl pokedex_flag_operation lsls r0, 24 cmp r0, 0 beq _080568A8 ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _080568C2 .pool _080568A8: adds r0, r5, 0 bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 movs r1, 0x3 adds r2, r4, 0 bl SetPokedexFlag ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] _080568C2: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end atkF1_802D95C thumb_func_start sub_80568CC sub_80568CC: @ 80568CC push {r4,lr} sub sp, 0x4 ldr r0, =gEnemyParty movs r1, 0xB movs r2, 0 bl GetMonData lsls r0, 16 lsrs r4, r0, 16 ldr r0, =gBattleCommunication ldrb r0, [r0] cmp r0, 0x5 bls _080568E8 b _08056A2C _080568E8: lsls r0, 2 ldr r1, =_08056900 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _08056900: .4byte _08056918 .4byte _0805692A .4byte _08056978 .4byte _080569C8 .4byte _080569E0 .4byte _08056A18 _08056918: movs r0, 0x1 negs r0, r0 movs r1, 0 str r1, [sp] movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade b _08056A06 _0805692A: ldr r0, =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _08056938 b _08056A2C _08056938: bl FreeAllWindowBuffers adds r0, r4, 0 bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 ldr r3, =gBattleMons ldr r1, =gBankTarget ldrb r2, [r1] movs r1, 0x58 muls r2, r1 adds r1, r3, 0 adds r1, 0x54 adds r1, r2, r1 ldr r1, [r1] adds r3, 0x48 adds r2, r3 ldr r2, [r2] bl sub_80BFDF4 ldr r1, =gBattleCommunication strb r0, [r1, 0x1] b _08056A08 .pool _08056978: ldr r0, =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _08056A2C ldr r0, =gMain ldr r1, [r0, 0x4] ldr r0, =sub_8038420 cmp r1, r0 bne _08056A2C ldr r2, =gTasks ldr r4, =gBattleCommunication ldrb r1, [r4, 0x1] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r2 ldrb r0, [r0, 0x4] cmp r0, 0 bne _08056A2C ldr r0, =vblank_cb_08078BB4 bl SetVBlankCallback ldrb r0, [r4] adds r0, 0x1 strb r0, [r4] b _08056A2C .pool _080569C8: bl c2_berry_program_update_menu bl sub_8035AA4 ldr r1, =gUnknown_02022E20 movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 strh r0, [r1] b _08056A06 .pool _080569E0: bl IsDma3ManagerBusyWithBgCopy lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 bne _08056A2C ldr r0, =0x0000ffff str r1, [sp] movs r1, 0 movs r2, 0x10 movs r3, 0 bl BeginNormalPaletteFade movs r0, 0 bl ShowBg movs r0, 0x3 bl ShowBg _08056A06: ldr r1, =gBattleCommunication _08056A08: ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] b _08056A2C .pool _08056A18: ldr r0, =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _08056A2C ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] _08056A2C: add sp, 0x4 pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_80568CC thumb_func_start sub_8056A3C sub_8056A3C: @ 8056A3C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x20 ldr r4, [sp, 0x40] lsls r0, 24 lsrs r0, 24 mov r8, r0 lsls r1, 24 lsrs r1, 24 str r1, [sp, 0x10] lsls r2, 24 lsrs r2, 24 str r2, [sp, 0x1C] lsls r3, 24 lsrs r3, 24 str r3, [sp, 0x14] lsls r4, 24 lsrs r4, 24 mov r10, r4 movs r1, 0 add r0, sp, 0xC strh r1, [r0] ldr r6, [sp, 0x10] cmp r6, r3 ble _08056A76 b _08056B62 _08056A76: mov r4, r8 adds r0, r6, 0x1 str r0, [sp, 0x18] ldr r2, [sp, 0x1C] cmp r4, r2 bgt _08056B58 add r5, sp, 0xC lsls r7, r6, 24 mov r9, r7 _08056A88: ldr r0, [sp, 0x10] cmp r6, r0 bne _08056AB4 cmp r4, r8 bne _08056A9C ldr r0, =0x00001022 b _08056AFE .pool _08056A9C: ldr r2, [sp, 0x1C] cmp r4, r2 bne _08056AAC ldr r0, =0x00001024 b _08056AFE .pool _08056AAC: ldr r0, =0x00001023 b _08056AFE .pool _08056AB4: ldr r7, [sp, 0x14] cmp r6, r7 bne _08056AE0 cmp r4, r8 bne _08056AC8 ldr r0, =0x00001028 b _08056AFE .pool _08056AC8: ldr r0, [sp, 0x1C] cmp r4, r0 bne _08056AD8 ldr r0, =0x0000102a b _08056AFE .pool _08056AD8: ldr r0, =0x00001029 b _08056AFE .pool _08056AE0: cmp r4, r8 bne _08056AEC ldr r0, =0x00001025 b _08056AFE .pool _08056AEC: ldr r2, [sp, 0x1C] cmp r4, r2 bne _08056AFC ldr r0, =0x00001027 b _08056AFE .pool _08056AFC: ldr r0, =0x00001026 _08056AFE: strh r0, [r5] movs r1, 0x1 mov r0, r10 ands r0, r1 cmp r0, 0 beq _08056B0E movs r0, 0 strh r0, [r5] _08056B0E: movs r0, 0x80 mov r7, r10 ands r0, r7 cmp r0, 0 beq _08056B38 lsls r2, r4, 24 lsrs r2, 24 str r1, [sp] str r1, [sp, 0x4] movs r0, 0x11 str r0, [sp, 0x8] movs r0, 0x1 add r1, sp, 0xC mov r7, r9 lsrs r3, r7, 24 bl CopyToBgTilemapBufferRect_ChangePalette b _08056B50 .pool _08056B38: lsls r2, r4, 24 lsrs r2, 24 str r1, [sp] str r1, [sp, 0x4] movs r0, 0x11 str r0, [sp, 0x8] movs r0, 0 add r1, sp, 0xC mov r7, r9 lsrs r3, r7, 24 bl CopyToBgTilemapBufferRect_ChangePalette _08056B50: adds r4, 0x1 ldr r0, [sp, 0x1C] cmp r4, r0 ble _08056A88 _08056B58: ldr r6, [sp, 0x18] ldr r2, [sp, 0x14] cmp r6, r2 bgt _08056B62 b _08056A76 _08056B62: add sp, 0x20 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_8056A3C thumb_func_start sub_8056B74 sub_8056B74: @ 8056B74 push {lr} sub sp, 0x10 adds r3, r0, 0 add r0, sp, 0xC movs r2, 0x1 strh r2, [r0] movs r1, 0x2 strh r1, [r0, 0x2] lsls r3, 25 movs r0, 0x90 lsls r0, 20 adds r3, r0 lsrs r3, 24 str r2, [sp] str r1, [sp, 0x4] movs r0, 0x11 str r0, [sp, 0x8] movs r0, 0 add r1, sp, 0xC movs r2, 0x19 bl CopyToBgTilemapBufferRect_ChangePalette movs r0, 0 bl CopyBgTilemapBufferToVram add sp, 0x10 pop {r0} bx r0 thumb_func_end sub_8056B74 thumb_func_start sub_8056BAC sub_8056BAC: @ 8056BAC push {lr} sub sp, 0x10 adds r3, r0, 0 add r0, sp, 0xC ldr r1, =0x00001016 strh r1, [r0] strh r1, [r0, 0x2] lsls r3, 25 movs r0, 0x90 lsls r0, 20 adds r3, r0 lsrs r3, 24 movs r0, 0x1 str r0, [sp] movs r0, 0x2 str r0, [sp, 0x4] movs r0, 0x11 str r0, [sp, 0x8] movs r0, 0 add r1, sp, 0xC movs r2, 0x19 bl CopyToBgTilemapBufferRect_ChangePalette movs r0, 0 bl CopyBgTilemapBufferToVram add sp, 0x10 pop {r0} bx r0 .pool thumb_func_end sub_8056BAC thumb_func_start atkF3_receive_new_pokemon_maybe atkF3_receive_new_pokemon_maybe: @ 8056BEC push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 ldr r0, =gBattleCommunication ldrb r1, [r0] adds r4, r0, 0 cmp r1, 0x4 bls _08056C04 b _08056E62 _08056C04: lsls r0, r1, 2 ldr r1, =_08056C18 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _08056C18: .4byte _08056C2C .4byte _08056C60 .4byte _08056CFC .4byte _08056DD4 .4byte _08056E2C _08056C2C: movs r4, 0 str r4, [sp] movs r0, 0x18 movs r1, 0x8 movs r2, 0x1D movs r3, 0xD bl sub_8056A3C ldr r0, =gUnknown_085CCABB movs r1, 0xC bl battle_show_message_maybe ldr r1, =gBattleCommunication ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] strb r4, [r1, 0x1] movs r0, 0 bl sub_8056B74 b _08056E62 .pool _08056C60: ldr r0, =gMain ldrh r1, [r0, 0x2E] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _08056C86 ldrb r0, [r4, 0x1] cmp r0, 0 beq _08056C86 movs r0, 0x5 bl PlaySE ldrb r0, [r4, 0x1] bl sub_8056BAC movs r0, 0 strb r0, [r4, 0x1] bl sub_8056B74 _08056C86: ldr r0, =gMain ldrh r1, [r0, 0x2E] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _08056CAE ldr r4, =gBattleCommunication ldrb r0, [r4, 0x1] cmp r0, 0 bne _08056CAE movs r0, 0x5 bl PlaySE ldrb r0, [r4, 0x1] bl sub_8056BAC movs r0, 0x1 strb r0, [r4, 0x1] bl sub_8056B74 _08056CAE: ldr r0, =gMain ldrh r1, [r0, 0x2E] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _08056CE0 movs r0, 0x5 bl PlaySE ldr r1, =gBattleCommunication ldrb r0, [r1, 0x1] cmp r0, 0 bne _08056CF2 ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] movs r0, 0x3 bl BeginFastPaletteFade b _08056E62 .pool _08056CE0: movs r0, 0x2 ands r0, r1 cmp r0, 0 bne _08056CEA b _08056E62 _08056CEA: movs r0, 0x5 bl PlaySE ldr r1, =gBattleCommunication _08056CF2: movs r0, 0x4 strb r0, [r1] b _08056E62 .pool _08056CFC: ldr r0, =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _08056D0A b _08056E62 _08056D0A: ldr r7, =gBattlePartyID ldr r0, =gBankAttacker mov r10, r0 ldrb r0, [r0] movs r4, 0x1 eors r0, r4 lsls r0, 1 adds r0, r7 ldrh r0, [r0] movs r1, 0x64 mov r9, r1 mov r2, r9 muls r2, r0 adds r0, r2, 0 ldr r1, =gEnemyParty mov r8, r1 add r0, r8 ldr r1, =gBattleStruct ldr r2, [r1] adds r2, 0x6D movs r1, 0x2 bl GetMonData bl FreeAllWindowBuffers mov r2, r10 ldrb r0, [r2] eors r0, r4 lsls r0, 1 adds r0, r7 ldrh r0, [r0] mov r1, r9 muls r1, r0 adds r0, r1, 0 add r0, r8 movs r1, 0xB bl GetMonData adds r6, r0, 0 lsls r6, 16 lsrs r6, 16 mov r2, r10 ldrb r0, [r2] eors r0, r4 lsls r0, 1 adds r0, r7 ldrh r0, [r0] mov r1, r9 muls r1, r0 adds r0, r1, 0 add r0, r8 bl pokemon_get_gender adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 mov r2, r10 ldrb r0, [r2] eors r4, r0 lsls r4, 1 adds r4, r7 ldrh r0, [r4] mov r1, r9 muls r1, r0 adds r0, r1, 0 add r0, r8 movs r1, 0 movs r2, 0 bl GetMonData ldr r2, =gBattleStruct ldr r1, [r2] adds r1, 0x6D str r0, [sp] ldr r0, =sub_8038420 str r0, [sp, 0x4] movs r0, 0x2 adds r2, r6, 0 adds r3, r5, 0 bl do_choose_name_or_words_screen ldr r1, =gBattleCommunication ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] b _08056E62 .pool _08056DD4: ldr r0, =gMain ldr r1, [r0, 0x4] ldr r0, =sub_8038420 cmp r1, r0 bne _08056E62 ldr r0, =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _08056E62 ldr r2, =gBattlePartyID ldr r0, =gBankAttacker ldrb r1, [r0] movs r0, 0x1 eors r0, r1 lsls r0, 1 adds r0, r2 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, =gEnemyParty adds r0, r1 ldr r1, =gBattleStruct ldr r2, [r1] adds r2, 0x6D movs r1, 0x2 bl SetMonData b _08056E48 .pool _08056E2C: bl calc_player_party_count lsls r0, 24 lsrs r0, 24 cmp r0, 0x6 bne _08056E48 ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08056E62 .pool _08056E48: ldr r3, =gBattlescriptCurrInstr ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08056E62: add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end atkF3_receive_new_pokemon_maybe thumb_func_start sub_8056E78 sub_8056E78: @ 8056E78 ldr r2, =gBattleMons ldr r0, =gBankAttacker ldrb r1, [r0] movs r0, 0x58 muls r1, r0 adds r1, r2 ldr r0, =gBattleMoveDamage ldr r2, [r0] ldrh r0, [r1, 0x28] subs r0, r2 strh r0, [r1, 0x28] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] bx lr .pool thumb_func_end sub_8056E78 thumb_func_start atkF5_reset_attacker_bd_x4C atkF5_reset_attacker_bd_x4C: @ 8056EA8 ldr r1, =gBattleMons ldr r0, =gBankAttacker ldrb r2, [r0] movs r0, 0x58 muls r0, r2 adds r1, 0x4C adds r0, r1 movs r1, 0 str r1, [r0] ldr r1, =gBattlescriptCurrInstr ldr r0, [r1] adds r0, 0x1 str r0, [r1] bx lr .pool thumb_func_end atkF5_reset_attacker_bd_x4C thumb_func_start sub_8056ED0 sub_8056ED0: @ 8056ED0 ldr r1, =gFightStateTracker movs r0, 0xC strb r0, [r1] bx lr .pool thumb_func_end sub_8056ED0 thumb_func_start sub_8056EDC sub_8056EDC: @ 8056EDC ldr r1, =gFightStateTracker movs r0, 0xC strb r0, [r1] ldr r1, =gUnknown_02024082 ldr r0, =gNoOfAllBanks ldrb r0, [r0] strb r0, [r1] bx lr .pool thumb_func_end sub_8056EDC thumb_func_start sub_8056EF8 sub_8056EF8: @ 8056EF8 push {r4,r5,lr} ldr r5, =gBattlescriptCurrInstr ldr r0, [r5] ldrb r0, [r0, 0x1] bl GetBankByPlayerAI ldr r4, =gActiveBank strb r0, [r4] movs r0, 0 bl dp01_build_cmdbuf_x09_9_9_9 ldrb r0, [r4] bl dp01_battle_side_mark_buffer_for_execution ldr r0, [r5] adds r0, 0x2 str r0, [r5] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_8056EF8 .align 2, 0 @ Don't pad with nop.