.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start atk00_attackcanceler atk00_attackcanceler: @ 801D760 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x4 ldr r0, _0801D77C @ =gBattleOutcome ldrb r0, [r0] cmp r0, 0 beq _0801D784 ldr r1, _0801D780 @ =gUnknown_2023BE3 movs r0, 0xC strb r0, [r1] b _0801DAFC .align 2, 0 _0801D77C: .4byte gBattleOutcome _0801D780: .4byte gUnknown_2023BE3 _0801D784: ldr r2, _0801D7B4 @ =gBattleMons ldr r0, _0801D7B8 @ =sBattler_AI ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r0, [r0, 0x28] cmp r0, 0 bne _0801D7C8 ldr r2, _0801D7BC @ =gUnknown_2023DD0 ldr r1, [r2] movs r0, 0x80 lsls r0, 2 ands r0, r1 cmp r0, 0 bne _0801D7C8 movs r0, 0x80 lsls r0, 12 orrs r1, r0 str r1, [r2] ldr r1, _0801D7C0 @ =gUnknown_2023D74 ldr r0, _0801D7C4 @ =gUnknown_81D694E b _0801DAFA .align 2, 0 _0801D7B4: .4byte gBattleMons _0801D7B8: .4byte sBattler_AI _0801D7BC: .4byte gUnknown_2023DD0 _0801D7C0: .4byte gUnknown_2023D74 _0801D7C4: .4byte gUnknown_81D694E _0801D7C8: bl sub_80192D4 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0 beq _0801D7D6 b _0801DAFC _0801D7D6: ldr r0, _0801D844 @ =gBattlerTarget ldrb r1, [r0] str r2, [sp] movs r0, 0x2 movs r2, 0 movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 beq _0801D7EE b _0801DAFC _0801D7EE: ldr r4, _0801D848 @ =gBattleMons ldr r0, _0801D84C @ =gUnknown_2023D48 ldrb r1, [r0] ldr r3, _0801D850 @ =sBattler_AI ldrb r2, [r3] movs r0, 0x58 muls r2, r0 adds r1, r2 adds r0, r4, 0 adds r0, 0x24 adds r1, r0 ldrb r0, [r1] ldr r5, _0801D854 @ =gUnknown_2023DD0 cmp r0, 0 bne _0801D86C ldr r0, _0801D858 @ =gCurrentMove ldrh r0, [r0] cmp r0, 0xA5 beq _0801D86C ldr r0, [r5] ldr r1, _0801D85C @ =0x00800200 ands r0, r1 cmp r0, 0 bne _0801D86C adds r0, r4, 0 adds r0, 0x50 adds r0, r2, r0 ldr r0, [r0] movs r1, 0x80 lsls r1, 5 ands r0, r1 cmp r0, 0 bne _0801D86C ldr r1, _0801D860 @ =gUnknown_2023D74 ldr r0, _0801D864 @ =gUnknown_81D8EA8 str r0, [r1] ldr r2, _0801D868 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] b _0801DAFC .align 2, 0 _0801D844: .4byte gBattlerTarget _0801D848: .4byte gBattleMons _0801D84C: .4byte gUnknown_2023D48 _0801D850: .4byte sBattler_AI _0801D854: .4byte gUnknown_2023DD0 _0801D858: .4byte gCurrentMove _0801D85C: .4byte 0x00800200 _0801D860: .4byte gUnknown_2023D74 _0801D864: .4byte gUnknown_81D8EA8 _0801D868: .4byte gMoveResultFlags _0801D86C: ldr r0, [r5] ldr r1, _0801D8B0 @ =0xff7fffff ands r0, r1 str r0, [r5] movs r6, 0x80 lsls r6, 18 ands r0, r6 cmp r0, 0 bne _0801D8C4 ldrb r1, [r3] movs r0, 0x58 muls r0, r1 adds r1, r4, 0 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 5 ands r0, r1 cmp r0, 0 bne _0801D8C4 bl sub_801D438 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0 beq _0801D8C4 cmp r2, 0x2 bne _0801D8B4 ldr r0, [r5] orrs r0, r6 str r0, [r5] b _0801DAFC .align 2, 0 _0801D8B0: .4byte 0xff7fffff _0801D8B4: ldr r0, _0801D8C0 @ =gMoveResultFlags ldrb r1, [r0] movs r2, 0x1 orrs r1, r2 strb r1, [r0] b _0801DAFC .align 2, 0 _0801D8C0: .4byte gMoveResultFlags _0801D8C4: ldr r2, _0801D928 @ =gUnknown_2023DD0 ldr r0, [r2] movs r1, 0x80 lsls r1, 18 orrs r0, r1 str r0, [r2] ldr r2, _0801D92C @ =gUnknown_2023E8C ldr r1, _0801D930 @ =gBattlerTarget ldrb r3, [r1] lsls r0, r3, 4 adds r0, r2 ldrb r0, [r0] lsls r0, 27 mov r8, r1 mov r9, r2 cmp r0, 0 bge _0801D94C ldr r2, _0801D934 @ =gBattleMoves ldr r0, _0801D938 @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0, 0x8] movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _0801D94C ldr r0, _0801D93C @ =sBattler_AI ldrb r0, [r0] ldr r2, _0801D940 @ =0x00000115 adds r1, r3, 0 bl PressurePPLose mov r0, r8 ldrb r1, [r0] lsls r1, 4 add r1, r9 ldrb r2, [r1] movs r0, 0x11 negs r0, r0 ands r0, r2 strb r0, [r1] bl BattleScriptPushCursor ldr r1, _0801D944 @ =gUnknown_2023D74 ldr r0, _0801D948 @ =gUnknown_81D8FAA b _0801DAFA .align 2, 0 _0801D928: .4byte gUnknown_2023DD0 _0801D92C: .4byte gUnknown_2023E8C _0801D930: .4byte gBattlerTarget _0801D934: .4byte gBattleMoves _0801D938: .4byte gCurrentMove _0801D93C: .4byte sBattler_AI _0801D940: .4byte 0x00000115 _0801D944: .4byte gUnknown_2023D74 _0801D948: .4byte gUnknown_81D8FAA _0801D94C: movs r2, 0 ldr r0, _0801D9C8 @ =gBattlersCount ldrb r0, [r0] cmp r2, r0 bge _0801D98E ldr r6, _0801D9CC @ =gUnknown_2023E8C ldr r1, _0801D9D0 @ =gBattleMoves mov r12, r1 adds r5, r0, 0 ldr r7, _0801D9D4 @ =gUnknown_2023BDE _0801D960: adds r4, r2, r7 ldrb r3, [r4] lsls r0, r3, 4 adds r0, r6 ldrb r0, [r0] lsls r0, 26 cmp r0, 0 bge _0801D988 ldr r0, _0801D9D8 @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 add r0, r12 ldrb r1, [r0, 0x8] movs r0, 0x8 ands r0, r1 cmp r0, 0 beq _0801D988 b _0801DAB4 _0801D988: adds r2, 0x1 cmp r2, r5 blt _0801D960 _0801D98E: ldr r0, _0801D9DC @ =gUnknown_2023ECC mov r1, r8 ldrb r2, [r1] lsls r1, r2, 2 adds r1, r2 lsls r1, 2 adds r1, r0 ldrb r3, [r1] lsls r0, r3, 30 cmp r0, 0 bge _0801D9EC movs r0, 0x3 negs r0, r0 ands r0, r3 strb r0, [r1] ldr r4, _0801D9E0 @ =gLastUsedAbility movs r0, 0x1F strb r0, [r4] bl BattleScriptPushCursor ldr r1, _0801D9E4 @ =gUnknown_2023D74 ldr r0, _0801D9E8 @ =gUnknown_81D938D str r0, [r1] mov r1, r8 ldrb r0, [r1] ldrb r1, [r4] bl sub_80C71D0 b _0801DAFC .align 2, 0 _0801D9C8: .4byte gBattlersCount _0801D9CC: .4byte gUnknown_2023E8C _0801D9D0: .4byte gBattleMoves _0801D9D4: .4byte gUnknown_2023BDE _0801D9D8: .4byte gCurrentMove _0801D9DC: .4byte gUnknown_2023ECC _0801D9E0: .4byte gLastUsedAbility _0801D9E4: .4byte gUnknown_2023D74 _0801D9E8: .4byte gUnknown_81D938D _0801D9EC: lsls r0, r2, 4 add r0, r9 ldrb r0, [r0] lsls r0, 31 cmp r0, 0 bne _0801D9FA b _0801DAF4 _0801D9FA: ldr r1, _0801DA90 @ =gBattleMoves ldr r2, _0801DA94 @ =gCurrentMove ldrh r3, [r2] lsls r0, r3, 1 adds r0, r3 lsls r0, 2 adds r0, r1 ldrb r1, [r0, 0x8] movs r0, 0x2 ands r0, r1 adds r4, r2, 0 cmp r0, 0 beq _0801DAF4 cmp r3, 0xAE bne _0801DA38 ldr r2, _0801DA98 @ =gBattleMons ldr r0, _0801DA9C @ =sBattler_AI ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r1, r0, r2 adds r0, r1, 0 adds r0, 0x21 ldrb r0, [r0] cmp r0, 0x7 beq _0801DA38 adds r0, r1, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0x7 bne _0801DAF4 _0801DA38: ldrh r0, [r4] bl IsTwoTurnsMove lsls r0, 24 cmp r0, 0 beq _0801DA5E ldr r1, _0801DA98 @ =gBattleMons ldr r0, _0801DA9C @ =sBattler_AI ldrb r2, [r0] movs r0, 0x58 muls r0, r2 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 5 ands r0, r1 cmp r0, 0 beq _0801DAF4 _0801DA5E: ldr r0, _0801DA9C @ =sBattler_AI ldrb r0, [r0] bl CancelMultiTurnMoves ldr r2, _0801DAA0 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r1, _0801DAA4 @ =gUnknown_2023DA0 ldr r3, _0801DAA8 @ =gBattlerTarget ldrb r0, [r3] lsls r0, 1 adds r0, r1 movs r2, 0 strh r2, [r0] ldr r1, _0801DAAC @ =gUnknown_2023DA8 ldrb r0, [r3] lsls r0, 1 adds r0, r1 strh r2, [r0] ldr r1, _0801DAB0 @ =gUnknown_2023E82 movs r0, 0x1 strb r0, [r1, 0x6] b _0801DAF4 .align 2, 0 _0801DA90: .4byte gBattleMoves _0801DA94: .4byte gCurrentMove _0801DA98: .4byte gBattleMons _0801DA9C: .4byte sBattler_AI _0801DAA0: .4byte gMoveResultFlags _0801DAA4: .4byte gUnknown_2023DA0 _0801DAA8: .4byte gBattlerTarget _0801DAAC: .4byte gUnknown_2023DA8 _0801DAB0: .4byte gUnknown_2023E82 _0801DAB4: ldr r0, _0801DAE0 @ =sBattler_AI ldrb r0, [r0] ldr r2, _0801DAE4 @ =0x00000121 adds r1, r3, 0 bl PressurePPLose ldrb r1, [r4] lsls r1, 4 adds r1, r6 ldrb r2, [r1] movs r0, 0x21 negs r0, r0 ands r0, r2 strb r0, [r1] ldr r1, _0801DAE8 @ =gBattleScripting ldrb r0, [r4] strb r0, [r1, 0x17] bl BattleScriptPushCursor ldr r1, _0801DAEC @ =gUnknown_2023D74 ldr r0, _0801DAF0 @ =gUnknown_81D8FC2 b _0801DAFA .align 2, 0 _0801DAE0: .4byte sBattler_AI _0801DAE4: .4byte 0x00000121 _0801DAE8: .4byte gBattleScripting _0801DAEC: .4byte gUnknown_2023D74 _0801DAF0: .4byte gUnknown_81D8FC2 _0801DAF4: ldr r1, _0801DB0C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 _0801DAFA: str r0, [r1] _0801DAFC: add sp, 0x4 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0801DB0C: .4byte gUnknown_2023D74 thumb_func_end atk00_attackcanceler thumb_func_start JumpIfMoveFailed JumpIfMoveFailed: @ 801DB10 push {r4-r6,lr} sub sp, 0x4 lsls r0, 24 lsrs r0, 24 lsls r1, 16 lsrs r6, r1, 16 ldr r1, _0801DB5C @ =gUnknown_2023D74 ldr r5, [r1] adds r4, r5, r0 ldr r0, _0801DB60 @ =gMoveResultFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 beq _0801DB70 ldr r1, _0801DB64 @ =gUnknown_2023DA0 ldr r3, _0801DB68 @ =gBattlerTarget ldrb r0, [r3] lsls r0, 1 adds r0, r1 movs r2, 0 strh r2, [r0] ldr r1, _0801DB6C @ =gUnknown_2023DA8 ldrb r0, [r3] lsls r0, 1 adds r0, r1 strh r2, [r0] ldrb r4, [r5, 0x1] ldrb r0, [r5, 0x2] lsls r0, 8 orrs r4, r0 ldrb r0, [r5, 0x3] lsls r0, 16 orrs r4, r0 ldrb r0, [r5, 0x4] lsls r0, 24 orrs r4, r0 b _0801DB8A .align 2, 0 _0801DB5C: .4byte gUnknown_2023D74 _0801DB60: .4byte gMoveResultFlags _0801DB64: .4byte gUnknown_2023DA0 _0801DB68: .4byte gBattlerTarget _0801DB6C: .4byte gUnknown_2023DA8 _0801DB70: bl TrySetDestinyBondToHappen ldr r0, _0801DB98 @ =gBattlerTarget ldrb r1, [r0] str r6, [sp] movs r0, 0x3 movs r2, 0 movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 bne _0801DB8E _0801DB8A: ldr r0, _0801DB9C @ =gUnknown_2023D74 str r4, [r0] _0801DB8E: add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0801DB98: .4byte gBattlerTarget _0801DB9C: .4byte gUnknown_2023D74 thumb_func_end JumpIfMoveFailed thumb_func_start atk40_jumpifaffectedbyprotect atk40_jumpifaffectedbyprotect: @ 801DBA0 push {lr} ldr r1, _0801DBE8 @ =gUnknown_2023E8C ldr r0, _0801DBEC @ =gBattlerTarget ldrb r0, [r0] lsls r0, 4 adds r0, r1 ldrb r0, [r0] lsls r0, 31 cmp r0, 0 beq _0801DC00 ldr r2, _0801DBF0 @ =gBattleMoves ldr r0, _0801DBF4 @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0, 0x8] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0801DC00 ldr r2, _0801DBF8 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] movs r0, 0x5 movs r1, 0 bl JumpIfMoveFailed ldr r1, _0801DBFC @ =gUnknown_2023E82 movs r0, 0x1 strb r0, [r1, 0x6] b _0801DC08 .align 2, 0 _0801DBE8: .4byte gUnknown_2023E8C _0801DBEC: .4byte gBattlerTarget _0801DBF0: .4byte gBattleMoves _0801DBF4: .4byte gCurrentMove _0801DBF8: .4byte gMoveResultFlags _0801DBFC: .4byte gUnknown_2023E82 _0801DC00: ldr r1, _0801DC0C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0801DC08: pop {r0} bx r0 .align 2, 0 _0801DC0C: .4byte gUnknown_2023D74 thumb_func_end atk40_jumpifaffectedbyprotect thumb_func_start JumpIfMoveAffectedByProtect JumpIfMoveAffectedByProtect: @ 801DC10 push {r4,lr} lsls r0, 16 lsrs r3, r0, 16 movs r4, 0 ldr r1, _0801DC64 @ =gUnknown_2023E8C ldr r0, _0801DC68 @ =gBattlerTarget ldrb r0, [r0] lsls r0, 4 adds r0, r1 ldrb r0, [r0] lsls r0, 31 cmp r0, 0 beq _0801DC5C ldr r2, _0801DC6C @ =gBattleMoves ldr r0, _0801DC70 @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0, 0x8] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0801DC5C ldr r2, _0801DC74 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] movs r0, 0x7 adds r1, r3, 0 bl JumpIfMoveFailed ldr r1, _0801DC78 @ =gUnknown_2023E82 movs r0, 0x1 strb r0, [r1, 0x6] movs r4, 0x1 _0801DC5C: adds r0, r4, 0 pop {r4} pop {r1} bx r1 .align 2, 0 _0801DC64: .4byte gUnknown_2023E8C _0801DC68: .4byte gBattlerTarget _0801DC6C: .4byte gBattleMoves _0801DC70: .4byte gCurrentMove _0801DC74: .4byte gMoveResultFlags _0801DC78: .4byte gUnknown_2023E82 thumb_func_end JumpIfMoveAffectedByProtect thumb_func_start AccuracyCalcHelper AccuracyCalcHelper: @ 801DC7C push {r4-r6,lr} sub sp, 0x4 lsls r0, 16 lsrs r5, r0, 16 ldr r2, _0801DCDC @ =gStatuses3 ldr r3, _0801DCE0 @ =gBattlerTarget ldrb r4, [r3] lsls r0, r4, 2 adds r0, r2 ldr r1, [r0] movs r0, 0x18 ands r1, r0 adds r6, r2, 0 cmp r1, 0 beq _0801DCAE ldr r1, _0801DCE4 @ =gDisableStructs lsls r0, r4, 3 subs r0, r4 lsls r0, 2 adds r0, r1 ldr r1, _0801DCE8 @ =sBattler_AI ldrb r0, [r0, 0x15] ldrb r1, [r1] cmp r0, r1 beq _0801DD98 _0801DCAE: ldr r0, _0801DCEC @ =gUnknown_2023DD0 ldr r1, [r0] movs r2, 0x80 lsls r2, 9 ands r1, r2 adds r2, r0, 0 cmp r1, 0 bne _0801DCF4 ldrb r0, [r3] lsls r0, 2 adds r0, r6 ldr r0, [r0] movs r1, 0x40 ands r0, r1 cmp r0, 0 beq _0801DCF4 _0801DCCE: ldr r0, _0801DCF0 @ =gMoveResultFlags ldrb r1, [r0] movs r2, 0x1 orrs r1, r2 strb r1, [r0] b _0801DD98 .align 2, 0 _0801DCDC: .4byte gStatuses3 _0801DCE0: .4byte gBattlerTarget _0801DCE4: .4byte gDisableStructs _0801DCE8: .4byte sBattler_AI _0801DCEC: .4byte gUnknown_2023DD0 _0801DCF0: .4byte gMoveResultFlags _0801DCF4: ldr r0, [r2] ldr r1, _0801DDA4 @ =0xfffeffff ands r0, r1 str r0, [r2] movs r1, 0x80 lsls r1, 10 ands r0, r1 cmp r0, 0 bne _0801DD16 ldrb r0, [r3] lsls r0, 2 adds r0, r6 ldr r0, [r0] movs r1, 0x80 ands r0, r1 cmp r0, 0 bne _0801DCCE _0801DD16: ldr r0, [r2] ldr r1, _0801DDA8 @ =0xfffdffff ands r0, r1 str r0, [r2] movs r1, 0x80 lsls r1, 11 ands r0, r1 cmp r0, 0 bne _0801DD36 ldrb r0, [r3] lsls r0, 2 adds r0, r6 ldr r0, [r0] ands r0, r1 cmp r0, 0 bne _0801DCCE _0801DD36: ldr r0, [r2] ldr r1, _0801DDAC @ =0xfffbffff ands r0, r1 str r0, [r2] movs r0, 0 str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0xD movs r3, 0 bl AbilityBattleEffects lsls r0, 24 lsrs r0, 24 lsls r4, r5, 1 cmp r0, 0 bne _0801DD86 str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0x4D movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 bne _0801DD86 ldr r0, _0801DDB0 @ =gBattleWeather ldrh r1, [r0] movs r0, 0x7 ands r0, r1 cmp r0, 0 beq _0801DD86 ldr r0, _0801DDB4 @ =gBattleMoves adds r1, r4, r5 lsls r1, 2 adds r1, r0 ldrb r0, [r1] cmp r0, 0x98 beq _0801DD98 _0801DD86: ldr r1, _0801DDB4 @ =gBattleMoves adds r0, r4, r5 lsls r0, 2 adds r0, r1 ldrb r0, [r0] cmp r0, 0x11 beq _0801DD98 cmp r0, 0x4E bne _0801DDB8 _0801DD98: movs r0, 0x7 adds r1, r5, 0 bl JumpIfMoveFailed movs r0, 0x1 b _0801DDBA .align 2, 0 _0801DDA4: .4byte 0xfffeffff _0801DDA8: .4byte 0xfffdffff _0801DDAC: .4byte 0xfffbffff _0801DDB0: .4byte gBattleWeather _0801DDB4: .4byte gBattleMoves _0801DDB8: movs r0, 0 _0801DDBA: add sp, 0x4 pop {r4-r6} pop {r1} bx r1 thumb_func_end AccuracyCalcHelper thumb_func_start sub_801DDC4 sub_801DDC4: @ 801DDC4 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 ldr r0, _0801DE60 @ =gUnknown_2023D74 ldr r0, [r0] ldrb r6, [r0, 0x5] ldrb r0, [r0, 0x6] lsls r0, 8 orrs r6, r0 ldr r0, _0801DE64 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x10 ands r0, r1 cmp r0, 0 beq _0801DE48 movs r0, 0x1 bl sub_80EB2E0 lsls r0, 24 cmp r0, 0 bne _0801DE12 ldr r0, _0801DE68 @ =gBattleMoves lsls r1, r6, 1 adds r1, r6 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0x1] cmp r0, 0 beq _0801DE12 ldr r0, _0801DE6C @ =sBattler_AI ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _0801DE56 _0801DE12: ldr r0, _0801DE64 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x10 ands r0, r1 cmp r0, 0 beq _0801DE48 movs r0, 0x2 bl sub_80EB2E0 lsls r0, 24 cmp r0, 0 bne _0801DE48 ldr r0, _0801DE68 @ =gBattleMoves lsls r1, r6, 1 adds r1, r6 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0x1] cmp r0, 0 bne _0801DE48 ldr r0, _0801DE6C @ =sBattler_AI ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 beq _0801DE56 _0801DE48: ldr r0, _0801DE64 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x80 lsls r1, 9 ands r0, r1 cmp r0, 0 beq _0801DE70 _0801DE56: movs r0, 0x7 adds r1, r6, 0 bl JumpIfMoveFailed b _0801E1C2 .align 2, 0 _0801DE60: .4byte gUnknown_2023D74 _0801DE64: .4byte gBattleTypeFlags _0801DE68: .4byte gBattleMoves _0801DE6C: .4byte sBattler_AI _0801DE70: adds r0, r6, 0x2 lsls r0, 16 lsrs r0, 16 cmp r0, 0x1 bhi _0801DF0C ldr r2, _0801DED4 @ =gStatuses3 ldr r3, _0801DED8 @ =gBattlerTarget ldrb r4, [r3] lsls r0, r4, 2 adds r0, r2 ldr r1, [r0] movs r0, 0x18 ands r1, r0 cmp r1, 0 beq _0801DEA8 ldr r0, _0801DEDC @ =0x0000ffff cmp r6, r0 bne _0801DEA8 ldr r1, _0801DEE0 @ =gDisableStructs lsls r0, r4, 3 subs r0, r4 lsls r0, 2 adds r0, r1 ldr r1, _0801DEE4 @ =sBattler_AI ldrb r0, [r0, 0x15] ldrb r1, [r1] cmp r0, r1 beq _0801DEFE _0801DEA8: ldrb r0, [r3] lsls r0, 2 adds r0, r2 ldr r0, [r0] ldr r1, _0801DEE8 @ =0x000400c0 ands r0, r1 cmp r0, 0 beq _0801DEF0 ldr r3, _0801DEEC @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0801E1C2 .align 2, 0 _0801DED4: .4byte gStatuses3 _0801DED8: .4byte gBattlerTarget _0801DEDC: .4byte 0x0000ffff _0801DEE0: .4byte gDisableStructs _0801DEE4: .4byte sBattler_AI _0801DEE8: .4byte 0x000400c0 _0801DEEC: .4byte gUnknown_2023D74 _0801DEF0: movs r0, 0 bl JumpIfMoveAffectedByProtect lsls r0, 24 cmp r0, 0 beq _0801DEFE b _0801E1C2 _0801DEFE: ldr r1, _0801DF08 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x7 str r0, [r1] b _0801E1C2 .align 2, 0 _0801DF08: .4byte gUnknown_2023D74 _0801DF0C: cmp r6, 0 bne _0801DF14 ldr r0, _0801DF2C @ =gCurrentMove ldrh r6, [r0] _0801DF14: ldr r0, _0801DF30 @ =gBattleStruct ldr r0, [r0] ldrb r0, [r0, 0x13] cmp r0, 0 beq _0801DF34 movs r1, 0x3F mov r10, r1 mov r2, r10 ands r2, r0 mov r10, r2 b _0801DF42 .align 2, 0 _0801DF2C: .4byte gCurrentMove _0801DF30: .4byte gBattleStruct _0801DF34: ldr r1, _0801DF88 @ =gBattleMoves lsls r0, r6, 1 adds r0, r6 lsls r0, 2 adds r0, r1 ldrb r0, [r0, 0x2] mov r10, r0 _0801DF42: adds r0, r6, 0 bl JumpIfMoveAffectedByProtect lsls r0, 24 cmp r0, 0 beq _0801DF50 b _0801E1C2 _0801DF50: adds r0, r6, 0 bl AccuracyCalcHelper lsls r0, 24 cmp r0, 0 beq _0801DF5E b _0801E1C2 _0801DF5E: ldr r3, _0801DF8C @ =gBattleMons ldr r0, _0801DF90 @ =gBattlerTarget ldrb r0, [r0] movs r2, 0x58 adds r4, r0, 0 muls r4, r2 adds r0, r3, 0 adds r0, 0x50 adds r0, r4, r0 ldr r0, [r0] movs r1, 0x80 lsls r1, 22 ands r0, r1 cmp r0, 0 beq _0801DF98 ldr r0, _0801DF94 @ =sBattler_AI ldrb r0, [r0] muls r0, r2 adds r0, r3 ldrb r5, [r0, 0x1E] b _0801DFAE .align 2, 0 _0801DF88: .4byte gBattleMoves _0801DF8C: .4byte gBattleMons _0801DF90: .4byte gBattlerTarget _0801DF94: .4byte sBattler_AI _0801DF98: ldr r0, _0801E0FC @ =sBattler_AI ldrb r0, [r0] muls r0, r2 adds r0, r3 ldrb r0, [r0, 0x1E] adds r0, 0x6 adds r1, r4, r3 ldrb r1, [r1, 0x1F] subs r0, r1 lsls r0, 24 lsrs r5, r0, 24 _0801DFAE: lsls r0, r5, 24 cmp r0, 0 bge _0801DFB6 movs r5, 0 _0801DFB6: lsls r0, r5, 24 asrs r0, 24 cmp r0, 0xC ble _0801DFC0 movs r5, 0xC _0801DFC0: ldr r1, _0801E100 @ =gBattleMoves lsls r4, r6, 1 adds r0, r4, r6 lsls r0, 2 adds r7, r0, r1 ldrb r3, [r7, 0x3] mov r8, r3 movs r0, 0 str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0xD movs r3, 0 bl AbilityBattleEffects lsls r0, 24 lsrs r0, 24 str r4, [sp, 0x4] cmp r0, 0 bne _0801E012 str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0x4D movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 bne _0801E012 ldr r0, _0801E104 @ =gBattleWeather ldrh r1, [r0] movs r0, 0x60 ands r0, r1 cmp r0, 0 beq _0801E012 ldrb r0, [r7] cmp r0, 0x98 bne _0801E012 movs r0, 0x32 mov r8, r0 _0801E012: ldr r1, _0801E108 @ =gUnknown_82504FC lsls r0, r5, 24 asrs r0, 22 adds r0, r1 ldrb r1, [r0] mov r4, r8 muls r4, r1 ldrb r1, [r0, 0x1] adds r0, r4, 0 bl __divsi3 lsls r0, 16 lsrs r4, r0, 16 ldr r7, _0801E10C @ =gBattleMons ldr r0, _0801E0FC @ =sBattler_AI ldrb r0, [r0] movs r5, 0x58 muls r0, r5 adds r0, r7 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0xE bne _0801E050 lsls r0, r4, 6 adds r0, r4 lsls r0, 1 movs r1, 0x64 bl __divsi3 lsls r0, 16 lsrs r4, r0, 16 _0801E050: movs r0, 0 str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0xD movs r3, 0 bl AbilityBattleEffects lsls r0, 24 lsrs r0, 24 cmp r0, 0 bne _0801E0A8 str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0x4D movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 bne _0801E0A8 ldr r0, _0801E110 @ =gBattlerTarget ldrb r0, [r0] muls r0, r5 adds r0, r7 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x8 bne _0801E0A8 ldr r0, _0801E104 @ =gBattleWeather ldrh r1, [r0] movs r0, 0x18 ands r0, r1 cmp r0, 0 beq _0801E0A8 lsls r0, r4, 2 adds r0, r4 lsls r0, 4 movs r1, 0x64 bl __divsi3 lsls r0, 16 lsrs r4, r0, 16 _0801E0A8: ldr r2, _0801E10C @ =gBattleMons ldr r0, _0801E0FC @ =sBattler_AI ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x20 ldrb r0, [r0] mov r9, r2 cmp r0, 0x37 bne _0801E0D4 mov r1, r10 cmp r1, 0x8 bhi _0801E0D4 lsls r0, r4, 2 adds r0, r4 lsls r0, 4 movs r1, 0x64 bl __divsi3 lsls r0, 16 lsrs r4, r0, 16 _0801E0D4: ldr r2, _0801E110 @ =gBattlerTarget mov r8, r2 ldrb r2, [r2] movs r7, 0x58 adds r0, r2, 0 muls r0, r7 mov r3, r9 adds r1, r0, r3 ldrh r0, [r1, 0x2E] cmp r0, 0xAF bne _0801E118 ldr r1, _0801E114 @ =gEnigmaBerries lsls r0, r2, 3 subs r0, r2 lsls r0, 2 adds r0, r1 ldrb r5, [r0, 0x7] ldrb r2, [r0, 0x1A] b _0801E134 .align 2, 0 _0801E0FC: .4byte sBattler_AI _0801E100: .4byte gBattleMoves _0801E104: .4byte gBattleWeather _0801E108: .4byte gUnknown_82504FC _0801E10C: .4byte gBattleMons _0801E110: .4byte gBattlerTarget _0801E114: .4byte gEnigmaBerries _0801E118: ldrh r0, [r1, 0x2E] bl ItemId_GetHoldEffect lsls r0, 24 lsrs r5, r0, 24 mov r1, r8 ldrb r0, [r1] muls r0, r7 add r0, r9 ldrh r0, [r0, 0x2E] bl ItemId_GetHoldEffectParam lsls r0, 24 lsrs r2, r0, 24 _0801E134: ldr r0, _0801E198 @ =gPotentialItemEffectBattler ldr r1, _0801E19C @ =gBattlerTarget ldrb r1, [r1] strb r1, [r0] cmp r5, 0x16 bne _0801E150 movs r0, 0x64 subs r0, r2 muls r0, r4 movs r1, 0x64 bl __divsi3 lsls r0, 16 lsrs r4, r0, 16 _0801E150: bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x64 bl __umodsi3 lsls r0, 16 lsrs r0, 16 adds r0, 0x1 cmp r0, r4 ble _0801E1BA ldr r2, _0801E1A0 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r0, _0801E1A4 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _0801E1B0 ldr r1, _0801E1A8 @ =gBattleMoves ldr r2, [sp, 0x4] adds r0, r2, r6 lsls r0, 2 adds r0, r1 ldrb r0, [r0, 0x6] cmp r0, 0x8 beq _0801E192 cmp r0, 0x20 bne _0801E1B0 _0801E192: ldr r1, _0801E1AC @ =gUnknown_2023E82 movs r0, 0x2 b _0801E1B4 .align 2, 0 _0801E198: .4byte gPotentialItemEffectBattler _0801E19C: .4byte gBattlerTarget _0801E1A0: .4byte gMoveResultFlags _0801E1A4: .4byte gBattleTypeFlags _0801E1A8: .4byte gBattleMoves _0801E1AC: .4byte gUnknown_2023E82 _0801E1B0: ldr r1, _0801E1D4 @ =gUnknown_2023E82 movs r0, 0 _0801E1B4: strb r0, [r1, 0x6] bl CheckWonderGuardAndLevitate _0801E1BA: movs r0, 0x7 adds r1, r6, 0 bl JumpIfMoveFailed _0801E1C2: add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0801E1D4: .4byte gUnknown_2023E82 thumb_func_end sub_801DDC4 thumb_func_start atk02_attackstring atk02_attackstring: @ 801E1D8 push {r4,r5,lr} ldr r0, _0801E218 @ =gUnknown_2023BC8 ldr r5, [r0] cmp r5, 0 bne _0801E210 ldr r4, _0801E21C @ =gUnknown_2023DD0 ldr r0, [r4] movs r1, 0xC0 lsls r1, 3 ands r0, r1 cmp r0, 0 bne _0801E204 ldr r0, _0801E220 @ =sBattler_AI ldrb r1, [r0] movs r0, 0x4 bl PrepareStringBattle ldr r0, [r4] movs r1, 0x80 lsls r1, 3 orrs r0, r1 str r0, [r4] _0801E204: ldr r0, _0801E224 @ =gUnknown_2023D74 ldr r1, [r0] adds r1, 0x1 str r1, [r0] ldr r0, _0801E228 @ =gUnknown_2023E82 strb r5, [r0, 0x7] _0801E210: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0801E218: .4byte gUnknown_2023BC8 _0801E21C: .4byte gUnknown_2023DD0 _0801E220: .4byte sBattler_AI _0801E224: .4byte gUnknown_2023D74 _0801E228: .4byte gUnknown_2023E82 thumb_func_end atk02_attackstring thumb_func_start atk03_ppreduce atk03_ppreduce: @ 801E22C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 movs r6, 0x1 ldr r0, _0801E27C @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 beq _0801E244 b _0801E3DE _0801E244: ldr r1, _0801E280 @ =gUnknown_2023ECC ldr r2, _0801E284 @ =sBattler_AI ldrb r3, [r2] lsls r0, r3, 2 adds r0, r3 lsls r0, 2 adds r0, r1 ldrb r0, [r0] lsls r0, 26 lsrs r4, r0, 31 mov r9, r2 cmp r4, 0 bne _0801E2E6 ldr r2, _0801E288 @ =gBattleMoves ldr r0, _0801E28C @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x6] cmp r0, 0x20 beq _0801E296 cmp r0, 0x20 bgt _0801E290 cmp r0, 0x8 beq _0801E2AC b _0801E2C6 .align 2, 0 _0801E27C: .4byte gUnknown_2023BC8 _0801E280: .4byte gUnknown_2023ECC _0801E284: .4byte sBattler_AI _0801E288: .4byte gBattleMoves _0801E28C: .4byte gCurrentMove _0801E290: cmp r0, 0x40 beq _0801E2AC b _0801E2C6 _0801E296: str r4, [sp] movs r0, 0x12 adds r1, r3, 0 movs r2, 0x2E movs r3, 0 bl AbilityBattleEffects lsls r0, 24 lsrs r0, 24 adds r6, r0, 0x1 b _0801E2E6 _0801E2AC: mov r0, r9 ldrb r1, [r0] movs r0, 0 str r0, [sp] movs r0, 0x10 movs r2, 0x2E movs r3, 0 bl AbilityBattleEffects lsls r0, 24 lsrs r0, 24 adds r6, r0 b _0801E2E6 _0801E2C6: ldr r1, _0801E348 @ =gBattlerTarget mov r2, r9 ldrb r0, [r2] ldrb r7, [r1] cmp r0, r7 beq _0801E2E6 ldr r2, _0801E34C @ =gBattleMons ldrb r1, [r1] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x2E bne _0801E2E6 adds r6, 0x1 _0801E2E6: ldr r0, _0801E350 @ =gUnknown_2023DD0 ldr r4, [r0] movs r0, 0xA0 lsls r0, 4 ands r4, r0 cmp r4, 0 bne _0801E3CC ldr r2, _0801E34C @ =gBattleMons ldr r3, _0801E354 @ =gUnknown_2023D48 ldr r1, _0801E358 @ =sBattler_AI ldrb r5, [r1] movs r0, 0x58 mov r8, r0 mov r0, r8 muls r0, r5 ldrb r7, [r3] adds r0, r7 movs r7, 0x24 adds r7, r2 mov r12, r7 add r0, r12 ldrb r0, [r0] mov r9, r1 mov r10, r2 adds r7, r3, 0 cmp r0, 0 beq _0801E3CC ldr r0, _0801E35C @ =gUnknown_2023E8C lsls r1, r5, 4 adds r1, r0 ldrb r0, [r1, 0x2] movs r2, 0x8 orrs r0, r2 strb r0, [r1, 0x2] mov r1, r9 ldrb r0, [r1] mov r2, r8 muls r2, r0 adds r0, r2, 0 ldrb r1, [r7] adds r0, r1 mov r1, r12 adds r2, r0, r1 ldrb r0, [r2] cmp r0, r6 ble _0801E360 subs r0, r6 strb r0, [r2] b _0801E362 .align 2, 0 _0801E348: .4byte gBattlerTarget _0801E34C: .4byte gBattleMons _0801E350: .4byte gUnknown_2023DD0 _0801E354: .4byte gUnknown_2023D48 _0801E358: .4byte sBattler_AI _0801E35C: .4byte gUnknown_2023E8C _0801E360: strb r4, [r2] _0801E362: mov r2, r9 ldrb r3, [r2] movs r4, 0x58 adds r0, r3, 0 muls r0, r4 mov r1, r10 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 14 ands r0, r1 cmp r0, 0 bne _0801E3CC ldr r1, _0801E3F0 @ =gDisableStructs lsls r0, r3, 3 subs r0, r3 lsls r0, 2 adds r0, r1 ldrb r1, [r0, 0x18] lsrs r1, 4 ldr r2, _0801E3F4 @ =gBitTable ldrb r0, [r7] lsls r0, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _0801E3CC ldr r0, _0801E3F8 @ =gActiveBattler strb r3, [r0] ldrb r1, [r7] adds r1, 0x9 lsls r1, 24 lsrs r1, 24 mov r2, r9 ldrb r0, [r2] muls r0, r4 mov r2, r10 adds r2, 0x24 adds r0, r2 ldrb r7, [r7] adds r0, r7 str r0, [sp] movs r0, 0 movs r2, 0 movs r3, 0x1 bl EmitSetMonData mov r7, r9 ldrb r0, [r7] bl MarkBufferBankForExecution _0801E3CC: ldr r2, _0801E3FC @ =gUnknown_2023DD0 ldr r0, [r2] ldr r1, _0801E400 @ =0xfffff7ff ands r0, r1 str r0, [r2] ldr r1, _0801E404 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] _0801E3DE: add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0801E3F0: .4byte gDisableStructs _0801E3F4: .4byte gBitTable _0801E3F8: .4byte gActiveBattler _0801E3FC: .4byte gUnknown_2023DD0 _0801E400: .4byte 0xfffff7ff _0801E404: .4byte gUnknown_2023D74 thumb_func_end atk03_ppreduce thumb_func_start sub_801E408 sub_801E408: @ 801E408 push {r4-r7,lr} ldr r1, _0801E42C @ =gBattleMons ldr r0, _0801E430 @ =sBattler_AI ldrb r2, [r0] movs r0, 0x58 muls r0, r2 adds r0, r1 ldrh r0, [r0, 0x2E] cmp r0, 0xAF bne _0801E438 ldr r1, _0801E434 @ =gEnigmaBerries lsls r0, r2, 3 subs r0, r2 lsls r0, 2 adds r0, r1 ldrb r6, [r0, 0x7] b _0801E440 .align 2, 0 _0801E42C: .4byte gBattleMons _0801E430: .4byte sBattler_AI _0801E434: .4byte gEnigmaBerries _0801E438: bl ItemId_GetHoldEffect lsls r0, 24 lsrs r6, r0, 24 _0801E440: ldr r1, _0801E4CC @ =gPotentialItemEffectBattler ldr r3, _0801E4D0 @ =sBattler_AI ldrb r0, [r3] strb r0, [r1] ldr r4, _0801E4D4 @ =gBattleMons ldrb r1, [r3] movs r0, 0x58 adds r7, r1, 0 muls r7, r0 adds r0, r4, 0 adds r0, 0x50 adds r0, r7, r0 ldr r0, [r0] movs r1, 0x80 lsls r1, 13 ands r0, r1 negs r0, r0 asrs r5, r0, 31 movs r0, 0x2 ands r5, r0 ldr r2, _0801E4D8 @ =gBattleMoves ldr r0, _0801E4DC @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] mov r12, r3 cmp r1, 0x2B bne _0801E480 adds r5, 0x1 _0801E480: adds r0, r5, 0 cmp r1, 0x4B bne _0801E488 adds r0, 0x1 _0801E488: cmp r1, 0xC8 bne _0801E48E adds r0, 0x1 _0801E48E: adds r2, r0, 0 cmp r1, 0xD1 bne _0801E496 adds r2, 0x1 _0801E496: movs r1, 0 cmp r6, 0x3F bne _0801E4A6 adds r0, r7, r4 ldrh r0, [r0] cmp r0, 0x71 bne _0801E4A6 movs r1, 0x1 _0801E4A6: lsls r5, r1, 1 movs r3, 0 cmp r6, 0x42 bne _0801E4C0 mov r0, r12 ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r4 ldrh r0, [r0] cmp r0, 0x53 bne _0801E4C0 movs r3, 0x1 _0801E4C0: lsls r1, r3, 1 cmp r6, 0x29 bne _0801E4E0 adds r0, r5, 0x1 adds r0, r2, r0 b _0801E4E2 .align 2, 0 _0801E4CC: .4byte gPotentialItemEffectBattler _0801E4D0: .4byte sBattler_AI _0801E4D4: .4byte gBattleMons _0801E4D8: .4byte gBattleMoves _0801E4DC: .4byte gCurrentMove _0801E4E0: adds r0, r2, r5 _0801E4E2: adds r0, r1 lsls r0, 16 lsrs r0, 16 adds r5, r0, 0 cmp r5, 0x4 bls _0801E4F0 movs r5, 0x4 _0801E4F0: ldr r0, _0801E56C @ =gBattlerTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r4 adds r0, 0x20 ldrb r4, [r0] cmp r4, 0x4 beq _0801E580 cmp r4, 0x4B beq _0801E580 ldr r1, _0801E570 @ =gStatuses3 mov r2, r12 ldrb r0, [r2] lsls r0, 2 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 8 ands r0, r1 cmp r0, 0 bne _0801E580 ldr r4, _0801E574 @ =gBattleTypeFlags ldr r0, [r4] movs r1, 0x80 lsls r1, 2 ands r0, r1 cmp r0, 0 bne _0801E580 bl Random ldr r2, _0801E578 @ =gUnknown_8250530 lsls r1, r5, 1 adds r1, r2 lsls r0, 16 lsrs r0, 16 ldrh r1, [r1] bl __umodsi3 lsls r0, 16 cmp r0, 0 bne _0801E580 ldr r0, [r4] movs r1, 0x10 ands r0, r1 cmp r0, 0 beq _0801E55A movs r0, 0x1 bl sub_80EB2E0 lsls r0, 24 cmp r0, 0 beq _0801E580 _0801E55A: ldr r0, [r4] movs r1, 0x80 lsls r1, 9 ands r0, r1 cmp r0, 0 bne _0801E580 ldr r1, _0801E57C @ =gCritMultiplier movs r0, 0x2 b _0801E584 .align 2, 0 _0801E56C: .4byte gBattlerTarget _0801E570: .4byte gStatuses3 _0801E574: .4byte gBattleTypeFlags _0801E578: .4byte gUnknown_8250530 _0801E57C: .4byte gCritMultiplier _0801E580: ldr r1, _0801E594 @ =gCritMultiplier movs r0, 0x1 _0801E584: strb r0, [r1] ldr r1, _0801E598 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0801E594: .4byte gCritMultiplier _0801E598: .4byte gUnknown_2023D74 thumb_func_end sub_801E408 thumb_func_start atk05_damagecalc atk05_damagecalc: @ 801E59C push {r4-r7,lr} sub sp, 0x10 ldr r4, _0801E654 @ =gSideAffecting ldr r5, _0801E658 @ =gBattlerTarget ldrb r0, [r5] bl GetBattlerPosition movs r1, 0x1 ands r1, r0 lsls r1, 1 adds r1, r4 ldrh r3, [r1] ldr r6, _0801E65C @ =sBattler_AI ldrb r0, [r6] movs r4, 0x58 muls r0, r4 ldr r2, _0801E660 @ =gBattleMons adds r0, r2 ldrb r1, [r5] muls r1, r4 adds r1, r2 ldr r7, _0801E664 @ =gCurrentMove ldrh r2, [r7] ldr r4, _0801E668 @ =gDynamicBasePower ldrh r4, [r4] str r4, [sp] ldr r4, _0801E66C @ =gBattleStruct ldr r4, [r4] ldrb r4, [r4, 0x13] str r4, [sp, 0x4] ldrb r4, [r6] str r4, [sp, 0x8] ldrb r4, [r5] str r4, [sp, 0xC] bl CalculateBaseDamage ldr r4, _0801E670 @ =gBattleMoveDamage ldr r1, _0801E674 @ =gCritMultiplier ldrb r1, [r1] muls r1, r0 ldr r0, _0801E678 @ =gBattleScripting ldrb r0, [r0, 0xE] adds r3, r1, 0 muls r3, r0 str r3, [r4] ldr r1, _0801E67C @ =gStatuses3 ldrb r0, [r6] lsls r0, 2 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 2 ands r0, r1 cmp r0, 0 beq _0801E620 ldr r2, _0801E680 @ =gBattleMoves ldrh r1, [r7] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x2] cmp r0, 0xD bne _0801E620 lsls r0, r3, 1 str r0, [r4] _0801E620: ldr r1, _0801E684 @ =gUnknown_2023E8C ldr r0, _0801E65C @ =sBattler_AI ldrb r0, [r0] lsls r0, 4 adds r0, r1 ldrb r0, [r0] lsls r0, 28 cmp r0, 0 bge _0801E642 ldr r4, _0801E670 @ =gBattleMoveDamage ldr r1, [r4] lsls r0, r1, 4 subs r0, r1 movs r1, 0xA bl __divsi3 str r0, [r4] _0801E642: ldr r1, _0801E688 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] add sp, 0x10 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0801E654: .4byte gSideAffecting _0801E658: .4byte gBattlerTarget _0801E65C: .4byte sBattler_AI _0801E660: .4byte gBattleMons _0801E664: .4byte gCurrentMove _0801E668: .4byte gDynamicBasePower _0801E66C: .4byte gBattleStruct _0801E670: .4byte gBattleMoveDamage _0801E674: .4byte gCritMultiplier _0801E678: .4byte gBattleScripting _0801E67C: .4byte gStatuses3 _0801E680: .4byte gBattleMoves _0801E684: .4byte gUnknown_2023E8C _0801E688: .4byte gUnknown_2023D74 thumb_func_end atk05_damagecalc thumb_func_start AI_CalcDmg AI_CalcDmg: @ 801E68C push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x10 adds r5, r1, 0 lsls r0, 24 lsrs r7, r0, 24 lsls r5, 24 lsrs r5, 24 ldr r4, _0801E744 @ =gSideAffecting adds r0, r5, 0 bl GetBattlerPosition movs r1, 0x1 ands r1, r0 lsls r1, 1 adds r1, r4 ldrh r3, [r1] movs r1, 0x58 adds r0, r7, 0 muls r0, r1 ldr r2, _0801E748 @ =gBattleMons adds r0, r2 muls r1, r5 adds r1, r2 ldr r2, _0801E74C @ =gCurrentMove mov r8, r2 ldrh r2, [r2] ldr r6, _0801E750 @ =gDynamicBasePower ldrh r4, [r6] str r4, [sp] ldr r4, _0801E754 @ =gBattleStruct ldr r4, [r4] ldrb r4, [r4, 0x13] str r4, [sp, 0x4] str r7, [sp, 0x8] str r5, [sp, 0xC] bl CalculateBaseDamage ldr r4, _0801E758 @ =gBattleMoveDamage movs r1, 0 strh r1, [r6] ldr r1, _0801E75C @ =gCritMultiplier ldrb r1, [r1] muls r1, r0 ldr r0, _0801E760 @ =gBattleScripting ldrb r0, [r0, 0xE] adds r3, r1, 0 muls r3, r0 str r3, [r4] ldr r1, _0801E764 @ =gStatuses3 lsls r0, r7, 2 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 2 ands r0, r1 cmp r0, 0 beq _0801E71A ldr r2, _0801E768 @ =gBattleMoves mov r0, r8 ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x2] cmp r0, 0xD bne _0801E71A lsls r0, r3, 1 str r0, [r4] _0801E71A: ldr r0, _0801E76C @ =gUnknown_2023E8C lsls r1, r7, 4 adds r1, r0 ldrb r0, [r1] lsls r0, 28 cmp r0, 0 bge _0801E738 ldr r4, _0801E758 @ =gBattleMoveDamage ldr r1, [r4] lsls r0, r1, 4 subs r0, r1 movs r1, 0xA bl __divsi3 str r0, [r4] _0801E738: add sp, 0x10 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0801E744: .4byte gSideAffecting _0801E748: .4byte gBattleMons _0801E74C: .4byte gCurrentMove _0801E750: .4byte gDynamicBasePower _0801E754: .4byte gBattleStruct _0801E758: .4byte gBattleMoveDamage _0801E75C: .4byte gCritMultiplier _0801E760: .4byte gBattleScripting _0801E764: .4byte gStatuses3 _0801E768: .4byte gBattleMoves _0801E76C: .4byte gUnknown_2023E8C thumb_func_end AI_CalcDmg thumb_func_start ModulateDmgByType ModulateDmgByType: @ 801E770 push {r4,r5,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r5, _0801E7A0 @ =gBattleMoveDamage ldr r0, [r5] muls r0, r4 movs r1, 0xA bl __divsi3 str r0, [r5] cmp r0, 0 bne _0801E790 cmp r4, 0 beq _0801E790 movs r0, 0x1 str r0, [r5] _0801E790: cmp r4, 0x5 beq _0801E7C0 cmp r4, 0x5 bgt _0801E7A4 cmp r4, 0 beq _0801E7AA b _0801E842 .align 2, 0 _0801E7A0: .4byte gBattleMoveDamage _0801E7A4: cmp r4, 0x14 beq _0801E800 b _0801E842 _0801E7AA: ldr r2, _0801E7BC @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x8 orrs r0, r1 movs r1, 0xFB ands r0, r1 movs r1, 0xFD ands r0, r1 b _0801E840 .align 2, 0 _0801E7BC: .4byte gMoveResultFlags _0801E7C0: ldr r2, _0801E7F0 @ =gBattleMoves ldr r0, _0801E7F4 @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x1] cmp r0, 0 beq _0801E842 ldr r2, _0801E7F8 @ =gMoveResultFlags ldrb r1, [r2] movs r0, 0x29 ands r0, r1 cmp r0, 0 bne _0801E842 movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0801E7FC movs r0, 0xFD ands r0, r1 b _0801E840 .align 2, 0 _0801E7F0: .4byte gBattleMoves _0801E7F4: .4byte gCurrentMove _0801E7F8: .4byte gMoveResultFlags _0801E7FC: movs r0, 0x4 b _0801E83E _0801E800: ldr r2, _0801E830 @ =gBattleMoves ldr r0, _0801E834 @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x1] cmp r0, 0 beq _0801E842 ldr r2, _0801E838 @ =gMoveResultFlags ldrb r1, [r2] movs r0, 0x29 ands r0, r1 cmp r0, 0 bne _0801E842 movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _0801E83C movs r0, 0xFB ands r0, r1 b _0801E840 .align 2, 0 _0801E830: .4byte gBattleMoves _0801E834: .4byte gCurrentMove _0801E838: .4byte gMoveResultFlags _0801E83C: movs r0, 0x2 _0801E83E: orrs r0, r1 _0801E840: strb r0, [r2] _0801E842: pop {r4,r5} pop {r0} bx r0 thumb_func_end ModulateDmgByType thumb_func_start atk06_typecalc atk06_typecalc: @ 801E848 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x8 movs r3, 0 ldr r1, _0801E870 @ =gCurrentMove ldrh r0, [r1] cmp r0, 0xA5 bne _0801E85C b _0801EA70 _0801E85C: ldr r0, _0801E874 @ =gBattleStruct ldr r0, [r0] ldrb r0, [r0, 0x13] cmp r0, 0 beq _0801E878 movs r1, 0x3F mov r8, r1 ands r1, r0 mov r8, r1 b _0801E888 .align 2, 0 _0801E870: .4byte gCurrentMove _0801E874: .4byte gBattleStruct _0801E878: ldr r2, _0801E910 @ =gBattleMoves ldrh r1, [r1] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x2] mov r8, r0 _0801E888: ldr r2, _0801E914 @ =gBattleMons ldr r0, _0801E918 @ =sBattler_AI ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r1, r0, r2 adds r0, r1, 0 adds r0, 0x21 ldrb r0, [r0] adds r5, r2, 0 cmp r0, r8 beq _0801E8AA adds r0, r1, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, r8 bne _0801E8C0 _0801E8AA: ldr r4, _0801E91C @ =gBattleMoveDamage ldr r1, [r4] lsls r0, r1, 4 subs r0, r1 str r0, [r4] movs r1, 0xA str r3, [sp, 0x4] bl __divsi3 str r0, [r4] ldr r3, [sp, 0x4] _0801E8C0: ldr r2, _0801E920 @ =gBattlerTarget ldrb r1, [r2] movs r0, 0x58 muls r0, r1 adds r0, r5 adds r0, 0x20 ldrb r0, [r0] adds r4, r2, 0 cmp r0, 0x1A bne _0801E938 mov r1, r8 cmp r1, 0x4 bne _0801E938 ldr r3, _0801E924 @ =gLastUsedAbility strb r0, [r3] ldr r2, _0801E928 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x9 orrs r0, r1 strb r0, [r2] ldr r1, _0801E92C @ =gUnknown_2023DA0 ldrb r0, [r4] lsls r0, 1 adds r0, r1 movs r2, 0 strh r2, [r0] ldr r1, _0801E930 @ =gUnknown_2023DA8 ldrb r0, [r4] lsls r0, 1 adds r0, r1 strh r2, [r0] ldr r0, _0801E934 @ =gUnknown_2023E82 mov r1, r8 strb r1, [r0, 0x6] ldrb r0, [r4] ldrb r1, [r3] bl sub_80C71D0 b _0801E9D4 .align 2, 0 _0801E910: .4byte gBattleMoves _0801E914: .4byte gBattleMons _0801E918: .4byte sBattler_AI _0801E91C: .4byte gBattleMoveDamage _0801E920: .4byte gBattlerTarget _0801E924: .4byte gLastUsedAbility _0801E928: .4byte gMoveResultFlags _0801E92C: .4byte gUnknown_2023DA0 _0801E930: .4byte gUnknown_2023DA8 _0801E934: .4byte gUnknown_2023E82 _0801E938: ldr r1, _0801E944 @ =gUnknown_824F050 adds r0, r3, r1 ldrb r0, [r0] adds r2, r1, 0 b _0801E9B4 .align 2, 0 _0801E944: .4byte gUnknown_824F050 _0801E948: adds r3, 0x3 b _0801E9B0 _0801E94C: ldr r5, _0801EA84 @ =gUnknown_824F050 adds r0, r3, r5 ldrb r0, [r0] cmp r0, r8 bne _0801E9A8 adds r1, r3, 0x1 adds r1, r5 ldr r2, _0801EA88 @ =gBattleMons ldr r7, _0801EA8C @ =gBattlerTarget ldrb r0, [r7] movs r6, 0x58 muls r0, r6 adds r0, r2 adds r0, 0x21 ldrb r4, [r1] ldrb r0, [r0] cmp r4, r0 bne _0801E982 adds r0, r3, 0x2 adds r0, r5 ldrb r0, [r0] str r2, [sp] str r3, [sp, 0x4] bl ModulateDmgByType ldr r3, [sp, 0x4] ldr r2, [sp] _0801E982: ldrb r0, [r7] muls r0, r6 adds r0, r2 adds r1, r0, 0 adds r1, 0x22 ldrb r1, [r1] cmp r4, r1 bne _0801E9A8 adds r0, 0x21 ldrb r0, [r0] cmp r0, r4 beq _0801E9A8 adds r0, r3, 0x2 adds r0, r5 ldrb r0, [r0] str r3, [sp, 0x4] bl ModulateDmgByType ldr r3, [sp, 0x4] _0801E9A8: adds r3, 0x3 ldr r5, _0801EA88 @ =gBattleMons ldr r4, _0801EA8C @ =gBattlerTarget ldr r2, _0801EA84 @ =gUnknown_824F050 _0801E9B0: adds r0, r3, r2 ldrb r0, [r0] _0801E9B4: cmp r0, 0xFF beq _0801E9D4 cmp r0, 0xFE bne _0801E94C ldrb r1, [r4] movs r0, 0x58 muls r0, r1 adds r1, r5, 0 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 22 ands r0, r1 cmp r0, 0 beq _0801E948 _0801E9D4: ldr r2, _0801EA88 @ =gBattleMons ldr r5, _0801EA8C @ =gBattlerTarget ldrb r1, [r5] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x20 ldrb r6, [r0] cmp r6, 0x19 bne _0801EA52 ldr r0, _0801EA90 @ =sBattler_AI ldrb r0, [r0] ldr r7, _0801EA94 @ =gCurrentMove ldrh r1, [r7] bl AttacksThisTurn lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 bne _0801EA52 ldr r1, _0801EA98 @ =gMoveResultFlags mov r8, r1 ldrb r4, [r1] ands r0, r4 cmp r0, 0 beq _0801EA10 movs r0, 0x6 ands r0, r4 cmp r0, 0x6 bne _0801EA52 _0801EA10: ldr r2, _0801EA9C @ =gBattleMoves ldrh r1, [r7] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x1] cmp r0, 0 beq _0801EA52 ldr r3, _0801EAA0 @ =gLastUsedAbility strb r6, [r3] movs r0, 0x1 orrs r0, r4 mov r1, r8 strb r0, [r1] ldr r1, _0801EAA4 @ =gUnknown_2023DA0 ldrb r0, [r5] lsls r0, 1 adds r0, r1 movs r2, 0 strh r2, [r0] ldr r1, _0801EAA8 @ =gUnknown_2023DA8 ldrb r0, [r5] lsls r0, 1 adds r0, r1 strh r2, [r0] ldr r1, _0801EAAC @ =gUnknown_2023E82 movs r0, 0x3 strb r0, [r1, 0x6] ldrb r0, [r5] ldrb r1, [r3] bl sub_80C71D0 _0801EA52: ldr r0, _0801EA98 @ =gMoveResultFlags ldrb r1, [r0] movs r0, 0x8 ands r0, r1 cmp r0, 0 beq _0801EA70 ldr r2, _0801EAB0 @ =gUnknown_2023E8C ldr r0, _0801EA90 @ =sBattler_AI ldrb r1, [r0] lsls r1, 4 adds r1, r2 ldrb r0, [r1, 0x1] movs r2, 0x2 orrs r0, r2 strb r0, [r1, 0x1] _0801EA70: ldr r1, _0801EAB4 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] add sp, 0x8 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0801EA84: .4byte gUnknown_824F050 _0801EA88: .4byte gBattleMons _0801EA8C: .4byte gBattlerTarget _0801EA90: .4byte sBattler_AI _0801EA94: .4byte gCurrentMove _0801EA98: .4byte gMoveResultFlags _0801EA9C: .4byte gBattleMoves _0801EAA0: .4byte gLastUsedAbility _0801EAA4: .4byte gUnknown_2023DA0 _0801EAA8: .4byte gUnknown_2023DA8 _0801EAAC: .4byte gUnknown_2023E82 _0801EAB0: .4byte gUnknown_2023E8C _0801EAB4: .4byte gUnknown_2023D74 thumb_func_end atk06_typecalc thumb_func_start CheckWonderGuardAndLevitate CheckWonderGuardAndLevitate: @ 801EAB8 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} movs r6, 0 movs r5, 0 ldr r0, _0801EAF8 @ =gCurrentMove ldrh r1, [r0] mov r9, r0 cmp r1, 0xA5 bne _0801EAD0 b _0801ED18 _0801EAD0: ldr r2, _0801EAFC @ =gBattleMoves lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r1, r0, r2 ldrb r0, [r1, 0x1] cmp r0, 0 bne _0801EAE2 b _0801ED18 _0801EAE2: ldr r0, _0801EB00 @ =gBattleStruct ldr r0, [r0] ldrb r0, [r0, 0x13] cmp r0, 0 beq _0801EB04 movs r1, 0x3F mov r12, r1 mov r2, r12 ands r2, r0 mov r12, r2 b _0801EB08 .align 2, 0 _0801EAF8: .4byte gCurrentMove _0801EAFC: .4byte gBattleMoves _0801EB00: .4byte gBattleStruct _0801EB04: ldrb r1, [r1, 0x2] mov r12, r1 _0801EB08: ldr r2, _0801EB3C @ =gBattleMons ldr r3, _0801EB40 @ =gBattlerTarget ldrb r1, [r3] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x20 ldrb r1, [r0] adds r7, r2, 0 mov r8, r3 cmp r1, 0x1A bne _0801EB4C mov r0, r12 cmp r0, 0x4 bne _0801EB4C ldr r0, _0801EB44 @ =gLastUsedAbility strb r1, [r0] ldr r0, _0801EB48 @ =gUnknown_2023E82 mov r1, r12 strb r1, [r0, 0x6] ldrb r0, [r3] movs r1, 0x1A bl sub_80C71D0 b _0801ED18 .align 2, 0 _0801EB3C: .4byte gBattleMons _0801EB40: .4byte gBattlerTarget _0801EB44: .4byte gLastUsedAbility _0801EB48: .4byte gUnknown_2023E82 _0801EB4C: ldr r1, _0801EB58 @ =gUnknown_824F050 adds r0, r5, r1 ldrb r0, [r0] adds r4, r1, 0 b _0801EC9E .align 2, 0 _0801EB58: .4byte gUnknown_824F050 _0801EB5C: adds r0, r5, r4 ldrb r0, [r0] cmp r0, r12 beq _0801EB66 b _0801EC98 _0801EB66: adds r2, r5, 0x1 adds r3, r2, r4 mov r0, r8 ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r7 adds r0, 0x21 ldrb r1, [r3] adds r3, r2, 0 ldrb r0, [r0] cmp r1, r0 bne _0801EBA6 adds r0, r5, 0x2 adds r0, r4 ldrb r0, [r0] cmp r0, 0 bne _0801EBA6 ldr r2, _0801ED24 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x8 orrs r0, r1 strb r0, [r2] ldr r1, _0801ED28 @ =gUnknown_2023E8C ldr r0, _0801ED2C @ =sBattler_AI ldrb r2, [r0] lsls r2, 4 adds r2, r1 ldrb r0, [r2, 0x1] movs r1, 0x2 orrs r0, r1 strb r0, [r2, 0x1] _0801EBA6: adds r2, r3, r4 mov r0, r8 ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r7 adds r1, r0, 0 adds r1, 0x22 ldrb r2, [r2] ldrb r1, [r1] cmp r2, r1 bne _0801EBEC adds r0, 0x21 ldrb r0, [r0] cmp r0, r2 beq _0801EBEC adds r0, r5, 0x2 adds r0, r4 ldrb r0, [r0] cmp r0, 0 bne _0801EBEC ldr r2, _0801ED24 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x8 orrs r0, r1 strb r0, [r2] ldr r1, _0801ED28 @ =gUnknown_2023E8C ldr r0, _0801ED2C @ =sBattler_AI ldrb r2, [r0] lsls r2, 4 adds r2, r1 ldrb r0, [r2, 0x1] movs r1, 0x2 orrs r0, r1 strb r0, [r2, 0x1] _0801EBEC: adds r2, r3, r4 mov r0, r8 ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r7 adds r0, 0x21 ldrb r1, [r2] ldrb r0, [r0] cmp r1, r0 bne _0801EC10 adds r0, r5, 0x2 adds r0, r4 ldrb r0, [r0] cmp r0, 0x14 bne _0801EC10 movs r0, 0x1 orrs r6, r0 _0801EC10: adds r2, r3, r4 mov r0, r8 ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r7 adds r1, r0, 0 adds r1, 0x22 ldrb r2, [r2] ldrb r1, [r1] cmp r2, r1 bne _0801EC3E adds r0, 0x21 ldrb r0, [r0] cmp r0, r2 beq _0801EC3E adds r0, r5, 0x2 adds r0, r4 ldrb r0, [r0] cmp r0, 0x14 bne _0801EC3E movs r0, 0x1 orrs r6, r0 _0801EC3E: adds r2, r3, r4 mov r0, r8 ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r7 adds r0, 0x21 ldrb r1, [r2] ldrb r0, [r0] cmp r1, r0 bne _0801EC66 adds r0, r5, 0x2 adds r0, r4 ldrb r0, [r0] cmp r0, 0x5 bne _0801EC66 movs r0, 0x2 orrs r6, r0 lsls r0, r6, 24 lsrs r6, r0, 24 _0801EC66: adds r2, r3, r4 mov r0, r8 ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r7 adds r1, r0, 0 adds r1, 0x22 ldrb r2, [r2] ldrb r1, [r1] cmp r2, r1 bne _0801EC98 adds r0, 0x21 ldrb r0, [r0] cmp r0, r2 beq _0801EC98 adds r0, r5, 0x2 adds r0, r4 ldrb r0, [r0] cmp r0, 0x5 bne _0801EC98 movs r0, 0x2 orrs r6, r0 lsls r0, r6, 24 lsrs r6, r0, 24 _0801EC98: adds r5, 0x3 adds r0, r5, r4 ldrb r0, [r0] _0801EC9E: cmp r0, 0xFF beq _0801ECC2 cmp r0, 0xFE beq _0801ECA8 b _0801EB5C _0801ECA8: mov r2, r8 ldrb r1, [r2] movs r0, 0x58 muls r0, r1 adds r1, r7, 0 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 22 ands r0, r1 cmp r0, 0 beq _0801EC98 _0801ECC2: mov r0, r8 ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r7 adds r0, 0x20 ldrb r4, [r0] cmp r4, 0x19 bne _0801ED18 ldr r0, _0801ED2C @ =sBattler_AI ldrb r0, [r0] mov r2, r9 ldrh r1, [r2] bl AttacksThisTurn lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 bne _0801ED18 movs r0, 0x3 ands r6, r0 cmp r6, 0x1 beq _0801ED18 ldr r2, _0801ED30 @ =gBattleMoves mov r0, r9 ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x1] cmp r0, 0 beq _0801ED18 ldr r0, _0801ED34 @ =gLastUsedAbility strb r4, [r0] ldr r1, _0801ED38 @ =gUnknown_2023E82 movs r0, 0x3 strb r0, [r1, 0x6] mov r1, r8 ldrb r0, [r1] movs r1, 0x19 bl sub_80C71D0 _0801ED18: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0801ED24: .4byte gMoveResultFlags _0801ED28: .4byte gUnknown_2023E8C _0801ED2C: .4byte sBattler_AI _0801ED30: .4byte gBattleMoves _0801ED34: .4byte gLastUsedAbility _0801ED38: .4byte gUnknown_2023E82 thumb_func_end CheckWonderGuardAndLevitate thumb_func_start ModulateDmgByType2 ModulateDmgByType2: @ 801ED3C push {r4-r7,lr} adds r6, r2, 0 lsls r0, 24 lsrs r4, r0, 24 lsls r1, 16 lsrs r5, r1, 16 ldr r7, _0801ED70 @ =gBattleMoveDamage ldr r0, [r7] muls r0, r4 movs r1, 0xA bl __divsi3 str r0, [r7] cmp r0, 0 bne _0801ED62 cmp r4, 0 beq _0801ED62 movs r0, 0x1 str r0, [r7] _0801ED62: cmp r4, 0x5 beq _0801ED8A cmp r4, 0x5 bgt _0801ED74 cmp r4, 0 beq _0801ED7A b _0801EDEE .align 2, 0 _0801ED70: .4byte gBattleMoveDamage _0801ED74: cmp r4, 0x14 beq _0801EDBC b _0801EDEE _0801ED7A: ldrb r0, [r6] movs r1, 0x8 orrs r0, r1 movs r1, 0xFB ands r0, r1 movs r1, 0xFD ands r0, r1 b _0801EDEC _0801ED8A: ldr r0, _0801EDB4 @ =gBattleMoves lsls r1, r5, 1 adds r1, r5 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0x1] cmp r0, 0 beq _0801EDEE ldrb r1, [r6] movs r0, 0x29 ands r0, r1 cmp r0, 0 bne _0801EDEE movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0801EDB8 movs r0, 0xFD ands r0, r1 b _0801EDEC .align 2, 0 _0801EDB4: .4byte gBattleMoves _0801EDB8: movs r0, 0x4 b _0801EDEA _0801EDBC: ldr r0, _0801EDE4 @ =gBattleMoves lsls r1, r5, 1 adds r1, r5 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0x1] cmp r0, 0 beq _0801EDEE ldrb r1, [r6] movs r0, 0x29 ands r0, r1 cmp r0, 0 bne _0801EDEE movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _0801EDE8 movs r0, 0xFB ands r0, r1 b _0801EDEC .align 2, 0 _0801EDE4: .4byte gBattleMoves _0801EDE8: movs r0, 0x2 _0801EDEA: orrs r0, r1 _0801EDEC: strb r0, [r6] _0801EDEE: pop {r4-r7} pop {r0} bx r0 thumb_func_end ModulateDmgByType2 thumb_func_start TypeCalc TypeCalc: @ 801EDF4 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x10 lsls r0, 16 lsrs r0, 16 mov r10, r0 lsls r1, 24 lsrs r1, 24 str r1, [sp, 0x4] lsls r2, 24 lsrs r2, 24 mov r9, r2 movs r0, 0 mov r8, r0 mov r0, sp mov r1, r8 strb r1, [r0] mov r2, r10 cmp r2, 0xA5 bne _0801EE26 movs r0, 0 b _0801EFAE _0801EE26: ldr r1, _0801EE94 @ =gBattleMoves mov r3, r10 lsls r2, r3, 1 adds r0, r2, r3 lsls r0, 2 adds r0, r1 ldrb r0, [r0, 0x2] str r0, [sp, 0x8] ldr r1, _0801EE98 @ =gBattleMons movs r0, 0x58 ldr r3, [sp, 0x4] muls r0, r3 adds r3, r0, r1 adds r0, r3, 0 adds r0, 0x21 ldrb r0, [r0] str r2, [sp, 0xC] adds r5, r1, 0 ldr r1, [sp, 0x8] cmp r0, r1 beq _0801EE5A adds r0, r3, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, r1 bne _0801EE6C _0801EE5A: ldr r4, _0801EE9C @ =gBattleMoveDamage ldr r1, [r4] lsls r0, r1, 4 subs r0, r1 str r0, [r4] movs r1, 0xA bl __divsi3 str r0, [r4] _0801EE6C: movs r0, 0x58 mov r2, r9 muls r2, r0 adds r0, r2, 0 adds r0, r5 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x1A bne _0801EEA0 ldr r3, [sp, 0x8] cmp r3, 0x4 bne _0801EEA0 movs r1, 0x9 mov r0, sp ldrb r0, [r0] orrs r0, r1 mov r1, sp strb r0, [r1] b _0801EF50 .align 2, 0 _0801EE94: .4byte gBattleMoves _0801EE98: .4byte gBattleMons _0801EE9C: .4byte gBattleMoveDamage _0801EEA0: ldr r1, _0801EEBC @ =gUnknown_824F050 mov r2, r8 adds r0, r2, r1 ldrb r0, [r0] adds r2, r1, 0 cmp r0, 0xFF beq _0801EF50 cmp r0, 0xFE bne _0801EEC6 movs r0, 0x58 mov r3, r9 muls r3, r0 adds r0, r3, 0 b _0801EF3E .align 2, 0 _0801EEBC: .4byte gUnknown_824F050 _0801EEC0: movs r0, 0x3 add r8, r0 b _0801EF28 _0801EEC6: ldr r7, _0801EFC0 @ =gUnknown_824F050 mov r1, r8 adds r0, r1, r7 ldrb r0, [r0] ldr r2, [sp, 0x8] cmp r0, r2 bne _0801EF20 adds r1, 0x1 adds r1, r7 ldr r2, _0801EFC4 @ =gBattleMons movs r0, 0x58 mov r3, r9 muls r3, r0 adds r0, r3, 0 adds r5, r0, r2 adds r6, r5, 0 adds r6, 0x21 ldrb r4, [r1] ldrb r0, [r6] cmp r4, r0 bne _0801EF00 mov r0, r8 adds r0, 0x2 adds r0, r7 ldrb r0, [r0] mov r1, r10 mov r2, sp bl ModulateDmgByType2 _0801EF00: adds r0, r5, 0 adds r0, 0x22 ldrb r0, [r0] cmp r4, r0 bne _0801EF20 ldrb r0, [r6] cmp r0, r4 beq _0801EF20 mov r0, r8 adds r0, 0x2 adds r0, r7 ldrb r0, [r0] mov r1, r10 mov r2, sp bl ModulateDmgByType2 _0801EF20: movs r1, 0x3 add r8, r1 ldr r5, _0801EFC4 @ =gBattleMons ldr r2, _0801EFC0 @ =gUnknown_824F050 _0801EF28: mov r3, r8 adds r0, r3, r2 ldrb r0, [r0] cmp r0, 0xFF beq _0801EF50 cmp r0, 0xFE bne _0801EEC6 movs r0, 0x58 mov r1, r9 muls r1, r0 adds r0, r1, 0 _0801EF3E: adds r1, r5, 0 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 22 ands r0, r1 cmp r0, 0 beq _0801EEC0 _0801EF50: movs r0, 0x58 mov r2, r9 muls r2, r0 adds r0, r2, 0 adds r0, r5 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x19 bne _0801EFAA mov r0, sp ldrb r1, [r0] movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _0801EFAA ldr r0, [sp, 0x4] mov r1, r10 bl AttacksThisTurn lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x2 bne _0801EFAA mov r0, sp ldrb r3, [r0] adds r0, r1, 0 ands r0, r3 cmp r0, 0 beq _0801EF92 movs r0, 0x6 ands r0, r3 cmp r0, 0x6 bne _0801EFAA _0801EF92: ldr r0, _0801EFC8 @ =gBattleMoves ldr r1, [sp, 0xC] add r1, r10 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0x1] cmp r0, 0 beq _0801EFAA mov r0, sp movs r1, 0x1 orrs r1, r3 strb r1, [r0] _0801EFAA: mov r0, sp ldrb r0, [r0] _0801EFAE: add sp, 0x10 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0801EFC0: .4byte gUnknown_824F050 _0801EFC4: .4byte gBattleMons _0801EFC8: .4byte gBattleMoves thumb_func_end TypeCalc thumb_func_start AI_TypeCalc AI_TypeCalc: @ 801EFCC push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0xC lsls r0, 16 lsrs r6, r0, 16 lsls r1, 16 lsrs r1, 16 lsls r2, 24 lsrs r2, 24 str r2, [sp, 0x4] movs r7, 0 mov r0, sp strb r7, [r0] ldr r2, _0801F008 @ =gBaseStats lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0, 0x6] mov r9, r1 ldrb r0, [r0, 0x7] mov r8, r0 cmp r6, 0xA5 bne _0801F00C movs r0, 0 b _0801F0B0 .align 2, 0 _0801F008: .4byte gBaseStats _0801F00C: ldr r2, _0801F030 @ =gBattleMoves lsls r1, r6, 1 adds r0, r1, r6 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x2] mov r10, r0 str r1, [sp, 0x8] ldr r3, [sp, 0x4] cmp r3, 0x1A bne _0801F034 cmp r0, 0x4 bne _0801F034 movs r1, 0x9 mov r0, sp strb r1, [r0] b _0801F07A .align 2, 0 _0801F030: .4byte gBattleMoves _0801F034: ldr r0, _0801F0C0 @ =gUnknown_824F050 adds r1, r7, r0 ldrb r0, [r1] cmp r0, 0xFF beq _0801F07A adds r4, r1, 0 _0801F040: ldrb r0, [r4] cmp r0, 0xFE beq _0801F06C cmp r0, r10 bne _0801F06C ldrb r5, [r4, 0x1] cmp r5, r9 bne _0801F05A ldrb r0, [r4, 0x2] adds r1, r6, 0 mov r2, sp bl ModulateDmgByType2 _0801F05A: cmp r5, r8 bne _0801F06C cmp r9, r8 beq _0801F06C ldrb r0, [r4, 0x2] adds r1, r6, 0 mov r2, sp bl ModulateDmgByType2 _0801F06C: adds r4, 0x3 adds r7, 0x3 ldr r1, _0801F0C0 @ =gUnknown_824F050 adds r0, r7, r1 ldrb r0, [r0] cmp r0, 0xFF bne _0801F040 _0801F07A: ldr r3, [sp, 0x4] cmp r3, 0x19 bne _0801F0AC mov r0, sp ldrb r2, [r0] movs r0, 0x2 ands r0, r2 cmp r0, 0 beq _0801F094 movs r0, 0x6 ands r0, r2 cmp r0, 0x6 bne _0801F0AC _0801F094: ldr r0, _0801F0C4 @ =gBattleMoves ldr r3, [sp, 0x8] adds r1, r3, r6 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0x1] cmp r0, 0 beq _0801F0AC mov r0, sp movs r1, 0x8 orrs r1, r2 strb r1, [r0] _0801F0AC: mov r0, sp ldrb r0, [r0] _0801F0B0: add sp, 0xC pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0801F0C0: .4byte gUnknown_824F050 _0801F0C4: .4byte gBattleMoves thumb_func_end AI_TypeCalc thumb_func_start Unused_ApplyRandomDmgMultiplier Unused_ApplyRandomDmgMultiplier: @ 801F0C8 push {r4,lr} bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0xF ands r0, r1 movs r1, 0x64 subs r1, r0 lsls r1, 16 lsrs r1, 16 ldr r4, _0801F100 @ =gBattleMoveDamage ldr r0, [r4] cmp r0, 0 beq _0801F0FA muls r0, r1 str r0, [r4] movs r1, 0x64 bl __divsi3 str r0, [r4] cmp r0, 0 bne _0801F0FA movs r0, 0x1 str r0, [r4] _0801F0FA: pop {r4} pop {r0} bx r0 .align 2, 0 _0801F100: .4byte gBattleMoveDamage thumb_func_end Unused_ApplyRandomDmgMultiplier thumb_func_start atk07_adjustnormaldamage atk07_adjustnormaldamage: @ 801F104 push {r4-r7,lr} bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0xF ands r0, r1 movs r1, 0x64 subs r1, r0 lsls r1, 16 lsrs r1, 16 ldr r4, _0801F15C @ =gBattleMoveDamage ldr r0, [r4] cmp r0, 0 beq _0801F136 muls r0, r1 str r0, [r4] movs r1, 0x64 bl __divsi3 str r0, [r4] cmp r0, 0 bne _0801F136 movs r0, 0x1 str r0, [r4] _0801F136: ldr r7, _0801F160 @ =gBattleMons ldr r6, _0801F164 @ =gBattlerTarget ldrb r2, [r6] movs r5, 0x58 adds r0, r2, 0 muls r0, r5 adds r1, r0, r7 ldrh r0, [r1, 0x2E] cmp r0, 0xAF bne _0801F16C ldr r1, _0801F168 @ =gEnigmaBerries lsls r0, r2, 3 subs r0, r2 lsls r0, 2 adds r0, r1 ldrb r4, [r0, 0x7] ldrb r6, [r0, 0x1A] b _0801F186 .align 2, 0 _0801F15C: .4byte gBattleMoveDamage _0801F160: .4byte gBattleMons _0801F164: .4byte gBattlerTarget _0801F168: .4byte gEnigmaBerries _0801F16C: ldrh r0, [r1, 0x2E] bl ItemId_GetHoldEffect lsls r0, 24 lsrs r4, r0, 24 ldrb r0, [r6] muls r0, r5 adds r0, r7 ldrh r0, [r0, 0x2E] bl ItemId_GetHoldEffectParam lsls r0, 24 lsrs r6, r0, 24 _0801F186: ldr r1, _0801F248 @ =gPotentialItemEffectBattler ldr r5, _0801F24C @ =gBattlerTarget ldrb r0, [r5] strb r0, [r1] cmp r4, 0x27 bne _0801F1C4 bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x64 bl __umodsi3 lsls r0, 16 lsrs r0, 16 cmp r0, r6 bcs _0801F1C4 ldrb r0, [r5] movs r1, 0x27 bl sub_80C7208 ldr r2, _0801F250 @ =gUnknown_2023ECC ldrb r1, [r5] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r2, 0x80 orrs r1, r2 strb r1, [r0] _0801F1C4: ldr r2, _0801F254 @ =gBattleMons ldr r3, _0801F24C @ =gBattlerTarget ldrb r4, [r3] movs r0, 0x58 muls r0, r4 adds r1, r2, 0 adds r1, 0x50 adds r0, r1 ldr r1, [r0] movs r0, 0x80 lsls r0, 17 ands r1, r0 adds r5, r2, 0 cmp r1, 0 bne _0801F294 ldr r2, _0801F258 @ =gBattleMoves ldr r0, _0801F25C @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0] cmp r0, 0x65 beq _0801F216 ldr r0, _0801F260 @ =gUnknown_2023E8C lsls r1, r4, 4 adds r1, r0 ldrb r0, [r1] lsls r0, 30 cmp r0, 0 blt _0801F216 ldr r0, _0801F250 @ =gUnknown_2023ECC lsls r1, r4, 2 adds r1, r4 lsls r1, 2 adds r1, r0 ldrb r0, [r1] lsrs r0, 7 cmp r0, 0 beq _0801F294 _0801F216: ldrb r0, [r3] movs r4, 0x58 muls r0, r4 adds r0, r5 ldrh r1, [r0, 0x28] ldr r2, _0801F264 @ =gBattleMoveDamage ldr r0, [r2] cmp r1, r0 bgt _0801F294 subs r0, r1, 0x1 str r0, [r2] ldr r1, _0801F260 @ =gUnknown_2023E8C ldrb r3, [r3] lsls r0, r3, 4 adds r0, r1 ldrb r0, [r0] lsls r0, 30 cmp r0, 0 bge _0801F26C ldr r0, _0801F268 @ =gMoveResultFlags ldrb r1, [r0] movs r2, 0x40 orrs r1, r2 strb r1, [r0] b _0801F294 .align 2, 0 _0801F248: .4byte gPotentialItemEffectBattler _0801F24C: .4byte gBattlerTarget _0801F250: .4byte gUnknown_2023ECC _0801F254: .4byte gBattleMons _0801F258: .4byte gBattleMoves _0801F25C: .4byte gCurrentMove _0801F260: .4byte gUnknown_2023E8C _0801F264: .4byte gBattleMoveDamage _0801F268: .4byte gMoveResultFlags _0801F26C: ldr r0, _0801F2A4 @ =gUnknown_2023ECC lsls r1, r3, 2 adds r1, r3 lsls r1, 2 adds r1, r0 ldrb r0, [r1] lsrs r0, 7 cmp r0, 0 beq _0801F294 ldr r2, _0801F2A8 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x80 orrs r0, r1 strb r0, [r2] ldr r1, _0801F2AC @ =gUnknown_2023D68 adds r0, r3, 0 muls r0, r4 adds r0, r5 ldrh r0, [r0, 0x2E] strh r0, [r1] _0801F294: ldr r1, _0801F2B0 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0801F2A4: .4byte gUnknown_2023ECC _0801F2A8: .4byte gMoveResultFlags _0801F2AC: .4byte gUnknown_2023D68 _0801F2B0: .4byte gUnknown_2023D74 thumb_func_end atk07_adjustnormaldamage thumb_func_start atk08_adjustnormaldamage2 atk08_adjustnormaldamage2: @ 801F2B4 push {r4-r7,lr} bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0xF ands r0, r1 movs r1, 0x64 subs r1, r0 lsls r1, 16 lsrs r1, 16 ldr r4, _0801F30C @ =gBattleMoveDamage ldr r0, [r4] cmp r0, 0 beq _0801F2E6 muls r0, r1 str r0, [r4] movs r1, 0x64 bl __divsi3 str r0, [r4] cmp r0, 0 bne _0801F2E6 movs r0, 0x1 str r0, [r4] _0801F2E6: ldr r7, _0801F310 @ =gBattleMons ldr r6, _0801F314 @ =gBattlerTarget ldrb r2, [r6] movs r5, 0x58 adds r0, r2, 0 muls r0, r5 adds r1, r0, r7 ldrh r0, [r1, 0x2E] cmp r0, 0xAF bne _0801F31C ldr r1, _0801F318 @ =gEnigmaBerries lsls r0, r2, 3 subs r0, r2 lsls r0, 2 adds r0, r1 ldrb r4, [r0, 0x7] ldrb r6, [r0, 0x1A] b _0801F336 .align 2, 0 _0801F30C: .4byte gBattleMoveDamage _0801F310: .4byte gBattleMons _0801F314: .4byte gBattlerTarget _0801F318: .4byte gEnigmaBerries _0801F31C: ldrh r0, [r1, 0x2E] bl ItemId_GetHoldEffect lsls r0, 24 lsrs r4, r0, 24 ldrb r0, [r6] muls r0, r5 adds r0, r7 ldrh r0, [r0, 0x2E] bl ItemId_GetHoldEffectParam lsls r0, 24 lsrs r6, r0, 24 _0801F336: ldr r1, _0801F3DC @ =gPotentialItemEffectBattler ldr r5, _0801F3E0 @ =gBattlerTarget ldrb r0, [r5] strb r0, [r1] cmp r4, 0x27 bne _0801F374 bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x64 bl __umodsi3 lsls r0, 16 lsrs r0, 16 cmp r0, r6 bcs _0801F374 ldrb r0, [r5] movs r1, 0x27 bl sub_80C7208 ldr r2, _0801F3E4 @ =gUnknown_2023ECC ldrb r1, [r5] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r2, 0x80 orrs r1, r2 strb r1, [r0] _0801F374: ldr r4, _0801F3E8 @ =gBattleMons ldr r6, _0801F3E0 @ =gBattlerTarget ldrb r2, [r6] movs r7, 0x58 adds r3, r2, 0 muls r3, r7 adds r0, r4, 0 adds r0, 0x50 adds r0, r3, r0 ldr r0, [r0] movs r1, 0x80 lsls r1, 17 ands r0, r1 cmp r0, 0 bne _0801F420 ldr r5, _0801F3EC @ =gUnknown_2023E8C lsls r0, r2, 4 adds r0, r5 ldrb r0, [r0] lsls r0, 30 cmp r0, 0 blt _0801F3B2 ldr r0, _0801F3E4 @ =gUnknown_2023ECC lsls r1, r2, 2 adds r1, r2 lsls r1, 2 adds r1, r0 ldrb r0, [r1] lsrs r0, 7 cmp r0, 0 beq _0801F420 _0801F3B2: adds r0, r3, r4 ldrh r1, [r0, 0x28] ldr r2, _0801F3F0 @ =gBattleMoveDamage ldr r0, [r2] cmp r1, r0 bgt _0801F420 subs r0, r1, 0x1 str r0, [r2] ldrb r3, [r6] lsls r0, r3, 4 adds r0, r5 ldrb r0, [r0] lsls r0, 30 cmp r0, 0 bge _0801F3F8 ldr r0, _0801F3F4 @ =gMoveResultFlags ldrb r1, [r0] movs r2, 0x40 orrs r1, r2 strb r1, [r0] b _0801F420 .align 2, 0 _0801F3DC: .4byte gPotentialItemEffectBattler _0801F3E0: .4byte gBattlerTarget _0801F3E4: .4byte gUnknown_2023ECC _0801F3E8: .4byte gBattleMons _0801F3EC: .4byte gUnknown_2023E8C _0801F3F0: .4byte gBattleMoveDamage _0801F3F4: .4byte gMoveResultFlags _0801F3F8: ldr r0, _0801F430 @ =gUnknown_2023ECC lsls r1, r3, 2 adds r1, r3 lsls r1, 2 adds r1, r0 ldrb r0, [r1] lsrs r0, 7 cmp r0, 0 beq _0801F420 ldr r2, _0801F434 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x80 orrs r0, r1 strb r0, [r2] ldr r1, _0801F438 @ =gUnknown_2023D68 adds r0, r3, 0 muls r0, r7 adds r0, r4 ldrh r0, [r0, 0x2E] strh r0, [r1] _0801F420: ldr r1, _0801F43C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0801F430: .4byte gUnknown_2023ECC _0801F434: .4byte gMoveResultFlags _0801F438: .4byte gUnknown_2023D68 _0801F43C: .4byte gUnknown_2023D74 thumb_func_end atk08_adjustnormaldamage2 thumb_func_start atk09_attackanimation atk09_attackanimation: @ 801F440 push {r4-r6,lr} mov r6, r8 push {r6} sub sp, 0xC ldr r0, _0801F488 @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 beq _0801F452 b _0801F572 _0801F452: ldr r0, _0801F48C @ =gUnknown_2023DD0 ldr r0, [r0] movs r1, 0x80 ands r0, r1 ldr r3, _0801F490 @ =gCurrentMove cmp r0, 0 beq _0801F4A0 ldrh r0, [r3] cmp r0, 0x90 beq _0801F4A0 cmp r0, 0xA4 beq _0801F4A0 ldr r4, _0801F494 @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _0801F498 @ =gUnknown_81D89F1 str r0, [r4] ldr r1, _0801F49C @ =gBattleScripting ldrb r0, [r1, 0x18] adds r0, 0x1 strb r0, [r1, 0x18] ldrb r0, [r1, 0x19] adds r0, 0x1 strb r0, [r1, 0x19] b _0801F572 .align 2, 0 _0801F488: .4byte gUnknown_2023BC8 _0801F48C: .4byte gUnknown_2023DD0 _0801F490: .4byte gCurrentMove _0801F494: .4byte gUnknown_2023D74 _0801F498: .4byte gUnknown_81D89F1 _0801F49C: .4byte gBattleScripting _0801F4A0: ldr r2, _0801F53C @ =gBattleMoves ldrh r1, [r3] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0, 0x6] movs r0, 0x8 ands r0, r1 cmp r0, 0 bne _0801F4C6 movs r0, 0x20 ands r0, r1 cmp r0, 0 bne _0801F4C6 movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0801F4CE _0801F4C6: ldr r0, _0801F540 @ =gBattleScripting ldrb r0, [r0, 0x19] cmp r0, 0 bne _0801F530 _0801F4CE: ldr r0, _0801F544 @ =gMoveResultFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 bne _0801F564 ldr r1, _0801F548 @ =gActiveBattler ldr r0, _0801F54C @ =sBattler_AI mov r8, r0 ldrb r0, [r0] strb r0, [r1] ldrh r1, [r3] ldr r6, _0801F540 @ =gBattleScripting ldrb r2, [r6, 0x18] ldr r0, _0801F550 @ =gBattleMovePower ldrh r3, [r0] ldr r0, _0801F554 @ =gBattleMoveDamage ldr r0, [r0] str r0, [sp] ldr r5, _0801F558 @ =gBattleMons mov r0, r8 ldrb r4, [r0] movs r0, 0x58 muls r0, r4 adds r0, r5 adds r0, 0x2B ldrb r0, [r0] str r0, [sp, 0x4] mov r0, r8 ldrb r4, [r0] lsls r0, r4, 3 subs r0, r4 lsls r0, 2 ldr r4, _0801F55C @ =gDisableStructs adds r0, r4 str r0, [sp, 0x8] movs r0, 0 bl EmitMoveAnimation ldrb r0, [r6, 0x18] adds r0, 0x1 strb r0, [r6, 0x18] ldrb r0, [r6, 0x19] adds r0, 0x1 strb r0, [r6, 0x19] mov r1, r8 ldrb r0, [r1] bl MarkBufferBankForExecution _0801F530: ldr r1, _0801F560 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] b _0801F572 .align 2, 0 _0801F53C: .4byte gBattleMoves _0801F540: .4byte gBattleScripting _0801F544: .4byte gMoveResultFlags _0801F548: .4byte gActiveBattler _0801F54C: .4byte sBattler_AI _0801F550: .4byte gBattleMovePower _0801F554: .4byte gBattleMoveDamage _0801F558: .4byte gBattleMons _0801F55C: .4byte gDisableStructs _0801F560: .4byte gUnknown_2023D74 _0801F564: ldr r4, _0801F580 @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _0801F584 @ =gUnknown_81D89F1 str r0, [r4] _0801F572: add sp, 0xC pop {r3} mov r8, r3 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0801F580: .4byte gUnknown_2023D74 _0801F584: .4byte gUnknown_81D89F1 thumb_func_end atk09_attackanimation thumb_func_start sub_801F588 sub_801F588: @ 801F588 push {lr} ldr r0, _0801F5A0 @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 bne _0801F59A ldr r1, _0801F5A4 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] _0801F59A: pop {r0} bx r0 .align 2, 0 _0801F5A0: .4byte gUnknown_2023BC8 _0801F5A4: .4byte gUnknown_2023D74 thumb_func_end sub_801F588 thumb_func_start atk0B_healthbarupdate atk0B_healthbarupdate: @ 801F5A8 push {r4,lr} ldr r0, _0801F60C @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 bne _0801F66A ldr r0, _0801F610 @ =gMoveResultFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 bne _0801F662 ldr r0, _0801F614 @ =gUnknown_2023D74 ldr r0, [r0] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r2, _0801F618 @ =gActiveBattler strb r0, [r2] ldr r1, _0801F61C @ =gBattleMons ldrb r2, [r2] movs r0, 0x58 muls r0, r2 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 17 ands r0, r1 cmp r0, 0 beq _0801F628 ldr r0, _0801F620 @ =gDisableStructs lsls r1, r2, 3 subs r1, r2 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0xA] cmp r0, 0 beq _0801F628 ldr r0, _0801F624 @ =gUnknown_2023DD0 ldr r0, [r0] movs r1, 0x80 lsls r1, 1 ands r0, r1 cmp r0, 0 bne _0801F628 movs r0, 0x80 adds r1, r2, 0 bl PrepareStringBattle b _0801F662 .align 2, 0 _0801F60C: .4byte gUnknown_2023BC8 _0801F610: .4byte gMoveResultFlags _0801F614: .4byte gUnknown_2023D74 _0801F618: .4byte gActiveBattler _0801F61C: .4byte gBattleMons _0801F620: .4byte gDisableStructs _0801F624: .4byte gUnknown_2023DD0 _0801F628: ldr r0, _0801F670 @ =gBattleMoveDamage ldr r0, [r0] ldr r1, _0801F674 @ =0x00002710 cmp r0, r1 bgt _0801F636 lsls r0, 16 lsrs r1, r0, 16 _0801F636: movs r0, 0 bl EmitHealthBarUpdate ldr r4, _0801F678 @ =gActiveBattler ldrb r0, [r4] bl MarkBufferBankForExecution ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _0801F662 ldr r0, _0801F670 @ =gBattleMoveDamage ldr r0, [r0] cmp r0, 0 ble _0801F662 ldr r0, _0801F67C @ =gBattleResults ldrb r1, [r0, 0x5] movs r2, 0x1 orrs r1, r2 strb r1, [r0, 0x5] _0801F662: ldr r1, _0801F680 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x2 str r0, [r1] _0801F66A: pop {r4} pop {r0} bx r0 .align 2, 0 _0801F670: .4byte gBattleMoveDamage _0801F674: .4byte 0x00002710 _0801F678: .4byte gActiveBattler _0801F67C: .4byte gBattleResults _0801F680: .4byte gUnknown_2023D74 thumb_func_end atk0B_healthbarupdate thumb_func_start atk0C_datahpupdate atk0C_datahpupdate: @ 801F684 push {r4-r7,lr} sub sp, 0x4 ldr r0, _0801F6AC @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 beq _0801F692 b _0801FA62 _0801F692: ldr r0, _0801F6B0 @ =gBattleStruct ldr r0, [r0] ldrb r1, [r0, 0x13] cmp r1, 0 beq _0801F6B4 movs r0, 0x40 ands r0, r1 cmp r0, 0 bne _0801F6B4 movs r6, 0x3F ands r6, r1 b _0801F6C4 .align 2, 0 _0801F6AC: .4byte gUnknown_2023BC8 _0801F6B0: .4byte gBattleStruct _0801F6B4: ldr r2, _0801F750 @ =gBattleMoves ldr r0, _0801F754 @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r6, [r0, 0x2] _0801F6C4: ldr r0, _0801F758 @ =gMoveResultFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 beq _0801F6D2 b _0801FA34 _0801F6D2: ldr r0, _0801F75C @ =gUnknown_2023D74 ldr r0, [r0] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r7, _0801F760 @ =gActiveBattler strb r0, [r7] ldr r1, _0801F764 @ =gBattleMons ldrb r2, [r7] movs r0, 0x58 muls r0, r2 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 17 ands r0, r1 cmp r0, 0 beq _0801F7E8 ldr r0, _0801F768 @ =gDisableStructs lsls r1, r2, 3 subs r1, r2 lsls r1, 2 adds r4, r1, r0 ldrb r1, [r4, 0xA] mov r12, r0 cmp r1, 0 beq _0801F7E8 ldr r0, _0801F76C @ =gUnknown_2023DD0 ldr r3, [r0] movs r0, 0x80 lsls r0, 1 ands r3, r0 cmp r3, 0 bne _0801F7E8 adds r5, r1, 0 ldr r6, _0801F770 @ =gBattleMoveDamage ldr r4, [r6] cmp r5, r4 blt _0801F77C ldr r0, _0801F774 @ =gUnknown_2023ECC lsls r1, r2, 2 adds r1, r2 lsls r1, 2 adds r0, 0x4 adds r1, r0 ldr r0, [r1] cmp r0, 0 bne _0801F736 str r4, [r1] _0801F736: ldrb r0, [r7] lsls r1, r0, 3 subs r1, r0 lsls r1, 2 add r1, r12 ldr r2, [r6] ldrb r0, [r1, 0xA] subs r0, r2 strb r0, [r1, 0xA] ldr r1, _0801F778 @ =gUnknown_2023D54 ldr r0, [r6] str r0, [r1] b _0801F7AC .align 2, 0 _0801F750: .4byte gBattleMoves _0801F754: .4byte gCurrentMove _0801F758: .4byte gMoveResultFlags _0801F75C: .4byte gUnknown_2023D74 _0801F760: .4byte gActiveBattler _0801F764: .4byte gBattleMons _0801F768: .4byte gDisableStructs _0801F76C: .4byte gUnknown_2023DD0 _0801F770: .4byte gBattleMoveDamage _0801F774: .4byte gUnknown_2023ECC _0801F778: .4byte gUnknown_2023D54 _0801F77C: ldr r0, _0801F7D4 @ =gUnknown_2023ECC lsls r1, r2, 2 adds r1, r2 lsls r1, 2 adds r0, 0x4 adds r1, r0 ldr r0, [r1] cmp r0, 0 bne _0801F790 str r5, [r1] _0801F790: ldr r2, _0801F7D8 @ =gUnknown_2023D54 ldrb r1, [r7] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 add r0, r12 ldrb r0, [r0, 0xA] str r0, [r2] ldrb r1, [r7] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 add r0, r12 strb r3, [r0, 0xA] _0801F7AC: ldr r0, _0801F7DC @ =gActiveBattler ldrb r1, [r0] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 add r0, r12 ldrb r0, [r0, 0xA] cmp r0, 0 beq _0801F7C0 b _0801FA5A _0801F7C0: ldr r4, _0801F7E0 @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x2 str r0, [r4] bl BattleScriptPushCursor ldr r0, _0801F7E4 @ =gUnknown_81D9526 str r0, [r4] b _0801FA62 .align 2, 0 _0801F7D4: .4byte gUnknown_2023ECC _0801F7D8: .4byte gUnknown_2023D54 _0801F7DC: .4byte gActiveBattler _0801F7E0: .4byte gUnknown_2023D74 _0801F7E4: .4byte gUnknown_81D9526 _0801F7E8: ldr r0, _0801F828 @ =gUnknown_2023DD0 ldr r2, [r0] ldr r1, _0801F82C @ =0xfffffeff ands r2, r1 str r2, [r0] ldr r1, _0801F830 @ =gBattleMoveDamage ldr r5, [r1] mov r12, r0 adds r7, r1, 0 cmp r5, 0 bge _0801F83C ldr r4, _0801F834 @ =gBattleMons ldr r2, _0801F838 @ =gActiveBattler ldrb r0, [r2] movs r3, 0x58 adds r1, r0, 0 muls r1, r3 adds r1, r4 ldrh r0, [r1, 0x28] subs r0, r5 strh r0, [r1, 0x28] ldrb r0, [r2] muls r0, r3 adds r1, r0, r4 ldrh r3, [r1, 0x2C] ldrh r0, [r1, 0x28] adds r5, r2, 0 cmp r0, r3 bhi _0801F824 b _0801F9FA _0801F824: strh r3, [r1, 0x28] b _0801F9FA .align 2, 0 _0801F828: .4byte gUnknown_2023DD0 _0801F82C: .4byte 0xfffffeff _0801F830: .4byte gBattleMoveDamage _0801F834: .4byte gBattleMons _0801F838: .4byte gActiveBattler _0801F83C: movs r0, 0x20 ands r0, r2 cmp r0, 0 beq _0801F858 movs r0, 0x21 negs r0, r0 ands r2, r0 mov r0, r12 str r2, [r0] ldr r5, _0801F854 @ =gActiveBattler b _0801F8A0 .align 2, 0 _0801F854: .4byte gActiveBattler _0801F858: ldr r0, _0801F880 @ =gUnknown_2023D58 ldr r2, _0801F884 @ =gActiveBattler ldrb r1, [r2] lsls r1, 2 adds r1, r0 ldr r0, [r1] adds r0, r5 str r0, [r1] ldr r0, _0801F888 @ =gUnknown_2023D74 ldr r0, [r0] ldrb r0, [r0, 0x1] adds r5, r2, 0 cmp r0, 0 bne _0801F894 ldr r1, _0801F88C @ =gUnknown_2023DD8 ldrb r0, [r5] adds r0, r1 ldr r1, _0801F890 @ =sBattler_AI b _0801F89C .align 2, 0 _0801F880: .4byte gUnknown_2023D58 _0801F884: .4byte gActiveBattler _0801F888: .4byte gUnknown_2023D74 _0801F88C: .4byte gUnknown_2023DD8 _0801F890: .4byte sBattler_AI _0801F894: ldr r1, _0801F8C0 @ =gUnknown_2023DD8 ldrb r0, [r5] adds r0, r1 ldr r1, _0801F8C4 @ =gBattlerTarget _0801F89C: ldrb r1, [r1] strb r1, [r0] _0801F8A0: ldr r4, _0801F8C8 @ =gBattleMons ldrb r0, [r5] movs r3, 0x58 muls r0, r3 adds r2, r0, r4 ldrh r0, [r2, 0x28] ldr r1, [r7] cmp r0, r1 ble _0801F8D0 subs r0, r1 strh r0, [r2, 0x28] ldr r0, _0801F8CC @ =gUnknown_2023D54 str r1, [r0] adds r7, r0, 0 b _0801F8E0 .align 2, 0 _0801F8C0: .4byte gUnknown_2023DD8 _0801F8C4: .4byte gBattlerTarget _0801F8C8: .4byte gBattleMons _0801F8CC: .4byte gUnknown_2023D54 _0801F8D0: ldr r2, _0801F954 @ =gUnknown_2023D54 str r0, [r2] ldrb r0, [r5] muls r0, r3 adds r0, r4 movs r1, 0 strh r1, [r0, 0x28] adds r7, r2, 0 _0801F8E0: ldr r2, _0801F958 @ =gUnknown_2023ECC ldrb r1, [r5] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r1, r2, 0x4 adds r3, r0, r1 ldr r0, [r3] adds r4, r2, 0 cmp r0, 0 bne _0801F908 mov r1, r12 ldr r0, [r1] movs r1, 0x80 lsls r1, 13 ands r0, r1 cmp r0, 0 bne _0801F908 ldr r0, [r7] str r0, [r3] _0801F908: cmp r6, 0x8 bhi _0801F990 mov r1, r12 ldr r0, [r1] movs r1, 0x80 lsls r1, 13 ands r0, r1 cmp r0, 0 bne _0801F98C ldr r0, _0801F95C @ =gCurrentMove ldrh r0, [r0] cmp r0, 0xDC beq _0801F98C ldr r3, _0801F960 @ =gUnknown_2023E8C ldrb r0, [r5] lsls r0, 4 adds r1, r3, 0x4 adds r0, r1 ldr r2, [r7] str r2, [r0] ldrb r1, [r5] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r1, r4, 0 adds r1, 0x8 adds r0, r1 str r2, [r0] ldr r0, _0801F964 @ =gUnknown_2023D74 ldr r0, [r0] ldrb r0, [r0, 0x1] cmp r0, 0 bne _0801F96C ldrb r0, [r5] lsls r0, 4 adds r0, r3 ldr r2, _0801F968 @ =sBattler_AI b _0801F974 .align 2, 0 _0801F954: .4byte gUnknown_2023D54 _0801F958: .4byte gUnknown_2023ECC _0801F95C: .4byte gCurrentMove _0801F960: .4byte gUnknown_2023E8C _0801F964: .4byte gUnknown_2023D74 _0801F968: .4byte sBattler_AI _0801F96C: ldrb r0, [r5] lsls r0, 4 adds r0, r3 ldr r2, _0801F988 @ =gBattlerTarget _0801F974: ldrb r1, [r2] strb r1, [r0, 0xC] ldrb r1, [r5] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r4 ldrb r1, [r2] strb r1, [r0, 0x10] b _0801F9FA .align 2, 0 _0801F988: .4byte gBattlerTarget _0801F98C: cmp r6, 0x8 bls _0801F9FA _0801F990: mov r1, r12 ldr r0, [r1] movs r1, 0x80 lsls r1, 13 ands r0, r1 cmp r0, 0 bne _0801F9FA ldr r3, _0801F9D4 @ =gUnknown_2023E8C ldrb r0, [r5] lsls r0, 4 adds r1, r3, 0 adds r1, 0x8 adds r0, r1 ldr r2, [r7] str r2, [r0] ldrb r1, [r5] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r1, r4, 0 adds r1, 0xC adds r0, r1 str r2, [r0] ldr r0, _0801F9D8 @ =gUnknown_2023D74 ldr r0, [r0] ldrb r0, [r0, 0x1] cmp r0, 0 bne _0801F9E0 ldrb r0, [r5] lsls r0, 4 adds r0, r3 ldr r2, _0801F9DC @ =sBattler_AI b _0801F9E8 .align 2, 0 _0801F9D4: .4byte gUnknown_2023E8C _0801F9D8: .4byte gUnknown_2023D74 _0801F9DC: .4byte sBattler_AI _0801F9E0: ldrb r0, [r5] lsls r0, 4 adds r0, r3 ldr r2, _0801FA28 @ =gBattlerTarget _0801F9E8: ldrb r1, [r2] strb r1, [r0, 0xD] ldrb r1, [r5] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r4 ldrb r1, [r2] strb r1, [r0, 0x11] _0801F9FA: mov r1, r12 ldr r0, [r1] ldr r1, _0801FA2C @ =0xffefffff ands r0, r1 mov r1, r12 str r0, [r1] ldrb r1, [r5] movs r0, 0x58 muls r0, r1 ldr r1, _0801FA30 @ =gUnknown_2023C0C adds r0, r1 str r0, [sp] movs r0, 0 movs r1, 0x2A movs r2, 0 movs r3, 0x2 bl EmitSetMonData ldrb r0, [r5] bl MarkBufferBankForExecution b _0801FA5A .align 2, 0 _0801FA28: .4byte gBattlerTarget _0801FA2C: .4byte 0xffefffff _0801FA30: .4byte gUnknown_2023C0C _0801FA34: ldr r0, _0801FA6C @ =gUnknown_2023D74 ldr r0, [r0] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r1, _0801FA70 @ =gActiveBattler strb r0, [r1] ldr r2, _0801FA74 @ =gUnknown_2023ECC ldrb r1, [r1] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r2, 0x4 adds r1, r0, r2 ldr r0, [r1] cmp r0, 0 bne _0801FA5A ldr r0, _0801FA78 @ =0x0000ffff str r0, [r1] _0801FA5A: ldr r1, _0801FA6C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x2 str r0, [r1] _0801FA62: add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0801FA6C: .4byte gUnknown_2023D74 _0801FA70: .4byte gActiveBattler _0801FA74: .4byte gUnknown_2023ECC _0801FA78: .4byte 0x0000ffff thumb_func_end atk0C_datahpupdate thumb_func_start atk0D_critmessage atk0D_critmessage: @ 801FA7C push {lr} ldr r0, _0801FAB8 @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 bne _0801FAB2 ldr r0, _0801FABC @ =gCritMultiplier ldrb r0, [r0] cmp r0, 0x2 bne _0801FAAA ldr r0, _0801FAC0 @ =gMoveResultFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 bne _0801FAAA ldr r0, _0801FAC4 @ =sBattler_AI ldrb r1, [r0] movs r0, 0xD9 bl PrepareStringBattle ldr r1, _0801FAC8 @ =gUnknown_2023E82 movs r0, 0x1 strb r0, [r1, 0x7] _0801FAAA: ldr r1, _0801FACC @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] _0801FAB2: pop {r0} bx r0 .align 2, 0 _0801FAB8: .4byte gUnknown_2023BC8 _0801FABC: .4byte gCritMultiplier _0801FAC0: .4byte gMoveResultFlags _0801FAC4: .4byte sBattler_AI _0801FAC8: .4byte gUnknown_2023E82 _0801FACC: .4byte gUnknown_2023D74 thumb_func_end atk0D_critmessage thumb_func_start atk0E_effectivenesssound atk0E_effectivenesssound: @ 801FAD0 push {r4,lr} ldr r0, _0801FB08 @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 bne _0801FB90 ldr r4, _0801FB0C @ =gActiveBattler ldr r0, _0801FB10 @ =gBattlerTarget ldrb r0, [r0] strb r0, [r4] ldr r1, _0801FB14 @ =gMoveResultFlags ldrb r2, [r1] movs r0, 0x1 ands r0, r2 cmp r0, 0 bne _0801FB88 movs r0, 0xFE ands r0, r2 cmp r0, 0x10 beq _0801FB42 cmp r0, 0x10 bgt _0801FB1E cmp r0, 0x4 beq _0801FB32 cmp r0, 0x4 bgt _0801FB18 cmp r0, 0x2 beq _0801FB2C b _0801FB42 .align 2, 0 _0801FB08: .4byte gUnknown_2023BC8 _0801FB0C: .4byte gActiveBattler _0801FB10: .4byte gBattlerTarget _0801FB14: .4byte gMoveResultFlags _0801FB18: cmp r0, 0x8 beq _0801FB88 b _0801FB42 _0801FB1E: cmp r0, 0x40 beq _0801FB42 cmp r0, 0x40 bgt _0801FB42 cmp r0, 0x20 beq _0801FB88 b _0801FB42 _0801FB2C: movs r0, 0 movs r1, 0xE b _0801FB36 _0801FB32: movs r0, 0 movs r1, 0xC _0801FB36: bl EmitPlaySE ldrb r0, [r4] bl MarkBufferBankForExecution b _0801FB88 _0801FB42: ldrb r1, [r1] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0801FB52 movs r0, 0 movs r1, 0xE b _0801FB5E _0801FB52: movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _0801FB70 movs r0, 0 movs r1, 0xC _0801FB5E: bl EmitPlaySE ldr r0, _0801FB6C @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution b _0801FB88 .align 2, 0 _0801FB6C: .4byte gActiveBattler _0801FB70: movs r0, 0x28 ands r0, r1 cmp r0, 0 bne _0801FB88 movs r0, 0 movs r1, 0xD bl EmitPlaySE ldr r0, _0801FB98 @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution _0801FB88: ldr r1, _0801FB9C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] _0801FB90: pop {r4} pop {r0} bx r0 .align 2, 0 _0801FB98: .4byte gActiveBattler _0801FB9C: .4byte gUnknown_2023D74 thumb_func_end atk0E_effectivenesssound thumb_func_start atk0F_resultmessage atk0F_resultmessage: @ 801FBA0 push {r4-r7,lr} movs r3, 0 ldr r0, _0801FBDC @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 beq _0801FBAE b _0801FD40 _0801FBAE: ldr r1, _0801FBE0 @ =gMoveResultFlags ldrb r2, [r1] movs r4, 0x1 adds r0, r4, 0 ands r0, r2 adds r6, r1, 0 ldr r7, _0801FBE4 @ =gUnknown_2023E82 cmp r0, 0 beq _0801FBEC movs r0, 0x8 ands r0, r2 cmp r0, 0 beq _0801FBCE ldrb r0, [r7, 0x6] cmp r0, 0x2 bls _0801FBEC _0801FBCE: ldr r1, _0801FBE8 @ =gUnknown_83FE514 ldrb r0, [r7, 0x6] lsls r0, 1 adds r0, r1 ldrh r3, [r0] strb r4, [r7, 0x7] b _0801FD2A .align 2, 0 _0801FBDC: .4byte gUnknown_2023BC8 _0801FBE0: .4byte gMoveResultFlags _0801FBE4: .4byte gUnknown_2023E82 _0801FBE8: .4byte gUnknown_83FE514 _0801FBEC: movs r0, 0x1 strb r0, [r7, 0x7] ldrb r5, [r6] movs r0, 0xFE ands r0, r5 cmp r0, 0x10 beq _0801FC30 cmp r0, 0x10 bgt _0801FC12 cmp r0, 0x4 beq _0801FC2C cmp r0, 0x4 bgt _0801FC0C cmp r0, 0x2 beq _0801FC28 b _0801FC78 _0801FC0C: cmp r0, 0x8 beq _0801FC84 b _0801FC78 _0801FC12: cmp r0, 0x40 beq _0801FC34 cmp r0, 0x40 bgt _0801FC22 cmp r0, 0x20 bne _0801FC20 b _0801FD24 _0801FC20: b _0801FC78 _0801FC22: cmp r0, 0x80 beq _0801FC38 b _0801FC78 _0801FC28: movs r3, 0xDE b _0801FD2E _0801FC2C: movs r3, 0xDD b _0801FD2E _0801FC30: movs r3, 0xDA b _0801FD2E _0801FC34: movs r3, 0x99 b _0801FD2E _0801FC38: ldr r4, _0801FC60 @ =gUnknown_2023D68 ldr r2, _0801FC64 @ =gBattleMons ldr r3, _0801FC68 @ =gBattlerTarget ldrb r1, [r3] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r0, [r0, 0x2E] strh r0, [r4] ldr r1, _0801FC6C @ =gPotentialItemEffectBattler ldrb r0, [r3] strb r0, [r1] movs r0, 0x3F ands r0, r5 strb r0, [r6] bl BattleScriptPushCursor ldr r1, _0801FC70 @ =gUnknown_2023D74 ldr r0, _0801FC74 @ =gUnknown_81D9641 b _0801FD3E .align 2, 0 _0801FC60: .4byte gUnknown_2023D68 _0801FC64: .4byte gBattleMons _0801FC68: .4byte gBattlerTarget _0801FC6C: .4byte gPotentialItemEffectBattler _0801FC70: .4byte gUnknown_2023D74 _0801FC74: .4byte gUnknown_81D9641 _0801FC78: adds r2, r6, 0 ldrb r5, [r2] movs r0, 0x8 ands r0, r5 cmp r0, 0 beq _0801FC88 _0801FC84: movs r3, 0x1B b _0801FD2E _0801FC88: movs r0, 0x10 ands r0, r5 cmp r0, 0 beq _0801FCB0 movs r0, 0xEF ands r0, r5 movs r1, 0xFD ands r0, r1 movs r1, 0xFB ands r0, r1 strb r0, [r2] bl BattleScriptPushCursor ldr r1, _0801FCA8 @ =gUnknown_2023D74 ldr r0, _0801FCAC @ =gUnknown_81D8FE4 b _0801FD3E .align 2, 0 _0801FCA8: .4byte gUnknown_2023D74 _0801FCAC: .4byte gUnknown_81D8FE4 _0801FCB0: movs r0, 0x40 ands r0, r5 cmp r0, 0 beq _0801FCD0 movs r0, 0x3F ands r0, r5 strb r0, [r2] bl BattleScriptPushCursor ldr r1, _0801FCC8 @ =gUnknown_2023D74 ldr r0, _0801FCCC @ =gUnknown_81D8FDD b _0801FD3E .align 2, 0 _0801FCC8: .4byte gUnknown_2023D74 _0801FCCC: .4byte gUnknown_81D8FDD _0801FCD0: movs r0, 0x80 ands r0, r5 cmp r0, 0 beq _0801FD18 ldr r4, _0801FD00 @ =gUnknown_2023D68 ldr r2, _0801FD04 @ =gBattleMons ldr r3, _0801FD08 @ =gBattlerTarget ldrb r1, [r3] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r0, [r0, 0x2E] strh r0, [r4] ldr r1, _0801FD0C @ =gPotentialItemEffectBattler ldrb r0, [r3] strb r0, [r1] movs r0, 0x3F ands r0, r5 strb r0, [r6] bl BattleScriptPushCursor ldr r1, _0801FD10 @ =gUnknown_2023D74 ldr r0, _0801FD14 @ =gUnknown_81D9641 b _0801FD3E .align 2, 0 _0801FD00: .4byte gUnknown_2023D68 _0801FD04: .4byte gBattleMons _0801FD08: .4byte gBattlerTarget _0801FD0C: .4byte gPotentialItemEffectBattler _0801FD10: .4byte gUnknown_2023D74 _0801FD14: .4byte gUnknown_81D9641 _0801FD18: movs r0, 0x20 ands r0, r5 lsls r0, 24 lsrs r0, 24 cmp r0, 0 beq _0801FD28 _0801FD24: movs r3, 0xE5 b _0801FD2E _0801FD28: strb r0, [r7, 0x7] _0801FD2A: cmp r3, 0 beq _0801FD38 _0801FD2E: adds r0, r3, 0 ldr r1, _0801FD48 @ =sBattler_AI ldrb r1, [r1] bl PrepareStringBattle _0801FD38: ldr r1, _0801FD4C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 _0801FD3E: str r0, [r1] _0801FD40: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0801FD48: .4byte sBattler_AI _0801FD4C: .4byte gUnknown_2023D74 thumb_func_end atk0F_resultmessage thumb_func_start atk10_printstring atk10_printstring: @ 801FD50 push {r4,lr} ldr r0, _0801FD80 @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 bne _0801FD7A ldr r4, _0801FD84 @ =gUnknown_2023D74 ldr r1, [r4] ldrb r0, [r1, 0x1] ldrb r1, [r1, 0x2] lsls r1, 8 orrs r0, r1 ldr r1, _0801FD88 @ =sBattler_AI ldrb r1, [r1] bl PrepareStringBattle ldr r0, [r4] adds r0, 0x3 str r0, [r4] ldr r1, _0801FD8C @ =gUnknown_2023E82 movs r0, 0x1 strb r0, [r1, 0x7] _0801FD7A: pop {r4} pop {r0} bx r0 .align 2, 0 _0801FD80: .4byte gUnknown_2023BC8 _0801FD84: .4byte gUnknown_2023D74 _0801FD88: .4byte sBattler_AI _0801FD8C: .4byte gUnknown_2023E82 thumb_func_end atk10_printstring thumb_func_start atk11_printselectionstring atk11_printselectionstring: @ 801FD90 push {r4,r5,lr} ldr r5, _0801FDC4 @ =gActiveBattler ldr r0, _0801FDC8 @ =sBattler_AI ldrb r0, [r0] strb r0, [r5] ldr r4, _0801FDCC @ =gUnknown_2023D74 ldr r0, [r4] ldrb r1, [r0, 0x1] ldrb r0, [r0, 0x2] lsls r0, 8 orrs r1, r0 movs r0, 0 bl EmitPrintSelectionString ldrb r0, [r5] bl MarkBufferBankForExecution ldr r0, [r4] adds r0, 0x3 str r0, [r4] ldr r1, _0801FDD0 @ =gUnknown_2023E82 movs r0, 0x1 strb r0, [r1, 0x7] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0801FDC4: .4byte gActiveBattler _0801FDC8: .4byte sBattler_AI _0801FDCC: .4byte gUnknown_2023D74 _0801FDD0: .4byte gUnknown_2023E82 thumb_func_end atk11_printselectionstring thumb_func_start atk12_waitmessage atk12_waitmessage: @ 801FDD4 push {r4-r6,lr} ldr r0, _0801FDF0 @ =gUnknown_2023BC8 ldr r4, [r0] cmp r4, 0 bne _0801FE22 ldr r6, _0801FDF4 @ =gUnknown_2023E82 ldrb r0, [r6, 0x7] cmp r0, 0 bne _0801FDFC ldr r1, _0801FDF8 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x3 str r0, [r1] b _0801FE22 .align 2, 0 _0801FDF0: .4byte gUnknown_2023BC8 _0801FDF4: .4byte gUnknown_2023E82 _0801FDF8: .4byte gUnknown_2023D74 _0801FDFC: ldr r5, _0801FE28 @ =gUnknown_2023D74 ldr r2, [r5] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldr r3, _0801FE2C @ =gUnknown_2023E7C ldrh r0, [r3] adds r0, 0x1 strh r0, [r3] lsls r0, 16 lsrs r0, 16 cmp r0, r1 bcc _0801FE22 movs r1, 0 strh r4, [r3] adds r0, r2, 0x3 str r0, [r5] strb r1, [r6, 0x7] _0801FE22: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0801FE28: .4byte gUnknown_2023D74 _0801FE2C: .4byte gUnknown_2023E7C thumb_func_end atk12_waitmessage thumb_func_start atk13_printfromtable atk13_printfromtable: @ 801FE30 push {r4,r5,lr} ldr r0, _0801FE74 @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 bne _0801FE6E ldr r4, _0801FE78 @ =gUnknown_2023D74 ldr r2, [r4] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 ldr r5, _0801FE7C @ =gUnknown_2023E82 ldrb r0, [r5, 0x5] lsls r0, 1 adds r1, r0 ldrh r0, [r1] ldr r1, _0801FE80 @ =sBattler_AI ldrb r1, [r1] bl PrepareStringBattle ldr r0, [r4] adds r0, 0x5 str r0, [r4] movs r0, 0x1 strb r0, [r5, 0x7] _0801FE6E: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0801FE74: .4byte gUnknown_2023BC8 _0801FE78: .4byte gUnknown_2023D74 _0801FE7C: .4byte gUnknown_2023E82 _0801FE80: .4byte sBattler_AI thumb_func_end atk13_printfromtable thumb_func_start atk14_printselectionstringfromtable atk14_printselectionstringfromtable: @ 801FE84 push {r4-r6,lr} ldr r0, _0801FED4 @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 bne _0801FECE ldr r5, _0801FED8 @ =gUnknown_2023D74 ldr r2, [r5] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 ldr r6, _0801FEDC @ =gUnknown_2023E82 ldrb r0, [r6, 0x5] lsls r0, 1 adds r1, r0 ldr r4, _0801FEE0 @ =gActiveBattler ldr r0, _0801FEE4 @ =sBattler_AI ldrb r0, [r0] strb r0, [r4] ldrh r1, [r1] movs r0, 0 bl EmitPrintSelectionString ldrb r0, [r4] bl MarkBufferBankForExecution ldr r0, [r5] adds r0, 0x5 str r0, [r5] movs r0, 0x1 strb r0, [r6, 0x7] _0801FECE: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0801FED4: .4byte gUnknown_2023BC8 _0801FED8: .4byte gUnknown_2023D74 _0801FEDC: .4byte gUnknown_2023E82 _0801FEE0: .4byte gActiveBattler _0801FEE4: .4byte sBattler_AI thumb_func_end atk14_printselectionstringfromtable thumb_func_start BankGetTurnOrder BankGetTurnOrder: @ 801FEE8 push {r4,lr} lsls r0, 24 lsrs r2, r0, 24 movs r1, 0 ldr r0, _0801FF18 @ =gBattlersCount ldrb r3, [r0] cmp r1, r3 bge _0801FF0E ldr r4, _0801FF1C @ =gUnknown_2023BDE ldrb r0, [r4] cmp r0, r2 beq _0801FF0E _0801FF00: adds r1, 0x1 cmp r1, r3 bge _0801FF0E adds r0, r1, r4 ldrb r0, [r0] cmp r0, r2 bne _0801FF00 _0801FF0E: lsls r0, r1, 24 lsrs r0, 24 pop {r4} pop {r1} bx r1 .align 2, 0 _0801FF18: .4byte gBattlersCount _0801FF1C: .4byte gUnknown_2023BDE thumb_func_end BankGetTurnOrder thumb_func_start sub_801FF20 sub_801FF20: @ 801FF20 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 lsls r0, 24 lsrs r4, r0, 24 lsls r1, 24 lsrs r5, r1, 24 movs r0, 0 mov r10, r0 movs r7, 0 movs r1, 0x1 str r1, [sp, 0x4] ldr r1, _0801FF64 @ =gUnknown_2023E82 ldrb r3, [r1, 0x3] movs r0, 0x40 ands r0, r3 adds r6, r1, 0 cmp r0, 0 beq _0801FF78 ldr r2, _0801FF68 @ =gUnknown_2023D6E ldr r0, _0801FF6C @ =sBattler_AI ldrb r0, [r0] strb r0, [r2] movs r0, 0xBF ands r0, r3 strb r0, [r6, 0x3] movs r7, 0x40 ldr r1, _0801FF70 @ =gBattleScripting ldr r0, _0801FF74 @ =gBattlerTarget b _0801FF84 .align 2, 0 _0801FF64: .4byte gUnknown_2023E82 _0801FF68: .4byte gUnknown_2023D6E _0801FF6C: .4byte sBattler_AI _0801FF70: .4byte gBattleScripting _0801FF74: .4byte gBattlerTarget _0801FF78: ldr r2, _08020094 @ =gUnknown_2023D6E ldr r0, _08020098 @ =gBattlerTarget ldrb r0, [r0] strb r0, [r2] ldr r1, _0802009C @ =gBattleScripting ldr r0, _080200A0 @ =sBattler_AI _0801FF84: ldrb r0, [r0] strb r0, [r1, 0x17] mov r9, r2 ldr r0, _080200A4 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x80 lsls r1, 9 ands r0, r1 cmp r0, 0 beq _0801FFB2 ldrb r0, [r6, 0x3] cmp r0, 0x1 beq _0801FFB2 mov r2, r9 ldrb r0, [r2] bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0801FFB2 bl _080210EC _0801FFB2: ldr r3, _080200A8 @ =gBattleMons ldr r2, _08020094 @ =gUnknown_2023D6E ldrb r1, [r2] movs r0, 0x58 muls r0, r1 adds r0, r3 adds r0, 0x20 ldrb r0, [r0] mov r9, r2 cmp r0, 0x13 bne _0801FFE6 ldr r0, _080200AC @ =gUnknown_2023DD0 ldr r0, [r0] movs r1, 0x80 lsls r1, 6 ands r0, r1 cmp r0, 0 bne _0801FFE6 cmp r4, 0 bne _0801FFE6 ldr r0, _080200B0 @ =gUnknown_2023E82 ldrb r0, [r0, 0x3] cmp r0, 0x9 bhi _0801FFE6 bl _080210EC _0801FFE6: mov r3, r9 ldrb r0, [r3] bl GetBattlerPosition ldr r2, _080200B4 @ =gSideAffecting movs r1, 0x1 ands r1, r0 lsls r1, 1 adds r1, r2 ldrh r1, [r1] movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _08020020 ldr r0, _080200AC @ =gUnknown_2023DD0 ldr r0, [r0] movs r1, 0x80 lsls r1, 6 ands r0, r1 cmp r0, 0 bne _08020020 cmp r4, 0 bne _08020020 ldr r0, _080200B0 @ =gUnknown_2023E82 ldrb r0, [r0, 0x3] cmp r0, 0x7 bhi _08020020 bl _080210EC _08020020: ldr r3, _080200A8 @ =gBattleMons ldr r2, _08020094 @ =gUnknown_2023D6E ldrb r1, [r2] movs r0, 0x58 muls r0, r1 adds r0, r3 ldrh r0, [r0, 0x28] mov r9, r2 mov r8, r3 cmp r0, 0 bne _08020046 ldr r0, _080200B0 @ =gUnknown_2023E82 ldrb r0, [r0, 0x3] cmp r0, 0xB beq _08020046 cmp r0, 0x1F beq _08020046 bl _080210EC _08020046: mov r0, r9 ldrb r1, [r0] movs r0, 0x58 muls r0, r1 mov r1, r8 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 17 ands r0, r1 cmp r0, 0 beq _08020068 cmp r7, 0x40 beq _08020068 bl _080210EC _08020068: ldr r0, _080200B0 @ =gUnknown_2023E82 ldrb r1, [r0, 0x3] adds r6, r0, 0 cmp r1, 0x6 bls _08020074 b _080206A2 _08020074: ldr r1, _080200B8 @ =gUnknown_825053C ldrb r0, [r6, 0x3] lsls r0, 2 adds r0, r1 ldr r0, [r0] cmp r0, 0x10 bne _08020084 b _08020270 _08020084: cmp r0, 0x10 bhi _080200BC cmp r0, 0x7 beq _080200D6 cmp r0, 0x8 bne _08020092 b _0802018C _08020092: b _08020570 .align 2, 0 _08020094: .4byte gUnknown_2023D6E _08020098: .4byte gBattlerTarget _0802009C: .4byte gBattleScripting _080200A0: .4byte sBattler_AI _080200A4: .4byte gBattleTypeFlags _080200A8: .4byte gBattleMons _080200AC: .4byte gUnknown_2023DD0 _080200B0: .4byte gUnknown_2023E82 _080200B4: .4byte gSideAffecting _080200B8: .4byte gUnknown_825053C _080200BC: cmp r0, 0x40 bne _080200C2 b _080203E4 _080200C2: cmp r0, 0x40 bhi _080200CE cmp r0, 0x20 bne _080200CC b _08020346 _080200CC: b _08020570 _080200CE: cmp r0, 0x80 bne _080200D4 b _08020440 _080200D4: b _08020570 _080200D6: mov r2, r9 ldrb r1, [r2] movs r0, 0x58 muls r0, r1 add r0, r8 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x2B beq _08020138 ldr r0, _08020130 @ =gActiveBattler movs r1, 0 strb r1, [r0] ldr r1, _08020134 @ =gBattlersCount ldrb r3, [r1] adds r7, r0, 0 mov r12, r1 cmp r3, 0 beq _08020144 mov r4, r8 ldr r0, [r4, 0x50] movs r1, 0x70 ands r0, r1 cmp r0, 0 bne _08020144 adds r1, r7, 0 mov r6, r8 adds r6, 0x50 movs r5, 0x58 movs r4, 0x70 _08020110: ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] lsls r0, 24 lsrs r0, 24 cmp r0, r3 bcs _08020144 ldrb r0, [r7] muls r0, r5 adds r0, r6 ldr r0, [r0] ands r0, r4 cmp r0, 0 beq _08020110 b _08020144 .align 2, 0 _08020130: .4byte gActiveBattler _08020134: .4byte gBattlersCount _08020138: ldr r0, _08020184 @ =gActiveBattler ldr r2, _08020188 @ =gBattlersCount ldrb r1, [r2] strb r1, [r0] adds r7, r0, 0 mov r12, r2 _08020144: mov r0, r9 ldrb r2, [r0] movs r0, 0x58 adds r1, r2, 0 muls r1, r0 mov r0, r8 adds r0, 0x4C adds r0, r1, r0 ldr r0, [r0] cmp r0, 0 beq _0802015C b _08020570 _0802015C: ldrb r0, [r7] mov r3, r12 ldrb r3, [r3] cmp r0, r3 beq _08020168 b _08020570 _08020168: mov r4, r8 adds r0, r1, r4 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x48 bne _08020176 b _08020570 _08020176: cmp r0, 0xF bne _0802017C b _08020570 _0802017C: adds r0, r2, 0 bl CancelMultiTurnMoves b _08020560 .align 2, 0 _08020184: .4byte gActiveBattler _08020188: .4byte gBattlersCount _0802018C: mov r2, r9 ldrb r1, [r2] movs r0, 0x58 muls r0, r1 add r0, r8 adds r0, 0x20 ldrb r1, [r0] cmp r1, 0x11 bne _080201E4 cmp r4, 0x1 beq _080201A6 cmp r5, 0x80 bne _080201E4 _080201A6: ldr r0, _080201D4 @ =gLastUsedAbility strb r1, [r0] mov r3, r9 ldrb r0, [r3] movs r1, 0x11 bl sub_80C71D0 ldr r4, _080201D8 @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _080201DC @ =gUnknown_81D9438 _080201C0: str r0, [r4] ldr r2, _080201E0 @ =gUnknown_2023DD0 ldr r1, [r2] movs r0, 0x80 lsls r0, 6 ands r0, r1 cmp r0, 0 beq _080201D2 b _08020484 _080201D2: b _080204A8 .align 2, 0 _080201D4: .4byte gLastUsedAbility _080201D8: .4byte gUnknown_2023D74 _080201DC: .4byte gUnknown_81D9438 _080201E0: .4byte gUnknown_2023DD0 _080201E4: mov r1, r9 ldrb r0, [r1] movs r1, 0x58 muls r0, r1 add r0, r8 adds r1, r0, 0 adds r1, 0x21 ldrb r1, [r1] cmp r1, 0x3 beq _08020208 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0x3 beq _08020208 cmp r1, 0x8 beq _08020208 cmp r0, 0x8 bne _08020222 _08020208: ldr r0, _0802026C @ =gUnknown_2023DD0 ldr r0, [r0] movs r1, 0x80 lsls r1, 6 ands r0, r1 cmp r0, 0 beq _08020222 cmp r4, 0x1 bne _0802021C b _080204E8 _0802021C: cmp r5, 0x80 bne _08020222 b _080204E8 _08020222: mov r2, r9 ldrb r1, [r2] movs r0, 0x58 muls r1, r0 mov r4, r8 adds r3, r1, r4 adds r0, r3, 0 adds r0, 0x21 ldrb r4, [r0] cmp r4, 0x3 bne _0802023A b _08020570 _0802023A: adds r0, 0x1 ldrb r0, [r0] cmp r0, 0x3 bne _08020244 b _08020570 _08020244: cmp r4, 0x8 bne _0802024A b _08020570 _0802024A: cmp r0, 0x8 bne _08020250 b _08020570 _08020250: mov r0, r8 adds r0, 0x4C adds r0, r1, r0 ldr r0, [r0] cmp r0, 0 beq _0802025E b _08020570 _0802025E: adds r0, r3, 0 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x11 bne _0802026A b _08020570 _0802026A: b _08020560 .align 2, 0 _0802026C: .4byte gUnknown_2023DD0 _08020270: mov r2, r9 ldrb r1, [r2] movs r0, 0x58 muls r0, r1 add r0, r8 adds r0, 0x20 ldrb r1, [r0] cmp r1, 0x29 bne _080202B4 cmp r4, 0x1 beq _0802028A cmp r5, 0x80 bne _080202B4 _0802028A: ldr r0, _080202A8 @ =gLastUsedAbility strb r1, [r0] mov r3, r9 ldrb r0, [r3] movs r1, 0x29 bl sub_80C71D0 ldr r4, _080202AC @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _080202B0 @ =gUnknown_81D9420 b _080201C0 .align 2, 0 _080202A8: .4byte gLastUsedAbility _080202AC: .4byte gUnknown_2023D74 _080202B0: .4byte gUnknown_81D9420 _080202B4: mov r0, r9 ldrb r1, [r0] movs r0, 0x58 muls r0, r1 mov r2, r8 adds r1, r0, r2 adds r0, r1, 0 adds r0, 0x21 ldrb r0, [r0] cmp r0, 0xA beq _080202D4 adds r0, r1, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0xA bne _08020304 _080202D4: ldr r0, _080202F8 @ =gUnknown_2023DD0 ldr r0, [r0] movs r1, 0x80 lsls r1, 6 ands r0, r1 cmp r0, 0 beq _08020304 cmp r4, 0x1 beq _080202EA cmp r5, 0x80 bne _08020304 _080202EA: ldr r4, _080202FC @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _08020300 @ =gUnknown_81D9420 b _080204F4 .align 2, 0 _080202F8: .4byte gUnknown_2023DD0 _080202FC: .4byte gUnknown_2023D74 _08020300: .4byte gUnknown_81D9420 _08020304: mov r3, r9 ldrb r0, [r3] movs r1, 0x58 adds r2, r0, 0 muls r2, r1 mov r4, r8 adds r1, r2, r4 adds r0, r1, 0 adds r0, 0x21 ldrb r0, [r0] cmp r0, 0xA bne _0802031E b _08020570 _0802031E: adds r0, r1, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0xA bne _0802032A b _08020570 _0802032A: adds r0, r1, 0 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x29 bne _08020336 b _08020570 _08020336: mov r0, r8 adds r0, 0x4C adds r0, r2, r0 ldr r0, [r0] cmp r0, 0 beq _08020344 b _08020570 _08020344: b _08020560 _08020346: movs r0, 0 str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0xD movs r3, 0 bl AbilityBattleEffects lsls r0, 24 lsrs r0, 24 cmp r0, 0 bne _08020382 str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0x4D movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 bne _08020382 ldr r0, _080203D8 @ =gBattleWeather ldrh r1, [r0] movs r0, 0x60 ands r0, r1 cmp r0, 0 beq _08020382 movs r1, 0 str r1, [sp, 0x4] _08020382: ldr r4, _080203DC @ =gBattleMons ldr r0, _080203E0 @ =gUnknown_2023D6E ldrb r3, [r0] movs r0, 0x58 adds r2, r3, 0 muls r2, r0 adds r1, r2, r4 adds r0, r1, 0 adds r0, 0x21 ldrb r0, [r0] cmp r0, 0xF bne _0802039C b _08020570 _0802039C: adds r0, r1, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0xF bne _080203A8 b _08020570 _080203A8: adds r0, r4, 0 adds r0, 0x4C adds r0, r2, r0 ldr r0, [r0] cmp r0, 0 beq _080203B6 b _08020570 _080203B6: ldr r2, [sp, 0x4] cmp r2, 0 bne _080203BE b _08020570 _080203BE: adds r0, r1, 0 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x28 bne _080203CA b _08020570 _080203CA: adds r0, r3, 0 bl CancelMultiTurnMoves movs r3, 0x1 mov r10, r3 b _08020570 .align 2, 0 _080203D8: .4byte gBattleWeather _080203DC: .4byte gBattleMons _080203E0: .4byte gUnknown_2023D6E _080203E4: mov r0, r9 ldrb r1, [r0] movs r0, 0x58 muls r1, r0 mov r2, r8 adds r0, r1, r2 adds r0, 0x20 ldrb r2, [r0] cmp r2, 0x7 bne _0802042C cmp r4, 0x1 beq _08020402 cmp r5, 0x80 beq _08020402 b _08020570 _08020402: ldr r0, _08020420 @ =gLastUsedAbility strb r2, [r0] mov r3, r9 ldrb r0, [r3] movs r1, 0x7 bl sub_80C71D0 ldr r4, _08020424 @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _08020428 @ =gUnknown_81D942C b _080201C0 .align 2, 0 _08020420: .4byte gLastUsedAbility _08020424: .4byte gUnknown_2023D74 _08020428: .4byte gUnknown_81D942C _0802042C: mov r0, r8 adds r0, 0x4C adds r0, r1, r0 ldr r0, [r0] cmp r0, 0 beq _0802043A b _08020570 _0802043A: movs r4, 0x1 mov r10, r4 b _08020570 _08020440: mov r0, r9 ldrb r1, [r0] movs r0, 0x58 muls r0, r1 add r0, r8 adds r0, 0x20 ldrb r1, [r0] cmp r1, 0x11 bne _080204AE cmp r4, 0x1 beq _0802045A cmp r5, 0x80 bne _080204AE _0802045A: ldr r0, _08020494 @ =gLastUsedAbility strb r1, [r0] mov r1, r9 ldrb r0, [r1] movs r1, 0x11 bl sub_80C71D0 ldr r4, _08020498 @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _0802049C @ =gUnknown_81D9438 str r0, [r4] ldr r2, _080204A0 @ =gUnknown_2023DD0 ldr r1, [r2] movs r0, 0x80 lsls r0, 6 ands r0, r1 cmp r0, 0 beq _080204A8 _08020484: movs r0, 0x1 strb r0, [r6, 0x5] ldr r0, _080204A4 @ =0xffffdfff ands r1, r0 str r1, [r2] bl _0802110A .align 2, 0 _08020494: .4byte gLastUsedAbility _08020498: .4byte gUnknown_2023D74 _0802049C: .4byte gUnknown_81D9438 _080204A0: .4byte gUnknown_2023DD0 _080204A4: .4byte 0xffffdfff _080204A8: strb r0, [r6, 0x5] bl _0802110A _080204AE: mov r2, r9 ldrb r0, [r2] movs r1, 0x58 muls r0, r1 add r0, r8 adds r1, r0, 0 adds r1, 0x21 ldrb r1, [r1] cmp r1, 0x3 beq _080204D2 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0x3 beq _080204D2 cmp r1, 0x8 beq _080204D2 cmp r0, 0x8 bne _08020510 _080204D2: ldr r0, _08020500 @ =gUnknown_2023DD0 ldr r0, [r0] movs r1, 0x80 lsls r1, 6 ands r0, r1 cmp r0, 0 beq _08020510 cmp r4, 0x1 beq _080204E8 cmp r5, 0x80 bne _08020510 _080204E8: ldr r4, _08020504 @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _08020508 @ =gUnknown_81D9438 _080204F4: str r0, [r4] ldr r1, _0802050C @ =gUnknown_2023E82 movs r0, 0x2 strb r0, [r1, 0x5] bl _0802110A .align 2, 0 _08020500: .4byte gUnknown_2023DD0 _08020504: .4byte gUnknown_2023D74 _08020508: .4byte gUnknown_81D9438 _0802050C: .4byte gUnknown_2023E82 _08020510: mov r3, r9 ldrb r0, [r3] movs r6, 0x58 muls r0, r6 mov r2, r8 adds r2, 0x4C adds r5, r0, r2 ldr r4, [r5] cmp r4, 0 bne _08020570 mov r3, r8 adds r1, r0, r3 adds r0, r1, 0 adds r0, 0x21 ldrb r3, [r0] cmp r3, 0x3 beq _08020566 adds r0, 0x1 ldrb r0, [r0] cmp r0, 0x3 beq _08020566 cmp r3, 0x8 beq _08020566 cmp r0, 0x8 beq _08020566 adds r0, r1, 0 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x11 beq _08020570 mov r4, r9 ldrb r0, [r4] adds r1, r0, 0 muls r1, r6 adds r1, r2 ldr r0, [r1] movs r2, 0x9 negs r2, r2 ands r0, r2 str r0, [r1] _08020560: movs r0, 0x1 mov r10, r0 b _08020570 _08020566: ldr r0, _080205B4 @ =gMoveResultFlags ldrb r1, [r0] movs r2, 0x8 orrs r1, r2 strb r1, [r0] _08020570: mov r1, r10 cmp r1, 0x1 beq _08020578 b _08020694 _08020578: ldr r0, _080205B8 @ =gUnknown_2023D74 ldr r0, [r0] adds r0, 0x1 bl BattleScriptPush ldr r1, _080205BC @ =gUnknown_825053C ldr r0, _080205C0 @ =gUnknown_2023E82 ldrb r0, [r0, 0x3] lsls r0, 2 adds r0, r1 ldr r3, [r0] cmp r3, 0x7 bne _080205CC bl Random ldr r2, _080205C4 @ =gBattleMons ldr r1, _080205C8 @ =gUnknown_2023D6E ldrb r3, [r1] movs r1, 0x58 muls r3, r1 adds r2, 0x4C adds r3, r2 movs r1, 0x3 ands r1, r0 adds r1, 0x2 ldr r0, [r3] orrs r0, r1 str r0, [r3] b _080205E0 .align 2, 0 _080205B4: .4byte gMoveResultFlags _080205B8: .4byte gUnknown_2023D74 _080205BC: .4byte gUnknown_825053C _080205C0: .4byte gUnknown_2023E82 _080205C4: .4byte gBattleMons _080205C8: .4byte gUnknown_2023D6E _080205CC: ldr r2, _08020630 @ =gBattleMons ldr r0, _08020634 @ =gUnknown_2023D6E ldrb r1, [r0] movs r0, 0x58 muls r1, r0 adds r2, 0x4C adds r1, r2 ldr r0, [r1] orrs r0, r3 str r0, [r1] _080205E0: ldr r2, _08020638 @ =gUnknown_2023D74 ldr r1, _0802063C @ =gUnknown_825062C ldr r5, _08020640 @ =gUnknown_2023E82 ldrb r0, [r5, 0x3] lsls r0, 2 adds r0, r1 ldr r0, [r0] str r0, [r2] ldr r4, _08020644 @ =gActiveBattler ldr r1, _08020634 @ =gUnknown_2023D6E ldrb r0, [r1] strb r0, [r4] ldrb r1, [r1] movs r0, 0x58 muls r0, r1 ldr r1, _08020648 @ =gUnknown_2023C30 adds r0, r1 str r0, [sp] movs r0, 0 movs r1, 0x28 movs r2, 0 movs r3, 0x4 bl EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution ldr r2, _0802064C @ =gUnknown_2023DD0 ldr r1, [r2] movs r0, 0x80 lsls r0, 6 ands r0, r1 cmp r0, 0 beq _08020654 movs r0, 0x1 strb r0, [r5, 0x5] ldr r0, _08020650 @ =0xffffdfff ands r1, r0 str r1, [r2] b _08020656 .align 2, 0 _08020630: .4byte gBattleMons _08020634: .4byte gUnknown_2023D6E _08020638: .4byte gUnknown_2023D74 _0802063C: .4byte gUnknown_825062C _08020640: .4byte gUnknown_2023E82 _08020644: .4byte gActiveBattler _08020648: .4byte gUnknown_2023C30 _0802064C: .4byte gUnknown_2023DD0 _08020650: .4byte 0xffffdfff _08020654: strb r0, [r5, 0x5] _08020656: ldr r0, _08020688 @ =gUnknown_2023E82 ldrb r2, [r0, 0x3] adds r6, r0, 0 cmp r2, 0x2 beq _08020670 cmp r2, 0x6 beq _08020670 cmp r2, 0x5 beq _08020670 cmp r2, 0x3 beq _08020670 bl _0802110A _08020670: ldr r0, _0802068C @ =gBattleStruct ldr r0, [r0] adds r0, 0xB4 ldrb r1, [r6, 0x3] strb r1, [r0] ldr r2, _08020690 @ =gUnknown_2023DD0 ldr r0, [r2] movs r1, 0x80 lsls r1, 7 bl _08021008 .align 2, 0 _08020688: .4byte gUnknown_2023E82 _0802068C: .4byte gBattleStruct _08020690: .4byte gUnknown_2023DD0 _08020694: mov r2, r10 cmp r2, 0 beq _0802069E bl _0802110A _0802069E: bl _080210EC _080206A2: mov r3, r9 ldrb r1, [r3] movs r0, 0x58 muls r1, r0 mov r0, r8 adds r0, 0x50 adds r1, r0 ldr r2, _080206DC @ =gUnknown_825053C ldrb r3, [r6, 0x3] lsls r0, r3, 2 adds r0, r2 ldr r1, [r1] ldr r0, [r0] ands r1, r0 cmp r1, 0 beq _080206C6 bl _080210EC _080206C6: subs r0, r3, 0x7 cmp r0, 0x34 bls _080206D0 bl _0802110A _080206D0: lsls r0, 2 ldr r1, _080206E0 @ =_080206E4 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080206DC: .4byte gUnknown_825053C _080206E0: .4byte _080206E4 .align 2, 0 _080206E4: .4byte _080207B8 .4byte _0802082C .4byte _080209A0 .4byte _080208B8 .4byte _08020934 .4byte _080209D8 .4byte _08020A20 .4byte _08020AEC .4byte _08020B30 .4byte _08020B30 .4byte _08020B30 .4byte _08020B30 .4byte _08020B30 .4byte _08020B30 .4byte _08020B30 .4byte _08020B74 .4byte _08020B74 .4byte _08020B74 .4byte _08020B74 .4byte _08020B74 .4byte _08020B74 .4byte _08020B74 .4byte _08020C40 .4byte _08020C88 .4byte _08020CA8 .4byte _08020E78 .4byte _08020EB4 .4byte _08020ED0 .4byte _08020EE8 .4byte _08020F00 .4byte _08020F60 .4byte _08020F78 .4byte _08020BB8 .4byte _08020BB8 .4byte _08020BB8 .4byte _08020BB8 .4byte _08020BB8 .4byte _08020BB8 .4byte _08020BB8 .4byte _08020BFC .4byte _08020BFC .4byte _08020BFC .4byte _08020BFC .4byte _08020BFC .4byte _08020BFC .4byte _08020BFC .4byte _08020FBC .4byte _08021018 .4byte _0802110A .4byte _0802110A .4byte _0802110A .4byte _0802110A .4byte _080210FC _080207B8: mov r4, r9 ldrb r0, [r4] movs r5, 0x58 adds r1, r0, 0 muls r1, r5 mov r2, r8 adds r0, r1, r2 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x14 bne _080207D2 bl _080210EC _080207D2: mov r4, r8 adds r4, 0x50 adds r0, r1, r4 ldr r0, [r0] movs r1, 0x7 ands r0, r1 cmp r0, 0 beq _080207E6 bl _080210EC _080207E6: bl Random mov r3, r9 ldrb r1, [r3] adds r2, r1, 0 muls r2, r5 adds r2, r4 lsls r0, 16 movs r1, 0xC0 lsls r1, 10 ands r1, r0 lsrs r1, 16 adds r1, 0x2 ldr r0, [r2] orrs r0, r1 str r0, [r2] ldr r4, _08020820 @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r1, _08020824 @ =gUnknown_825062C ldr r0, _08020828 @ =gUnknown_2023E82 ldrb r0, [r0, 0x3] lsls r0, 2 adds r0, r1 ldr r0, [r0] bl _08021108 .align 2, 0 _08020820: .4byte gUnknown_2023D74 _08020824: .4byte gUnknown_825062C _08020828: .4byte gUnknown_2023E82 _0802082C: mov r0, r9 ldrb r2, [r0] movs r6, 0x58 adds r0, r2, 0 muls r0, r6 add r0, r8 adds r0, 0x20 ldrb r1, [r0] cmp r1, 0x27 bne _08020870 cmp r4, 0x1 beq _0802084C cmp r5, 0x80 beq _0802084C bl _080210EC _0802084C: ldr r0, _08020864 @ =gLastUsedAbility strb r1, [r0] mov r1, r9 ldrb r0, [r1] movs r1, 0x27 bl sub_80C71D0 ldr r1, _08020868 @ =gUnknown_2023D74 ldr r0, _0802086C @ =gUnknown_81D9452 str r0, [r1] bl _0802110A .align 2, 0 _08020864: .4byte gLastUsedAbility _08020868: .4byte gUnknown_2023D74 _0802086C: .4byte gUnknown_81D9452 _08020870: adds r0, r2, 0 bl BankGetTurnOrder ldr r1, _080208AC @ =gUnknown_2023BE2 lsls r0, 24 lsrs r0, 24 ldrb r1, [r1] cmp r0, r1 bhi _08020886 bl _080210EC _08020886: mov r2, r9 ldrb r0, [r2] adds r2, r0, 0 muls r2, r6 mov r0, r8 adds r0, 0x50 adds r2, r0 ldr r1, _080208B0 @ =gUnknown_825053C ldr r0, _080208B4 @ =gUnknown_2023E82 ldrb r0, [r0, 0x3] lsls r0, 2 adds r0, r1 ldr r1, [r2] ldr r0, [r0] orrs r1, r0 str r1, [r2] bl _080210EC .align 2, 0 _080208AC: .4byte gUnknown_2023BE2 _080208B0: .4byte gUnknown_825053C _080208B4: .4byte gUnknown_2023E82 _080208B8: mov r3, r9 ldrb r0, [r3] movs r5, 0x58 muls r0, r5 mov r4, r8 adds r4, 0x50 adds r2, r0, r4 ldr r1, [r2] movs r0, 0x70 ands r0, r1 cmp r0, 0 beq _080208D4 bl _080210EC _080208D4: movs r0, 0x80 lsls r0, 5 orrs r1, r0 str r1, [r2] ldr r1, _08020920 @ =gUnknown_2023DB8 ldrb r0, [r3] lsls r0, 1 adds r0, r1 ldr r1, _08020924 @ =gCurrentMove ldrh r1, [r1] strh r1, [r0] bl Random mov r2, r9 ldrb r1, [r2] adds r2, r1, 0 muls r2, r5 adds r2, r4 movs r1, 0x3 ands r1, r0 adds r1, 0x2 lsls r1, 4 ldr r0, [r2] orrs r0, r1 str r0, [r2] ldr r4, _08020928 @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r1, _0802092C @ =gUnknown_825062C ldr r0, _08020930 @ =gUnknown_2023E82 ldrb r0, [r0, 0x3] lsls r0, 2 adds r0, r1 ldr r0, [r0] bl _08021108 .align 2, 0 _08020920: .4byte gUnknown_2023DB8 _08020924: .4byte gCurrentMove _08020928: .4byte gUnknown_2023D74 _0802092C: .4byte gUnknown_825062C _08020930: .4byte gUnknown_2023E82 _08020934: ldr r5, _08020984 @ =sBattler_AI ldrb r0, [r5] bl GetBattlerPosition movs r1, 0x1 ands r1, r0 cmp r1, 0 bne _0802096C ldr r4, _08020988 @ =gUnknown_2023E7E ldrh r3, [r4] ldr r2, _0802098C @ =gBattleMons ldrb r1, [r5] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x2A ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 adds r0, r3, r0 strh r0, [r4] lsls r0, 16 lsrs r0, 16 cmp r3, r0 bls _0802096C ldr r3, _08020990 @ =0x0000ffff adds r0, r3, 0 strh r0, [r4] _0802096C: ldr r4, _08020994 @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r1, _08020998 @ =gUnknown_825062C ldr r0, _0802099C @ =gUnknown_2023E82 ldrb r0, [r0, 0x3] lsls r0, 2 adds r0, r1 ldr r0, [r0] b _08021108 .align 2, 0 _08020984: .4byte sBattler_AI _08020988: .4byte gUnknown_2023E7E _0802098C: .4byte gBattleMons _08020990: .4byte 0x0000ffff _08020994: .4byte gUnknown_2023D74 _08020998: .4byte gUnknown_825062C _0802099C: .4byte gUnknown_2023E82 _080209A0: mov r4, r9 ldrb r1, [r4] movs r0, 0x58 muls r0, r1 mov r1, r8 adds r1, 0x4C adds r0, r1 ldr r0, [r0] cmp r0, 0 beq _080209B6 b _080210EC _080209B6: bl Random ldr r4, _080209D4 @ =gUnknown_2023E82 lsls r0, 16 lsrs r0, 16 movs r1, 0x3 bl __umodsi3 adds r0, 0x3 strb r0, [r4, 0x3] movs r0, 0 movs r1, 0 bl sub_801FF20 b _0802110A .align 2, 0 _080209D4: .4byte gUnknown_2023E82 _080209D8: mov r0, r9 ldrb r1, [r0] movs r0, 0x58 adds r2, r1, 0 muls r2, r0 mov r0, r8 adds r0, 0x50 adds r2, r0 ldr r0, [r2] movs r1, 0x80 lsls r1, 5 orrs r0, r1 str r0, [r2] ldr r1, _08020A14 @ =gUnknown_2023DB8 mov r2, r9 ldrb r0, [r2] lsls r0, 1 adds r0, r1 ldr r1, _08020A18 @ =gCurrentMove ldrh r1, [r1] strh r1, [r0] ldr r0, _08020A1C @ =gUnknown_2023E8C ldrb r1, [r2] lsls r1, 4 adds r1, r0 ldrb r0, [r1, 0x1] movs r2, 0x4 orrs r0, r2 strb r0, [r1, 0x1] b _080210EC .align 2, 0 _08020A14: .4byte gUnknown_2023DB8 _08020A18: .4byte gCurrentMove _08020A1C: .4byte gUnknown_2023E8C _08020A20: mov r3, r9 ldrb r0, [r3] movs r6, 0x58 muls r0, r6 mov r4, r8 adds r4, 0x50 adds r0, r4 ldr r5, [r0] movs r0, 0xE0 lsls r0, 8 ands r5, r0 cmp r5, 0 beq _08020A3C b _080210EC _08020A3C: bl Random mov r2, r9 ldrb r1, [r2] adds r2, r1, 0 muls r2, r6 adds r2, r4 movs r1, 0x3 ands r1, r0 adds r1, 0x3 lsls r1, 13 ldr r0, [r2] orrs r0, r1 str r0, [r2] mov r3, r9 ldrb r1, [r3] ldr r2, _08020AD0 @ =gBattleStruct ldr r0, [r2] lsls r1, 1 adds r1, r0 ldr r6, _08020AD4 @ =gCurrentMove ldrh r0, [r6] strb r0, [r1, 0x4] ldrb r1, [r3] ldr r0, [r2] lsls r1, 1 adds r1, r0 ldrh r0, [r6] lsrs r0, 8 strb r0, [r1, 0x5] ldrb r1, [r3] ldr r0, [r2] adds r1, r0 ldr r0, _08020AD8 @ =sBattler_AI ldrb r0, [r0] strb r0, [r1, 0x14] ldr r4, _08020ADC @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r1, _08020AE0 @ =gUnknown_825062C ldr r2, _08020AE4 @ =gUnknown_2023E82 ldrb r0, [r2, 0x3] lsls r0, 2 adds r0, r1 ldr r0, [r0] str r0, [r4] strb r5, [r2, 0x5] ldr r3, _08020AE8 @ =gUnknown_83FE664 ldrh r0, [r3] ldrh r4, [r6] cmp r0, r4 bne _08020AAA b _0802110A _08020AAA: adds r1, r2, 0 adds r2, r6, 0 _08020AAE: ldrb r0, [r1, 0x5] adds r0, 0x1 strb r0, [r1, 0x5] lsls r0, 24 lsrs r0, 24 cmp r0, 0x4 bls _08020ABE b _0802110A _08020ABE: ldrb r0, [r1, 0x5] lsls r0, 1 adds r0, r3 ldrh r0, [r0] ldrh r4, [r2] cmp r0, r4 bne _08020AAE b _0802110A .align 2, 0 _08020AD0: .4byte gBattleStruct _08020AD4: .4byte gCurrentMove _08020AD8: .4byte sBattler_AI _08020ADC: .4byte gUnknown_2023D74 _08020AE0: .4byte gUnknown_825062C _08020AE4: .4byte gUnknown_2023E82 _08020AE8: .4byte gUnknown_83FE664 _08020AEC: ldr r1, _08020B1C @ =gBattleMoveDamage ldr r0, _08020B20 @ =gUnknown_2023D54 ldr r0, [r0] cmp r0, 0 bge _08020AF8 adds r0, 0x3 _08020AF8: asrs r0, 2 str r0, [r1] cmp r0, 0 bne _08020B04 movs r0, 0x1 str r0, [r1] _08020B04: ldr r4, _08020B24 @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r1, _08020B28 @ =gUnknown_825062C ldr r0, _08020B2C @ =gUnknown_2023E82 ldrb r0, [r0, 0x3] lsls r0, 2 adds r0, r1 ldr r0, [r0] b _08021108 .align 2, 0 _08020B1C: .4byte gBattleMoveDamage _08020B20: .4byte gUnknown_2023D54 _08020B24: .4byte gUnknown_2023D74 _08020B28: .4byte gUnknown_825062C _08020B2C: .4byte gUnknown_2023E82 _08020B30: ldrb r1, [r6, 0x3] adds r1, 0xF2 lsls r1, 24 lsrs r1, 24 movs r0, 0x10 adds r2, r7, 0 movs r3, 0 bl ChangeStatBuffs lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0 beq _08020B4C b _080210EC _08020B4C: ldr r2, _08020B68 @ =gBattleScripting ldrb r1, [r6, 0x3] movs r0, 0x3F ands r0, r1 strb r0, [r2, 0x10] strb r3, [r2, 0x11] ldr r4, _08020B6C @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _08020B70 @ =gUnknown_81D6BD1 b _08021108 .align 2, 0 _08020B68: .4byte gBattleScripting _08020B6C: .4byte gUnknown_2023D74 _08020B70: .4byte gUnknown_81D6BD1 _08020B74: movs r0, 0x70 negs r0, r0 ldrb r1, [r6, 0x3] adds r1, 0xEB lsls r1, 24 lsrs r1, 24 adds r2, r7, 0 movs r3, 0 bl ChangeStatBuffs lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0 beq _08020B92 b _080210EC _08020B92: ldr r2, _08020BAC @ =gBattleScripting ldrb r1, [r6, 0x3] movs r0, 0x3F ands r0, r1 strb r0, [r2, 0x10] strb r3, [r2, 0x11] ldr r4, _08020BB0 @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _08020BB4 @ =gUnknown_81D6C62 b _08021108 .align 2, 0 _08020BAC: .4byte gBattleScripting _08020BB0: .4byte gUnknown_2023D74 _08020BB4: .4byte gUnknown_81D6C62 _08020BB8: ldrb r1, [r6, 0x3] adds r1, 0xDA lsls r1, 24 lsrs r1, 24 movs r0, 0x20 adds r2, r7, 0 movs r3, 0 bl ChangeStatBuffs lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0 beq _08020BD4 b _080210EC _08020BD4: ldr r2, _08020BF0 @ =gBattleScripting ldrb r1, [r6, 0x3] movs r0, 0x3F ands r0, r1 strb r0, [r2, 0x10] strb r3, [r2, 0x11] ldr r4, _08020BF4 @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _08020BF8 @ =gUnknown_81D6BD1 b _08021108 .align 2, 0 _08020BF0: .4byte gBattleScripting _08020BF4: .4byte gUnknown_2023D74 _08020BF8: .4byte gUnknown_81D6BD1 _08020BFC: movs r0, 0x60 negs r0, r0 ldrb r1, [r6, 0x3] adds r1, 0xD3 lsls r1, 24 lsrs r1, 24 adds r2, r7, 0 movs r3, 0 bl ChangeStatBuffs lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0 beq _08020C1A b _080210EC _08020C1A: ldr r2, _08020C34 @ =gBattleScripting ldrb r1, [r6, 0x3] movs r0, 0x3F ands r0, r1 strb r0, [r2, 0x10] strb r3, [r2, 0x11] ldr r4, _08020C38 @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _08020C3C @ =gUnknown_81D6C62 b _08021108 .align 2, 0 _08020C34: .4byte gBattleScripting _08020C38: .4byte gUnknown_2023D74 _08020C3C: .4byte gUnknown_81D6C62 _08020C40: mov r0, r9 ldrb r1, [r0] movs r0, 0x58 adds r2, r1, 0 muls r2, r0 mov r0, r8 adds r0, 0x50 adds r2, r0 ldr r0, [r2] movs r1, 0x80 lsls r1, 15 orrs r0, r1 str r0, [r2] ldr r2, _08020C7C @ =gDisableStructs mov r3, r9 ldrb r1, [r3] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0x2 strb r1, [r0, 0x19] ldr r1, _08020C80 @ =gUnknown_2023DB8 ldrb r0, [r3] lsls r0, 1 adds r0, r1 ldr r1, _08020C84 @ =gCurrentMove ldrh r1, [r1] strh r1, [r0] b _080210EC .align 2, 0 _08020C7C: .4byte gDisableStructs _08020C80: .4byte gUnknown_2023DB8 _08020C84: .4byte gCurrentMove _08020C88: ldr r0, _08020CA4 @ =sBattler_AI ldrb r1, [r0] movs r0, 0x58 adds r2, r1, 0 muls r2, r0 mov r0, r8 adds r0, 0x50 adds r2, r0 ldr r0, [r2] movs r1, 0x80 lsls r1, 16 _08020C9E: orrs r0, r1 str r0, [r2] b _080210EC .align 2, 0 _08020CA4: .4byte sBattler_AI _08020CA8: ldr r5, _08020D64 @ =gBattleTypeFlags ldr r0, [r5] movs r1, 0x80 lsls r1, 12 ands r0, r1 cmp r0, 0 beq _08020CB8 b _080210EC _08020CB8: ldr r4, _08020D68 @ =sBattler_AI ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 lsrs r6, r0, 24 ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _08020CEA ldr r0, [r5] ldr r1, _08020D6C @ =0x00000902 ands r0, r1 cmp r0, 0 bne _08020D26 ldr r0, _08020D70 @ =gTrainerBattleOpponent_A ldrh r1, [r0] movs r0, 0x80 lsls r0, 3 cmp r1, r0 beq _08020CEA b _080210EC _08020CEA: ldr r0, _08020D64 @ =gBattleTypeFlags ldr r0, [r0] ldr r1, _08020D6C @ =0x00000902 ands r0, r1 cmp r0, 0 bne _08020D26 ldr r0, _08020D70 @ =gTrainerBattleOpponent_A ldrh r1, [r0] movs r0, 0x80 lsls r0, 3 cmp r1, r0 beq _08020D26 ldr r0, _08020D74 @ =gUnknown_2023F20 adds r0, 0x29 adds r0, r6, r0 ldrb r1, [r0] ldr r3, _08020D78 @ =gBitTable ldr r2, _08020D7C @ =gBattlerPartyIndexes ldr r0, _08020D68 @ =sBattler_AI ldrb r0, [r0] lsls r0, 1 adds r0, r2 ldrh r0, [r0] lsls r0, 2 adds r0, r3 ldr r0, [r0] ands r1, r0 cmp r1, 0 beq _08020D26 b _080210EC _08020D26: ldr r2, _08020D80 @ =gBattleMons ldr r1, _08020D84 @ =gBattlerTarget ldrb r0, [r1] movs r3, 0x58 muls r0, r3 adds r4, r0, r2 ldrh r0, [r4, 0x2E] adds r7, r1, 0 mov r8, r2 cmp r0, 0 beq _08020D94 adds r0, r4, 0 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x3C bne _08020D94 ldr r1, _08020D88 @ =gUnknown_2023D74 ldr r0, _08020D8C @ =gUnknown_81D948E str r0, [r1] ldr r1, _08020D90 @ =gLastUsedAbility ldrb r0, [r7] muls r0, r3 add r0, r8 adds r0, 0x20 ldrb r0, [r0] strb r0, [r1] ldrb r0, [r7] ldrb r1, [r1] bl sub_80C71D0 b _0802110A .align 2, 0 _08020D64: .4byte gBattleTypeFlags _08020D68: .4byte sBattler_AI _08020D6C: .4byte 0x00000902 _08020D70: .4byte gTrainerBattleOpponent_A _08020D74: .4byte gUnknown_2023F20 _08020D78: .4byte gBitTable _08020D7C: .4byte gBattlerPartyIndexes _08020D80: .4byte gBattleMons _08020D84: .4byte gBattlerTarget _08020D88: .4byte gUnknown_2023D74 _08020D8C: .4byte gUnknown_81D948E _08020D90: .4byte gLastUsedAbility _08020D94: ldr r4, _08020E60 @ =sBattler_AI mov r10, r4 ldrb r2, [r4] movs r0, 0x58 mov r9, r0 mov r0, r9 muls r0, r2 add r0, r8 ldrh r4, [r0, 0x2E] cmp r4, 0 beq _08020DAC b _080210EC _08020DAC: ldrb r0, [r7] mov r1, r9 muls r1, r0 adds r0, r1, 0 add r0, r8 ldrh r3, [r0, 0x2E] adds r1, r3, 0 cmp r1, 0xAF bne _08020DC0 b _080210EC _08020DC0: adds r0, r3, 0 subs r0, 0x79 lsls r0, 16 lsrs r0, 16 cmp r0, 0xB bhi _08020DCE b _080210EC _08020DCE: cmp r1, 0 bne _08020DD4 b _080210EC _08020DD4: ldr r5, _08020E64 @ =gBattleStruct lsls r0, r2, 1 adds r0, 0xD0 ldr r1, [r5] adds r1, r0 ldr r2, _08020E68 @ =gUnknown_2023D68 strh r3, [r1] strh r3, [r2] ldrb r0, [r7] mov r3, r9 muls r3, r0 adds r0, r3, 0 add r0, r8 movs r6, 0 strh r4, [r0, 0x2E] ldr r4, _08020E6C @ =gActiveBattler mov r1, r10 ldrb r0, [r1] strb r0, [r4] str r2, [sp] movs r0, 0 movs r1, 0x2 movs r2, 0 movs r3, 0x2 bl EmitSetMonData mov r2, r10 ldrb r0, [r2] bl MarkBufferBankForExecution ldrb r0, [r7] strb r0, [r4] ldrb r0, [r7] mov r3, r9 muls r3, r0 adds r0, r3, 0 mov r1, r8 adds r1, 0x2E adds r0, r1 str r0, [sp] movs r0, 0 movs r1, 0x2 movs r2, 0 movs r3, 0x2 bl EmitSetMonData ldrb r0, [r7] bl MarkBufferBankForExecution ldr r4, _08020E70 @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _08020E74 @ =gUnknown_81D9271 str r0, [r4] ldrb r0, [r7] ldr r1, [r5] lsls r0, 1 adds r0, r1 adds r0, 0xC8 strb r6, [r0] ldrb r0, [r7] ldr r1, [r5] lsls r0, 1 adds r0, r1 adds r0, 0xC9 strb r6, [r0] b _0802110A .align 2, 0 _08020E60: .4byte sBattler_AI _08020E64: .4byte gBattleStruct _08020E68: .4byte gUnknown_2023D68 _08020E6C: .4byte gActiveBattler _08020E70: .4byte gUnknown_2023D74 _08020E74: .4byte gUnknown_81D9271 _08020E78: ldr r3, _08020EA8 @ =gBattlerTarget ldrb r1, [r3] movs r0, 0x58 adds r2, r1, 0 muls r2, r0 mov r0, r8 adds r0, 0x50 adds r2, r0 ldr r0, [r2] movs r1, 0x80 lsls r1, 19 orrs r0, r1 str r0, [r2] ldr r2, _08020EAC @ =gDisableStructs ldrb r1, [r3] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r2 ldr r1, _08020EB0 @ =sBattler_AI ldrb r1, [r1] strb r1, [r0, 0x14] b _080210EC .align 2, 0 _08020EA8: .4byte gBattlerTarget _08020EAC: .4byte gDisableStructs _08020EB0: .4byte sBattler_AI _08020EB4: ldr r0, _08020ECC @ =gBattlerTarget ldrb r1, [r0] movs r0, 0x58 adds r2, r1, 0 muls r2, r0 mov r0, r8 adds r0, 0x50 adds r2, r0 ldr r0, [r2] movs r1, 0x80 lsls r1, 20 b _08020C9E .align 2, 0 _08020ECC: .4byte gBattlerTarget _08020ED0: ldr r4, _08020EE0 @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _08020EE4 @ =gUnknown_81D8D55 b _08021108 .align 2, 0 _08020EE0: .4byte gUnknown_2023D74 _08020EE4: .4byte gUnknown_81D8D55 _08020EE8: ldr r4, _08020EF8 @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _08020EFC @ =gUnknown_81D8DF1 b _08021108 .align 2, 0 _08020EF8: .4byte gUnknown_2023D74 _08020EFC: .4byte gUnknown_81D8DF1 _08020F00: ldr r6, _08020F50 @ =gBattlerTarget ldrb r0, [r6] movs r2, 0x58 muls r0, r2 mov r1, r8 adds r1, 0x4C adds r5, r0, r1 ldr r4, [r5] movs r0, 0x40 ands r0, r4 cmp r0, 0 bne _08020F1A b _080210EC _08020F1A: movs r0, 0x41 negs r0, r0 ands r4, r0 str r4, [r5] ldr r4, _08020F54 @ =gActiveBattler ldrb r0, [r6] strb r0, [r4] ldrb r0, [r4] muls r0, r2 adds r0, r1 str r0, [sp] movs r0, 0 movs r1, 0x28 movs r2, 0 movs r3, 0x4 bl EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution ldr r4, _08020F58 @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _08020F5C @ =gUnknown_81D9177 b _08021108 .align 2, 0 _08020F50: .4byte gBattlerTarget _08020F54: .4byte gActiveBattler _08020F58: .4byte gUnknown_2023D74 _08020F5C: .4byte gUnknown_81D9177 _08020F60: ldr r4, _08020F70 @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _08020F74 @ =gUnknown_81D8F35 b _08021108 .align 2, 0 _08020F70: .4byte gUnknown_2023D74 _08020F74: .4byte gUnknown_81D8F35 _08020F78: ldr r4, _08020FA8 @ =gBattleMoveDamage ldr r0, _08020FAC @ =gUnknown_2023D54 ldr r0, [r0] movs r1, 0x3 bl __divsi3 str r0, [r4] cmp r0, 0 bne _08020F8E movs r0, 0x1 str r0, [r4] _08020F8E: ldr r4, _08020FB0 @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r1, _08020FB4 @ =gUnknown_825062C ldr r0, _08020FB8 @ =gUnknown_2023E82 ldrb r0, [r0, 0x3] lsls r0, 2 adds r0, r1 ldr r0, [r0] b _08021108 .align 2, 0 _08020FA8: .4byte gBattleMoveDamage _08020FAC: .4byte gUnknown_2023D54 _08020FB0: .4byte gUnknown_2023D74 _08020FB4: .4byte gUnknown_825062C _08020FB8: .4byte gUnknown_2023E82 _08020FBC: mov r4, r9 ldrb r0, [r4] movs r5, 0x58 muls r0, r5 mov r4, r8 adds r4, 0x50 adds r2, r0, r4 ldr r1, [r2] movs r0, 0xC0 lsls r0, 4 ands r0, r1 cmp r0, 0 beq _08020FD8 b _080210EC _08020FD8: movs r0, 0x80 lsls r0, 5 orrs r1, r0 str r1, [r2] ldr r1, _08021010 @ =gUnknown_2023DB8 mov r2, r9 ldrb r0, [r2] lsls r0, 1 adds r0, r1 ldr r1, _08021014 @ =gCurrentMove ldrh r1, [r1] strh r1, [r0] bl Random mov r3, r9 ldrb r1, [r3] adds r2, r1, 0 muls r2, r5 adds r2, r4 movs r1, 0x1 ands r1, r0 adds r1, 0x2 lsls r1, 10 ldr r0, [r2] _08021008: orrs r0, r1 str r0, [r2] b _0802110A .align 2, 0 _08021010: .4byte gUnknown_2023DB8 _08021014: .4byte gCurrentMove _08021018: mov r5, r9 ldrb r3, [r5] movs r4, 0x58 adds r0, r3, 0 muls r0, r4 mov r2, r8 adds r1, r0, r2 adds r0, r1, 0 adds r0, 0x20 ldrb r2, [r0] cmp r2, 0x3C bne _08021058 ldrh r0, [r1, 0x2E] cmp r0, 0 beq _080210EC ldr r0, _0802104C @ =gLastUsedAbility strb r2, [r0] ldr r1, _08021050 @ =gUnknown_2023D74 ldr r0, _08021054 @ =gUnknown_81D948E str r0, [r1] ldrb r0, [r5] movs r1, 0x3C bl sub_80C71D0 b _0802110A .align 2, 0 _0802104C: .4byte gLastUsedAbility _08021050: .4byte gUnknown_2023D74 _08021054: .4byte gUnknown_81D948E _08021058: ldrh r0, [r1, 0x2E] cmp r0, 0 beq _080210EC adds r0, r3, 0 bl GetBattlerSide lsls r0, 24 lsrs r6, r0, 24 ldr r1, _080210D0 @ =gUnknown_2023D68 mov r3, r9 ldrb r0, [r3] muls r0, r4 add r0, r8 ldrh r0, [r0, 0x2E] strh r0, [r1] ldrb r0, [r3] muls r0, r4 add r0, r8 movs r5, 0 movs r1, 0 strh r1, [r0, 0x2E] ldr r2, _080210D4 @ =gUnknown_2023F20 adds r2, 0x29 adds r2, r6, r2 ldr r3, _080210D8 @ =gBitTable ldr r1, _080210DC @ =gBattlerPartyIndexes mov r4, r9 ldrb r0, [r4] lsls r0, 1 adds r0, r1 ldrh r0, [r0] lsls r0, 2 adds r0, r3 ldr r0, [r0] ldrb r1, [r2] orrs r0, r1 strb r0, [r2] ldr r4, _080210E0 @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _080210E4 @ =gUnknown_81D8F86 str r0, [r4] mov r1, r9 ldrb r0, [r1] ldr r2, _080210E8 @ =gBattleStruct ldr r1, [r2] lsls r0, 1 adds r0, r1 adds r0, 0xC8 strb r5, [r0] mov r3, r9 ldrb r0, [r3] ldr r1, [r2] lsls r0, 1 adds r0, r1 adds r0, 0xC9 strb r5, [r0] b _0802110A .align 2, 0 _080210D0: .4byte gUnknown_2023D68 _080210D4: .4byte gUnknown_2023F20 _080210D8: .4byte gBitTable _080210DC: .4byte gBattlerPartyIndexes _080210E0: .4byte gUnknown_2023D74 _080210E4: .4byte gUnknown_81D8F86 _080210E8: .4byte gBattleStruct _080210EC: ldr r1, _080210F8 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] b _0802110A .align 2, 0 _080210F8: .4byte gUnknown_2023D74 _080210FC: ldr r4, _0802111C @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _08021120 @ =gUnknown_81D8FEB _08021108: str r0, [r4] _0802110A: add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802111C: .4byte gUnknown_2023D74 _08021120: .4byte gUnknown_81D8FEB thumb_func_end sub_801FF20 thumb_func_start atk15_seteffectwithchance atk15_seteffectwithchance: @ 8021124 push {r4,lr} ldr r2, _08021150 @ =gBattleMons ldr r0, _08021154 @ =sBattler_AI ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x20 bne _08021160 ldr r2, _08021158 @ =gBattleMoves ldr r0, _0802115C @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x5] lsls r4, r0, 1 b _08021170 .align 2, 0 _08021150: .4byte gBattleMons _08021154: .4byte sBattler_AI _08021158: .4byte gBattleMoves _0802115C: .4byte gCurrentMove _08021160: ldr r2, _08021190 @ =gBattleMoves ldr r0, _08021194 @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r4, [r0, 0x5] _08021170: ldr r3, _08021198 @ =gUnknown_2023E82 ldrb r2, [r3, 0x3] movs r0, 0x80 ands r0, r2 cmp r0, 0 beq _080211A0 ldr r0, _0802119C @ =gMoveResultFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 bne _080211A0 movs r0, 0x7F ands r0, r2 strb r0, [r3, 0x3] b _080211CE .align 2, 0 _08021190: .4byte gBattleMoves _08021194: .4byte gCurrentMove _08021198: .4byte gUnknown_2023E82 _0802119C: .4byte gMoveResultFlags _080211A0: bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x64 bl __umodsi3 lsls r0, 16 lsrs r0, 16 cmp r0, r4 bhi _080211EA ldr r0, _080211D8 @ =gUnknown_2023E82 ldrb r0, [r0, 0x3] cmp r0, 0 beq _080211EA ldr r0, _080211DC @ =gMoveResultFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 bne _080211EA cmp r4, 0x63 bls _080211E0 _080211CE: movs r0, 0 movs r1, 0x80 bl sub_801FF20 b _080211F2 .align 2, 0 _080211D8: .4byte gUnknown_2023E82 _080211DC: .4byte gMoveResultFlags _080211E0: movs r0, 0 movs r1, 0 bl sub_801FF20 b _080211F2 _080211EA: ldr r1, _08021204 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] _080211F2: ldr r0, _08021208 @ =gUnknown_2023E82 movs r1, 0 strb r1, [r0, 0x3] ldr r0, _0802120C @ =gBattleScripting strb r1, [r0, 0x16] pop {r4} pop {r0} bx r0 .align 2, 0 _08021204: .4byte gUnknown_2023D74 _08021208: .4byte gUnknown_2023E82 _0802120C: .4byte gBattleScripting thumb_func_end atk15_seteffectwithchance thumb_func_start atk16_seteffectprimary atk16_seteffectprimary: @ 8021210 push {lr} movs r0, 0x1 movs r1, 0 bl sub_801FF20 pop {r0} bx r0 thumb_func_end atk16_seteffectprimary thumb_func_start atk17_seteffectsecondary atk17_seteffectsecondary: @ 8021220 push {lr} movs r0, 0 movs r1, 0 bl sub_801FF20 pop {r0} bx r0 thumb_func_end atk17_seteffectsecondary thumb_func_start atk18_clearstatusfromeffect atk18_clearstatusfromeffect: @ 8021230 push {lr} ldr r0, _08021254 @ =gUnknown_2023D74 ldr r0, [r0] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r2, _08021258 @ =gActiveBattler strb r0, [r2] ldr r3, _0802125C @ =gUnknown_2023E82 ldrb r0, [r3, 0x3] cmp r0, 0x6 bhi _08021264 ldr r1, _08021260 @ =gBattleMons ldrb r2, [r2] movs r0, 0x58 muls r2, r0 adds r1, 0x4C b _0802126E .align 2, 0 _08021254: .4byte gUnknown_2023D74 _08021258: .4byte gActiveBattler _0802125C: .4byte gUnknown_2023E82 _08021260: .4byte gBattleMons _08021264: ldr r1, _08021298 @ =gBattleMons ldrb r2, [r2] movs r0, 0x58 muls r2, r0 adds r1, 0x50 _0802126E: adds r2, r1 ldr r1, _0802129C @ =gUnknown_825053C ldrb r0, [r3, 0x3] lsls r0, 2 adds r0, r1 ldr r1, [r0] ldr r0, [r2] bics r0, r1 str r0, [r2] ldr r0, _080212A0 @ =gUnknown_2023E82 movs r2, 0 strb r2, [r0, 0x3] ldr r1, _080212A4 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x2 str r0, [r1] ldr r0, _080212A8 @ =gBattleScripting strb r2, [r0, 0x16] pop {r0} bx r0 .align 2, 0 _08021298: .4byte gBattleMons _0802129C: .4byte gUnknown_825053C _080212A0: .4byte gUnknown_2023E82 _080212A4: .4byte gUnknown_2023D74 _080212A8: .4byte gBattleScripting thumb_func_end atk18_clearstatusfromeffect thumb_func_start atk19_tryfaintmon atk19_tryfaintmon: @ 80212AC push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x4 ldr r0, _08021318 @ =gUnknown_2023D74 ldr r2, [r0] ldrb r1, [r2, 0x2] adds r6, r0, 0 cmp r1, 0 beq _08021330 ldrb r0, [r2, 0x1] bl sub_8016E24 ldr r5, _0802131C @ =gActiveBattler strb r0, [r5] ldr r2, _08021320 @ =gUnknown_2023DD0 ldr r1, _08021324 @ =gBitTable ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, [r0] lsls r1, 28 ldr r0, [r2] ands r0, r1 cmp r0, 0 bne _080212E4 b _0802158C _080212E4: ldr r1, [r6] ldrb r4, [r1, 0x3] ldrb r0, [r1, 0x4] lsls r0, 8 orrs r4, r0 ldrb r0, [r1, 0x5] lsls r0, 16 orrs r4, r0 ldrb r0, [r1, 0x6] lsls r0, 24 orrs r4, r0 bl BattleScriptPop str r4, [r6] ldrb r0, [r5] bl GetBattlerSide ldr r1, _08021328 @ =gSideAffecting lsls r0, 24 lsrs r0, 23 adds r0, r1 ldrh r2, [r0] ldr r1, _0802132C @ =0x0000fdff ands r1, r2 strh r1, [r0] b _08021592 .align 2, 0 _08021318: .4byte gUnknown_2023D74 _0802131C: .4byte gActiveBattler _08021320: .4byte gUnknown_2023DD0 _08021324: .4byte gBitTable _08021328: .4byte gSideAffecting _0802132C: .4byte 0x0000fdff _08021330: ldrb r0, [r2, 0x1] cmp r0, 0x1 bne _08021358 ldr r1, _08021348 @ =gActiveBattler ldr r0, _0802134C @ =sBattler_AI ldrb r0, [r0] strb r0, [r1] ldr r0, _08021350 @ =gBattlerTarget ldrb r0, [r0] mov r9, r0 ldr r4, _08021354 @ =gUnknown_81D8674 b _08021368 .align 2, 0 _08021348: .4byte gActiveBattler _0802134C: .4byte sBattler_AI _08021350: .4byte gBattlerTarget _08021354: .4byte gUnknown_81D8674 _08021358: ldr r1, _080213D0 @ =gActiveBattler ldr r0, _080213D4 @ =gBattlerTarget ldrb r0, [r0] strb r0, [r1] ldr r0, _080213D8 @ =sBattler_AI ldrb r0, [r0] mov r9, r0 ldr r4, _080213DC @ =gUnknown_81D8684 _08021368: mov r8, r1 ldr r0, _080213E0 @ =gAbsentBattlerFlags ldrb r1, [r0] ldr r2, _080213E4 @ =gBitTable mov r7, r8 ldrb r3, [r7] lsls r0, r3, 2 adds r0, r2 ldr r2, [r0] ands r1, r2 cmp r1, 0 beq _08021382 b _0802158C _08021382: ldr r1, _080213E8 @ =gBattleMons movs r0, 0x58 muls r0, r3 adds r0, r1 ldrh r0, [r0, 0x28] cmp r0, 0 beq _08021392 b _0802158C _08021392: ldr r5, _080213EC @ =gUnknown_2023DD0 lsls r1, r2, 28 ldr r0, [r5] orrs r0, r1 str r0, [r5] ldr r0, [r6] adds r0, 0x7 bl BattleScriptPush str r4, [r6] ldrb r0, [r7] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _080213F4 ldr r0, [r5] movs r1, 0x80 lsls r1, 15 orrs r0, r1 str r0, [r5] ldr r1, _080213F0 @ =gBattleResults ldrb r0, [r1] cmp r0, 0xFE bhi _080213C8 adds r0, 0x1 strb r0, [r1] _080213C8: ldrb r0, [r7] bl sub_802E228 b _0802142C .align 2, 0 _080213D0: .4byte gActiveBattler _080213D4: .4byte gBattlerTarget _080213D8: .4byte sBattler_AI _080213DC: .4byte gUnknown_81D8684 _080213E0: .4byte gAbsentBattlerFlags _080213E4: .4byte gBitTable _080213E8: .4byte gBattleMons _080213EC: .4byte gUnknown_2023DD0 _080213F0: .4byte gBattleResults _080213F4: ldr r4, _0802154C @ =gBattleResults ldrb r0, [r4, 0x1] cmp r0, 0xFE bhi _08021400 adds r0, 0x1 strb r0, [r4, 0x1] _08021400: ldr r1, _08021550 @ =gBattlerPartyIndexes mov r2, r8 ldrb r0, [r2] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _08021554 @ =gEnemyParty adds r0, r1 movs r1, 0xB bl GetMonData strh r0, [r4, 0x20] ldr r0, _08021558 @ =gBattleStruct ldr r0, [r0] movs r3, 0xC1 lsls r3, 1 adds r1, r0, r3 ldr r0, _0802155C @ =sBattler_AI ldrb r0, [r0] strb r0, [r1] _0802142C: ldr r2, _08021560 @ =gUnknown_2023DD0 ldr r1, [r2] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _0802146A ldr r6, _08021564 @ =gBattleMons ldr r0, _0802155C @ =sBattler_AI ldrb r0, [r0] movs r5, 0x58 muls r0, r5 adds r0, r6 ldrh r0, [r0, 0x28] cmp r0, 0 beq _0802146A movs r0, 0x41 negs r0, r0 ands r1, r0 str r1, [r2] ldr r4, _08021568 @ =gUnknown_2023D74 ldr r0, [r4] bl BattleScriptPush ldr r1, _0802156C @ =gBattleMoveDamage mov r0, r9 muls r0, r5 adds r0, r6 ldrh r0, [r0, 0x28] str r0, [r1] ldr r0, _08021570 @ =gUnknown_81D8C6C str r0, [r4] _0802146A: ldr r1, _08021574 @ =gStatuses3 ldr r6, _08021578 @ =gBattlerTarget ldrb r0, [r6] lsls r0, 2 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 7 ands r0, r1 cmp r0, 0 bne _08021482 b _08021592 _08021482: ldr r0, _08021560 @ =gUnknown_2023DD0 ldr r5, [r0] movs r0, 0x80 lsls r0, 17 ands r5, r0 cmp r5, 0 beq _08021492 b _08021592 _08021492: ldr r0, _0802155C @ =sBattler_AI mov r8, r0 ldrb r0, [r0] bl GetBattlerSide adds r4, r0, 0 ldrb r0, [r6] bl GetBattlerSide lsls r4, 24 lsls r0, 24 cmp r4, r0 beq _08021592 ldr r1, _08021564 @ =gBattleMons mov r9, r1 mov r2, r8 ldrb r1, [r2] movs r7, 0x58 adds r2, r1, 0 muls r2, r7 mov r3, r9 adds r0, r2, r3 ldrh r0, [r0, 0x28] cmp r0, 0 beq _08021592 ldr r0, _0802157C @ =gCurrentMove ldrh r0, [r0] cmp r0, 0xA5 beq _08021592 ldr r0, _08021558 @ =gBattleStruct ldr r0, [r0] adds r0, r1, r0 adds r0, 0x80 ldrb r4, [r0] adds r0, r4, r2 mov r6, r9 adds r6, 0x24 adds r0, r6 strb r5, [r0] ldr r5, _08021568 @ =gUnknown_2023D74 ldr r0, [r5] bl BattleScriptPush ldr r0, _08021580 @ =gUnknown_81D8FA3 str r0, [r5] ldr r5, _08021584 @ =gActiveBattler mov r1, r8 ldrb r0, [r1] strb r0, [r5] adds r1, r4, 0 adds r1, 0x9 lsls r1, 24 lsrs r1, 24 ldrb r0, [r5] muls r0, r7 adds r0, r6 adds r0, r4 str r0, [sp] movs r0, 0 movs r2, 0 movs r3, 0x1 bl EmitSetMonData ldrb r0, [r5] bl MarkBufferBankForExecution ldr r1, _08021588 @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x2 strb r0, [r1, 0x1] lsls r4, 1 mov r2, r8 ldrb r0, [r2] muls r0, r7 adds r0, r4, r0 mov r2, r9 adds r2, 0xC adds r0, r2 ldrh r0, [r0] strb r0, [r1, 0x2] mov r3, r8 ldrb r0, [r3] muls r0, r7 adds r4, r0 adds r4, r2 ldrh r0, [r4] lsrs r0, 8 strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] b _08021592 .align 2, 0 _0802154C: .4byte gBattleResults _08021550: .4byte gBattlerPartyIndexes _08021554: .4byte gEnemyParty _08021558: .4byte gBattleStruct _0802155C: .4byte sBattler_AI _08021560: .4byte gUnknown_2023DD0 _08021564: .4byte gBattleMons _08021568: .4byte gUnknown_2023D74 _0802156C: .4byte gBattleMoveDamage _08021570: .4byte gUnknown_81D8C6C _08021574: .4byte gStatuses3 _08021578: .4byte gBattlerTarget _0802157C: .4byte gCurrentMove _08021580: .4byte gUnknown_81D8FA3 _08021584: .4byte gActiveBattler _08021588: .4byte gBattleTextBuff1 _0802158C: ldr r0, [r6] adds r0, 0x7 str r0, [r6] _08021592: add sp, 0x4 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 thumb_func_end atk19_tryfaintmon thumb_func_start atk1A_faint_animation atk1A_faint_animation: @ 80215A0 push {r4,r5,lr} ldr r0, _080215D0 @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 bne _080215CA ldr r5, _080215D4 @ =gUnknown_2023D74 ldr r0, [r5] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r4, _080215D8 @ =gActiveBattler strb r0, [r4] movs r0, 0 bl EmitFaintAnimation ldrb r0, [r4] bl MarkBufferBankForExecution ldr r0, [r5] adds r0, 0x2 str r0, [r5] _080215CA: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080215D0: .4byte gUnknown_2023BC8 _080215D4: .4byte gUnknown_2023D74 _080215D8: .4byte gActiveBattler thumb_func_end atk1A_faint_animation thumb_func_start atk1B_faint_effects_clear atk1B_faint_effects_clear: @ 80215DC push {r4-r6,lr} sub sp, 0x4 ldr r0, _08021630 @ =gUnknown_2023BC8 ldr r6, [r0] cmp r6, 0 bne _08021628 ldr r5, _08021634 @ =gUnknown_2023D74 ldr r0, [r5] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r4, _08021638 @ =gActiveBattler strb r0, [r4] ldr r1, _0802163C @ =gBattleMons ldrb r0, [r4] movs r2, 0x58 muls r0, r2 adds r1, 0x4C adds r0, r1 str r6, [r0] ldrb r0, [r4] muls r0, r2 adds r0, r1 str r0, [sp] movs r0, 0 movs r1, 0x28 movs r2, 0 movs r3, 0x4 bl EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution bl sub_8012BC8 ldr r0, [r5] adds r0, 0x2 str r0, [r5] _08021628: add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08021630: .4byte gUnknown_2023BC8 _08021634: .4byte gUnknown_2023D74 _08021638: .4byte gActiveBattler _0802163C: .4byte gBattleMons thumb_func_end atk1B_faint_effects_clear thumb_func_start atk1C_jumpifstatus atk1C_jumpifstatus: @ 8021640 push {r4,r5,lr} ldr r5, _0802169C @ =gUnknown_2023D74 ldr r0, [r5] ldrb r0, [r0, 0x1] bl sub_8016E24 lsls r0, 24 lsrs r0, 24 ldr r2, [r5] ldrb r4, [r2, 0x2] ldrb r1, [r2, 0x3] lsls r1, 8 adds r4, r1 ldrb r1, [r2, 0x4] lsls r1, 16 adds r4, r1 ldrb r1, [r2, 0x5] lsls r1, 24 adds r4, r1 ldrb r3, [r2, 0x6] ldrb r1, [r2, 0x7] lsls r1, 8 adds r3, r1 ldrb r1, [r2, 0x8] lsls r1, 16 adds r3, r1 ldrb r1, [r2, 0x9] lsls r1, 24 adds r3, r1 ldr r2, _080216A0 @ =gBattleMons movs r1, 0x58 muls r1, r0 adds r0, r2, 0 adds r0, 0x4C adds r0, r1, r0 ldr r0, [r0] ands r0, r4 cmp r0, 0 beq _080216A4 adds r0, r1, r2 ldrh r0, [r0, 0x28] cmp r0, 0 beq _080216A4 str r3, [r5] b _080216AC .align 2, 0 _0802169C: .4byte gUnknown_2023D74 _080216A0: .4byte gBattleMons _080216A4: ldr r1, _080216B4 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0xA str r0, [r1] _080216AC: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080216B4: .4byte gUnknown_2023D74 thumb_func_end atk1C_jumpifstatus thumb_func_start atk1D_jumpifstatus2 atk1D_jumpifstatus2: @ 80216B8 push {r4,r5,lr} ldr r5, _08021714 @ =gUnknown_2023D74 ldr r0, [r5] ldrb r0, [r0, 0x1] bl sub_8016E24 lsls r0, 24 lsrs r0, 24 ldr r2, [r5] ldrb r4, [r2, 0x2] ldrb r1, [r2, 0x3] lsls r1, 8 adds r4, r1 ldrb r1, [r2, 0x4] lsls r1, 16 adds r4, r1 ldrb r1, [r2, 0x5] lsls r1, 24 adds r4, r1 ldrb r3, [r2, 0x6] ldrb r1, [r2, 0x7] lsls r1, 8 adds r3, r1 ldrb r1, [r2, 0x8] lsls r1, 16 adds r3, r1 ldrb r1, [r2, 0x9] lsls r1, 24 adds r3, r1 ldr r2, _08021718 @ =gBattleMons movs r1, 0x58 muls r1, r0 adds r0, r2, 0 adds r0, 0x50 adds r0, r1, r0 ldr r0, [r0] ands r0, r4 cmp r0, 0 beq _0802171C adds r0, r1, r2 ldrh r0, [r0, 0x28] cmp r0, 0 beq _0802171C str r3, [r5] b _08021724 .align 2, 0 _08021714: .4byte gUnknown_2023D74 _08021718: .4byte gBattleMons _0802171C: ldr r1, _0802172C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0xA str r0, [r1] _08021724: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0802172C: .4byte gUnknown_2023D74 thumb_func_end atk1D_jumpifstatus2 thumb_func_start atk1E_jumpifability atk1E_jumpifability: @ 8021730 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x4 ldr r6, _08021784 @ =gUnknown_2023D74 ldr r2, [r6] ldrb r5, [r2, 0x2] mov r8, r5 ldrb r1, [r2, 0x3] ldrb r0, [r2, 0x4] lsls r0, 8 adds r1, r0 ldrb r0, [r2, 0x5] lsls r0, 16 adds r1, r0 ldrb r0, [r2, 0x6] lsls r0, 24 adds r7, r1, r0 ldrb r0, [r2, 0x1] cmp r0, 0x8 bne _08021790 ldr r0, _08021788 @ =sBattler_AI ldrb r1, [r0] movs r0, 0 str r0, [sp] movs r0, 0xD adds r2, r5, 0 movs r3, 0 bl AbilityBattleEffects lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 beq _08021804 ldr r1, _0802178C @ =gLastUsedAbility strb r5, [r1] str r7, [r6] subs r4, 0x1 lsls r0, r4, 24 lsrs r0, 24 ldrb r1, [r1] b _080217EC .align 2, 0 _08021784: .4byte gUnknown_2023D74 _08021788: .4byte sBattler_AI _0802178C: .4byte gLastUsedAbility _08021790: cmp r0, 0x9 bne _080217C8 ldr r0, _080217C0 @ =sBattler_AI ldrb r1, [r0] movs r0, 0 str r0, [sp] movs r0, 0xC adds r2, r5, 0 movs r3, 0 bl AbilityBattleEffects lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 beq _08021804 ldr r1, _080217C4 @ =gLastUsedAbility strb r5, [r1] str r7, [r6] subs r4, 0x1 lsls r0, r4, 24 lsrs r0, 24 ldrb r1, [r1] b _080217EC .align 2, 0 _080217C0: .4byte sBattler_AI _080217C4: .4byte gLastUsedAbility _080217C8: ldrb r0, [r2, 0x1] bl sub_8016E24 lsls r0, 24 lsrs r4, r0, 24 ldr r1, _080217F8 @ =gBattleMons movs r0, 0x58 muls r0, r4 adds r0, r1 adds r0, 0x20 ldrb r1, [r0] cmp r1, r8 bne _08021804 ldr r0, _080217FC @ =gLastUsedAbility strb r1, [r0] str r7, [r6] ldrb r1, [r0] adds r0, r4, 0 _080217EC: bl sub_80C71D0 ldr r0, _08021800 @ =gBattleScripting strb r4, [r0, 0x15] b _0802180A .align 2, 0 _080217F8: .4byte gBattleMons _080217FC: .4byte gLastUsedAbility _08021800: .4byte gBattleScripting _08021804: ldr r0, [r6] adds r0, 0x7 str r0, [r6] _0802180A: add sp, 0x4 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end atk1E_jumpifability thumb_func_start atk1F_jumpifsideaffecting atk1F_jumpifsideaffecting: @ 8021818 push {r4-r6,lr} ldr r0, _08021830 @ =gUnknown_2023D74 ldr r0, [r0] ldrb r4, [r0, 0x1] cmp r4, 0x1 bne _08021838 ldr r0, _08021834 @ =sBattler_AI ldrb r0, [r0] bl GetBattlerPosition b _08021842 .align 2, 0 _08021830: .4byte gUnknown_2023D74 _08021834: .4byte sBattler_AI _08021838: ldr r0, _08021878 @ =gBattlerTarget ldrb r0, [r0] bl GetBattlerPosition movs r4, 0x1 _08021842: ands r4, r0 ldr r6, _0802187C @ =gUnknown_2023D74 ldr r3, [r6] ldrb r2, [r3, 0x2] ldrb r0, [r3, 0x3] lsls r0, 8 orrs r2, r0 ldrb r1, [r3, 0x4] ldrb r0, [r3, 0x5] lsls r0, 8 adds r1, r0 ldrb r0, [r3, 0x6] lsls r0, 16 adds r1, r0 ldrb r0, [r3, 0x7] lsls r0, 24 adds r5, r1, r0 ldr r1, _08021880 @ =gSideAffecting lsls r0, r4, 1 adds r0, r1 ldrh r0, [r0] ands r2, r0 cmp r2, 0 beq _08021884 str r5, [r6] b _0802188A .align 2, 0 _08021878: .4byte gBattlerTarget _0802187C: .4byte gUnknown_2023D74 _08021880: .4byte gSideAffecting _08021884: adds r0, r3, 0 adds r0, 0x8 str r0, [r6] _0802188A: pop {r4-r6} pop {r0} bx r0 thumb_func_end atk1F_jumpifsideaffecting thumb_func_start atk20_jumpifstat atk20_jumpifstat: @ 8021890 push {r4,r5,lr} movs r5, 0 ldr r4, _080218C4 @ =gUnknown_2023D74 ldr r0, [r4] ldrb r0, [r0, 0x1] bl sub_8016E24 lsls r0, 24 lsrs r0, 24 ldr r2, _080218C8 @ =gBattleMons ldr r3, [r4] movs r1, 0x58 muls r0, r1 ldrb r1, [r3, 0x3] adds r0, r1 adds r2, 0x18 adds r0, r2 ldrb r2, [r0] ldrb r0, [r3, 0x2] cmp r0, 0x5 bhi _0802194E lsls r0, 2 ldr r1, _080218CC @ =_080218D0 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080218C4: .4byte gUnknown_2023D74 _080218C8: .4byte gBattleMons _080218CC: .4byte _080218D0 .align 2, 0 _080218D0: .4byte _080218E8 .4byte _080218F8 .4byte _08021908 .4byte _08021918 .4byte _08021928 .4byte _0802193C _080218E8: ldr r0, _080218F4 @ =gUnknown_2023D74 ldr r0, [r0] ldrb r0, [r0, 0x4] cmp r2, r0 bne _0802194E b _08021948 .align 2, 0 _080218F4: .4byte gUnknown_2023D74 _080218F8: ldr r0, _08021904 @ =gUnknown_2023D74 ldr r0, [r0] ldrb r0, [r0, 0x4] cmp r2, r0 beq _0802194E b _08021948 .align 2, 0 _08021904: .4byte gUnknown_2023D74 _08021908: ldr r0, _08021914 @ =gUnknown_2023D74 ldr r0, [r0] ldrb r0, [r0, 0x4] cmp r2, r0 bls _0802194E b _08021948 .align 2, 0 _08021914: .4byte gUnknown_2023D74 _08021918: ldr r0, _08021924 @ =gUnknown_2023D74 ldr r0, [r0] ldrb r0, [r0, 0x4] cmp r2, r0 bcs _0802194E b _08021948 .align 2, 0 _08021924: .4byte gUnknown_2023D74 _08021928: ldr r0, _08021938 @ =gUnknown_2023D74 ldr r0, [r0] ldrb r0, [r0, 0x4] ands r2, r0 cmp r2, 0 beq _0802194E b _08021948 .align 2, 0 _08021938: .4byte gUnknown_2023D74 _0802193C: ldr r0, _08021970 @ =gUnknown_2023D74 ldr r0, [r0] ldrb r0, [r0, 0x4] ands r2, r0 cmp r2, 0 bne _0802194E _08021948: adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 _0802194E: cmp r5, 0 beq _08021974 ldr r3, _08021970 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x5] ldrb r0, [r2, 0x6] lsls r0, 8 adds r1, r0 ldrb r0, [r2, 0x7] lsls r0, 16 adds r1, r0 ldrb r0, [r2, 0x8] lsls r0, 24 adds r1, r0 str r1, [r3] b _0802197C .align 2, 0 _08021970: .4byte gUnknown_2023D74 _08021974: ldr r1, _08021984 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x9 str r0, [r1] _0802197C: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08021984: .4byte gUnknown_2023D74 thumb_func_end atk20_jumpifstat thumb_func_start atk21_jumpifstatus3condition atk21_jumpifstatus3condition: @ 8021988 push {r4-r6,lr} ldr r4, _080219DC @ =gUnknown_2023D74 ldr r0, [r4] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r5, _080219E0 @ =gActiveBattler strb r0, [r5] ldr r2, [r4] ldrb r1, [r2, 0x2] ldrb r0, [r2, 0x3] lsls r0, 8 adds r1, r0 ldrb r0, [r2, 0x4] lsls r0, 16 adds r1, r0 ldrb r0, [r2, 0x5] lsls r0, 24 adds r6, r1, r0 ldrb r1, [r2, 0x7] ldrb r0, [r2, 0x8] lsls r0, 8 adds r1, r0 ldrb r0, [r2, 0x9] lsls r0, 16 adds r1, r0 ldrb r0, [r2, 0xA] lsls r0, 24 adds r3, r1, r0 ldrb r0, [r2, 0x6] cmp r0, 0 beq _080219E8 ldr r0, _080219E4 @ =gStatuses3 ldrb r1, [r5] lsls r1, 2 adds r1, r0 ldr r0, [r1] ands r0, r6 cmp r0, 0 bne _08021A00 b _080219F8 .align 2, 0 _080219DC: .4byte gUnknown_2023D74 _080219E0: .4byte gActiveBattler _080219E4: .4byte gStatuses3 _080219E8: ldr r0, _080219FC @ =gStatuses3 ldrb r1, [r5] lsls r1, 2 adds r1, r0 ldr r0, [r1] ands r0, r6 cmp r0, 0 beq _08021A00 _080219F8: str r3, [r4] b _08021A06 .align 2, 0 _080219FC: .4byte gStatuses3 _08021A00: adds r0, r2, 0 adds r0, 0xB str r0, [r4] _08021A06: pop {r4-r6} pop {r0} bx r0 thumb_func_end atk21_jumpifstatus3condition thumb_func_start atk22_jumpiftype atk22_jumpiftype: @ 8021A0C push {r4-r6,lr} ldr r4, _08021A54 @ =gUnknown_2023D74 ldr r0, [r4] ldrb r0, [r0, 0x1] bl sub_8016E24 lsls r0, 24 lsrs r0, 24 ldr r3, [r4] ldrb r5, [r3, 0x2] ldrb r2, [r3, 0x3] ldrb r1, [r3, 0x4] lsls r1, 8 adds r2, r1 ldrb r1, [r3, 0x5] lsls r1, 16 adds r2, r1 ldrb r1, [r3, 0x6] lsls r1, 24 adds r6, r2, r1 ldr r2, _08021A58 @ =gBattleMons movs r1, 0x58 muls r0, r1 adds r1, r0, r2 adds r0, r1, 0 adds r0, 0x21 ldrb r0, [r0] cmp r0, r5 beq _08021A50 adds r0, r1, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, r5 bne _08021A5C _08021A50: str r6, [r4] b _08021A60 .align 2, 0 _08021A54: .4byte gUnknown_2023D74 _08021A58: .4byte gBattleMons _08021A5C: adds r0, r3, 0x7 str r0, [r4] _08021A60: pop {r4-r6} pop {r0} bx r0 thumb_func_end atk22_jumpiftype thumb_func_start sub_8021A68 sub_8021A68: @ 8021A68 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} movs r6, 0 ldr r0, _08021AB0 @ =gBattleStruct ldr r0, [r0] adds r0, 0x50 mov r9, r0 ldr r0, _08021AB4 @ =gUnknown_2023D74 ldr r0, [r0] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r1, _08021AB8 @ =gUnknown_2023D6D strb r0, [r1] ldr r2, _08021ABC @ =gUnknown_2023F4E movs r1, 0x2 ands r1, r0 lsls r1, 24 lsrs r1, 25 adds r1, r2 ldrb r1, [r1] mov r8, r1 ldr r0, _08021AC0 @ =gBattleScripting ldrb r0, [r0, 0x1C] cmp r0, 0x6 bls _08021AA4 bl _080223DA _08021AA4: lsls r0, 2 ldr r1, _08021AC4 @ =_08021AC8 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08021AB0: .4byte gBattleStruct _08021AB4: .4byte gUnknown_2023D74 _08021AB8: .4byte gUnknown_2023D6D _08021ABC: .4byte gUnknown_2023F4E _08021AC0: .4byte gBattleScripting _08021AC4: .4byte _08021AC8 .align 2, 0 _08021AC8: .4byte _08021AE4 .4byte _08021B50 .4byte _08021C6A .4byte _08021F78 .4byte _0802207C .4byte _08022368 .4byte _080223B0 _08021AE4: ldr r4, _08021B34 @ =gUnknown_2023D6D ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 beq _08021AF8 bl _080223A4 _08021AF8: ldr r0, _08021B38 @ =gBattleTypeFlags ldr r0, [r0] ldr r1, _08021B3C @ =0x00080982 ands r0, r1 cmp r0, 0 beq _08021B08 bl _080223A4 _08021B08: ldr r1, _08021B40 @ =gBattleScripting ldrb r0, [r1, 0x1C] adds r0, 0x1 strb r0, [r1, 0x1C] ldr r0, _08021B44 @ =gBattleStruct ldr r2, [r0] adds r2, 0xDF ldr r3, _08021B48 @ =gBitTable ldr r1, _08021B4C @ =gBattlerPartyIndexes ldrb r0, [r4] lsls r0, 1 adds r0, r1 ldrh r0, [r0] lsls r0, 2 adds r0, r3 ldr r0, [r0] ldrb r1, [r2] orrs r0, r1 strb r0, [r2] bl _080223DA .align 2, 0 _08021B34: .4byte gUnknown_2023D6D _08021B38: .4byte gBattleTypeFlags _08021B3C: .4byte 0x00080982 _08021B40: .4byte gBattleScripting _08021B44: .4byte gBattleStruct _08021B48: .4byte gBitTable _08021B4C: .4byte gBattlerPartyIndexes _08021B50: movs r5, 0 movs r7, 0 _08021B54: movs r0, 0x64 adds r1, r7, 0 muls r1, r0 ldr r0, _08021BA4 @ =gPlayerParty adds r4, r1, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _08021BC2 adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _08021BC2 ldr r0, _08021BA8 @ =gBitTable lsls r1, r7, 2 adds r1, r0 ldr r0, [r1] mov r1, r8 ands r0, r1 cmp r0, 0 beq _08021B88 adds r5, 0x1 _08021B88: adds r0, r4, 0 movs r1, 0xC bl GetMonData lsls r0, 16 lsrs r0, 16 cmp r0, 0xAF bne _08021BB4 ldr r0, _08021BAC @ =gSaveBlock1Ptr ldr r0, [r0] ldr r2, _08021BB0 @ =0x0000311a adds r0, r2 ldrb r4, [r0] b _08021BBC .align 2, 0 _08021BA4: .4byte gPlayerParty _08021BA8: .4byte gBitTable _08021BAC: .4byte gSaveBlock1Ptr _08021BB0: .4byte 0x0000311a _08021BB4: bl ItemId_GetHoldEffect lsls r0, 24 lsrs r4, r0, 24 _08021BBC: cmp r4, 0x19 bne _08021BC2 adds r6, 0x1 _08021BC2: adds r7, 0x1 cmp r7, 0x5 ble _08021B54 ldr r3, _08021C28 @ =gBaseStats ldr r2, _08021C2C @ =gBattleMons ldr r0, _08021C30 @ =gUnknown_2023D6D ldrb r1, [r0] movs r0, 0x58 muls r1, r0 adds r1, r2 ldrh r2, [r1] lsls r0, r2, 3 subs r0, r2 lsls r0, 2 adds r0, r3 ldrb r2, [r0, 0x9] adds r1, 0x2A ldrb r0, [r1] muls r0, r2 movs r1, 0x7 bl __divsi3 lsls r0, 16 lsrs r1, r0, 16 cmp r6, 0 beq _08021C38 lsrs r4, r0, 17 adds r0, r4, 0 adds r1, r5, 0 bl __divsi3 mov r1, r9 strh r0, [r1] lsls r0, 16 cmp r0, 0 bne _08021C0E movs r0, 0x1 strh r0, [r1] _08021C0E: ldr r5, _08021C34 @ =gUnknown_2023F52 adds r0, r4, 0 adds r1, r6, 0 bl __divsi3 strh r0, [r5] lsls r0, 16 cmp r0, 0 bne _08021C52 movs r0, 0x1 strh r0, [r5] b _08021C52 .align 2, 0 _08021C28: .4byte gBaseStats _08021C2C: .4byte gBattleMons _08021C30: .4byte gUnknown_2023D6D _08021C34: .4byte gUnknown_2023F52 _08021C38: adds r0, r1, 0 adds r1, r5, 0 bl __divsi3 mov r2, r9 strh r0, [r2] lsls r0, 16 cmp r0, 0 bne _08021C4E movs r0, 0x1 strh r0, [r2] _08021C4E: ldr r0, _08021C9C @ =gUnknown_2023F52 strh r6, [r0] _08021C52: ldr r1, _08021CA0 @ =gBattleScripting ldrb r0, [r1, 0x1C] adds r0, 0x1 movs r2, 0 strb r0, [r1, 0x1C] ldr r1, _08021CA4 @ =gBattleStruct ldr r0, [r1] strb r2, [r0, 0x10] ldr r0, [r1] adds r0, 0x53 mov r4, r8 strb r4, [r0] _08021C6A: ldr r0, _08021CA8 @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 beq _08021C74 b _080223DA _08021C74: ldr r0, _08021CA4 @ =gBattleStruct ldr r0, [r0] ldrb r1, [r0, 0x10] movs r0, 0x64 muls r0, r1 ldr r1, _08021CAC @ =gPlayerParty adds r0, r1 movs r1, 0xC bl GetMonData lsls r0, 16 lsrs r0, 16 cmp r0, 0xAF bne _08021CB8 ldr r0, _08021CB0 @ =gSaveBlock1Ptr ldr r0, [r0] ldr r1, _08021CB4 @ =0x0000311a adds r0, r1 ldrb r4, [r0] b _08021CC0 .align 2, 0 _08021C9C: .4byte gUnknown_2023F52 _08021CA0: .4byte gBattleScripting _08021CA4: .4byte gBattleStruct _08021CA8: .4byte gUnknown_2023BC8 _08021CAC: .4byte gPlayerParty _08021CB0: .4byte gSaveBlock1Ptr _08021CB4: .4byte 0x0000311a _08021CB8: bl ItemId_GetHoldEffect lsls r0, 24 lsrs r4, r0, 24 _08021CC0: ldr r5, _08021CE0 @ =gBattleStruct cmp r4, 0x19 beq _08021CE8 ldr r0, [r5] adds r1, r0, 0 adds r1, 0x53 ldrb r0, [r1] movs r2, 0x1 ands r2, r0 cmp r2, 0 bne _08021CE8 lsrs r0, 1 strb r0, [r1] ldr r1, _08021CE4 @ =gBattleScripting b _08021D0C .align 2, 0 _08021CE0: .4byte gBattleStruct _08021CE4: .4byte gBattleScripting _08021CE8: ldr r0, [r5] ldrb r1, [r0, 0x10] movs r0, 0x64 muls r0, r1 ldr r1, _08021D18 @ =gPlayerParty adds r0, r1 movs r1, 0x38 bl GetMonData cmp r0, 0x64 bne _08021D24 ldr r1, [r5] adds r1, 0x53 ldrb r0, [r1] lsrs r0, 1 strb r0, [r1] ldr r1, _08021D1C @ =gBattleScripting movs r2, 0 _08021D0C: movs r0, 0x5 strb r0, [r1, 0x1C] ldr r0, _08021D20 @ =gBattleMoveDamage str r2, [r0] b _080223DA .align 2, 0 _08021D18: .4byte gPlayerParty _08021D1C: .4byte gBattleScripting _08021D20: .4byte gBattleMoveDamage _08021D24: ldr r0, _08021D88 @ =gBattleTypeFlags ldr r0, [r0] ldr r1, _08021D8C @ =0x00010008 ands r0, r1 cmp r0, 0 bne _08021D52 ldr r0, _08021D90 @ =gBattleMons ldrh r0, [r0, 0x28] cmp r0, 0 beq _08021D52 ldr r0, [r5] ldrb r0, [r0, 0x12] cmp r0, 0 bne _08021D52 bl BattleStopLowHpSound ldr r0, _08021D94 @ =0x00000137 bl PlayBGM ldr r1, [r5] ldrb r0, [r1, 0x12] adds r0, 0x1 strb r0, [r1, 0x12] _08021D52: ldr r5, _08021D98 @ =gBattleStruct ldr r0, [r5] ldrb r1, [r0, 0x10] movs r0, 0x64 muls r0, r1 ldr r1, _08021D9C @ =gPlayerParty adds r0, r1 movs r1, 0x39 bl GetMonData cmp r0, 0 bne _08021D6C b _08021F4C _08021D6C: ldr r0, [r5] adds r0, 0x53 ldrb r0, [r0] movs r3, 0x1 ands r3, r0 cmp r3, 0 beq _08021DA4 ldr r1, _08021DA0 @ =gBattleMoveDamage mov r2, r9 ldrh r0, [r2] str r0, [r1] mov r9, r1 b _08021DAA .align 2, 0 _08021D88: .4byte gBattleTypeFlags _08021D8C: .4byte 0x00010008 _08021D90: .4byte gBattleMons _08021D94: .4byte 0x00000137 _08021D98: .4byte gBattleStruct _08021D9C: .4byte gPlayerParty _08021DA0: .4byte gBattleMoveDamage _08021DA4: ldr r0, _08021E28 @ =gBattleMoveDamage str r3, [r0] mov r9, r0 _08021DAA: cmp r4, 0x19 bne _08021DBA ldr r0, _08021E2C @ =gUnknown_2023F52 ldrh r1, [r0] mov r2, r9 ldr r0, [r2] adds r0, r1 str r0, [r2] _08021DBA: cmp r4, 0x28 bne _08021DCE mov r4, r9 ldr r1, [r4] movs r0, 0x96 muls r0, r1 movs r1, 0x64 bl __divsi3 str r0, [r4] _08021DCE: ldr r5, _08021E30 @ =gBattleTypeFlags ldr r0, [r5] movs r1, 0x8 ands r0, r1 cmp r0, 0 beq _08021DEA ldr r4, _08021E28 @ =gBattleMoveDamage ldr r1, [r4] movs r0, 0x96 muls r0, r1 movs r1, 0x64 bl __divsi3 str r0, [r4] _08021DEA: ldr r0, _08021E34 @ =gBattleStruct ldr r0, [r0] ldrb r1, [r0, 0x10] movs r0, 0x64 muls r0, r1 ldr r1, _08021E38 @ =gPlayerParty adds r0, r1 bl IsTradedMon lsls r0, 24 cmp r0, 0 beq _08021E3C ldr r0, [r5] movs r1, 0x80 lsls r1, 9 ands r0, r1 cmp r0, 0 bne _08021E3C ldr r4, _08021E28 @ =gBattleMoveDamage ldr r1, [r4] movs r0, 0x96 muls r0, r1 movs r1, 0x64 bl __divsi3 str r0, [r4] movs r7, 0xA5 lsls r7, 1 mov r9, r4 b _08021E42 .align 2, 0 _08021E28: .4byte gBattleMoveDamage _08021E2C: .4byte gUnknown_2023F52 _08021E30: .4byte gBattleTypeFlags _08021E34: .4byte gBattleStruct _08021E38: .4byte gPlayerParty _08021E3C: ldr r7, _08021E78 @ =0x00000149 ldr r0, _08021E7C @ =gBattleMoveDamage mov r9, r0 _08021E42: ldr r0, _08021E80 @ =gBattleTypeFlags ldr r1, [r0] movs r0, 0x1 ands r1, r0 cmp r1, 0 beq _08021EAE ldr r0, _08021E84 @ =gBattlerPartyIndexes ldr r1, _08021E88 @ =gBattleStruct ldr r4, [r1] ldrh r0, [r0, 0x4] adds r5, r1, 0 ldr r3, _08021E8C @ =gBitTable ldr r2, _08021E90 @ =gAbsentBattlerFlags ldrb r1, [r4, 0x10] cmp r0, r1 bne _08021E94 ldrb r1, [r2] ldr r0, [r3, 0x8] ands r1, r0 cmp r1, 0 bne _08021E94 adds r1, r4, 0 adds r1, 0x8F movs r0, 0x2 strb r0, [r1] b _08021EB6 .align 2, 0 _08021E78: .4byte 0x00000149 _08021E7C: .4byte gBattleMoveDamage _08021E80: .4byte gBattleTypeFlags _08021E84: .4byte gBattlerPartyIndexes _08021E88: .4byte gBattleStruct _08021E8C: .4byte gBitTable _08021E90: .4byte gAbsentBattlerFlags _08021E94: ldrb r2, [r2] ldr r0, [r3] ands r2, r0 cmp r2, 0 bne _08021EA6 ldr r0, [r5] adds r0, 0x8F strb r2, [r0] b _08021EB6 _08021EA6: ldr r0, [r5] adds r0, 0x8F movs r1, 0x2 b _08021EB4 _08021EAE: ldr r0, _08021F5C @ =gBattleStruct ldr r0, [r0] adds r0, 0x8F _08021EB4: strb r1, [r0] _08021EB6: ldr r1, _08021F60 @ =gBattleTextBuff1 movs r2, 0 mov r12, r2 movs r3, 0xFD strb r3, [r1] movs r5, 0x4 strb r5, [r1, 0x1] ldr r6, _08021F5C @ =gBattleStruct ldr r2, [r6] movs r4, 0x8F adds r4, r2 mov r8, r4 ldrb r0, [r4] strb r0, [r1, 0x2] ldrb r0, [r2, 0x10] strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldr r1, _08021F64 @ =gBattleTextBuff2 strb r3, [r1] mov r0, r12 strb r0, [r1, 0x1] strb r7, [r1, 0x2] movs r4, 0xFF lsls r4, 8 ands r7, r4 asrs r0, r7, 8 strb r0, [r1, 0x3] movs r0, 0x1 negs r0, r0 strb r0, [r1, 0x4] ldr r1, _08021F68 @ =gUnknown_2022AD8 strb r3, [r1] movs r0, 0x1 strb r0, [r1, 0x1] strb r5, [r1, 0x2] movs r0, 0x5 strb r0, [r1, 0x3] mov r0, r9 ldr r2, [r0] strb r2, [r1, 0x4] adds r0, r2, 0 ands r0, r4 asrs r0, 8 strb r0, [r1, 0x5] movs r0, 0xFF lsls r0, 16 ands r0, r2 asrs r0, 16 strb r0, [r1, 0x6] lsrs r2, 24 strb r2, [r1, 0x7] movs r0, 0x1 negs r0, r0 strb r0, [r1, 0x8] mov r2, r8 ldrb r1, [r2] movs r0, 0xD bl PrepareStringBattle ldr r0, [r6] ldrb r1, [r0, 0x10] movs r0, 0x64 muls r0, r1 ldr r1, _08021F6C @ =gPlayerParty adds r0, r1 ldr r3, _08021F70 @ =gBattleMons ldr r1, _08021F74 @ =gUnknown_2023D6D ldrb r2, [r1] movs r1, 0x58 muls r1, r2 adds r1, r3 ldrh r1, [r1] bl MonGainEVs _08021F4C: ldr r0, _08021F5C @ =gBattleStruct ldr r1, [r0] adds r1, 0x53 ldrb r0, [r1] lsrs r0, 1 strb r0, [r1] b _08022052 .align 2, 0 _08021F5C: .4byte gBattleStruct _08021F60: .4byte gBattleTextBuff1 _08021F64: .4byte gBattleTextBuff2 _08021F68: .4byte gUnknown_2022AD8 _08021F6C: .4byte gPlayerParty _08021F70: .4byte gBattleMons _08021F74: .4byte gUnknown_2023D6D _08021F78: ldr r0, _0802205C @ =gUnknown_2023BC8 ldr r2, [r0] cmp r2, 0 beq _08021F82 b _080223DA _08021F82: ldr r1, _08022060 @ =gUnknown_20233C4 ldr r7, _08022064 @ =gBattleStruct ldr r0, [r7] adds r0, 0x8F ldrb r0, [r0] lsls r0, 9 adds r0, r1 strb r2, [r0] ldr r0, [r7] ldrb r0, [r0, 0x10] movs r6, 0x64 muls r0, r6 ldr r5, _08022068 @ =gPlayerParty adds r0, r5 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _08022052 ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r6 adds r0, r5 movs r1, 0x38 bl GetMonData cmp r0, 0x64 beq _08022052 ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r6 adds r0, r5 movs r1, 0x3A bl GetMonData ldr r4, _0802206C @ =gBattleResources ldr r1, [r4] ldr r1, [r1, 0x10] strh r0, [r1] ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r6 adds r0, r5 movs r1, 0x3B bl GetMonData ldr r1, [r4] ldr r1, [r1, 0x10] strh r0, [r1, 0x2] ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r6 adds r0, r5 movs r1, 0x3C bl GetMonData ldr r1, [r4] ldr r1, [r1, 0x10] strh r0, [r1, 0x4] ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r6 adds r0, r5 movs r1, 0x3D bl GetMonData ldr r1, [r4] ldr r1, [r1, 0x10] strh r0, [r1, 0x6] ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r6 adds r0, r5 movs r1, 0x3E bl GetMonData ldr r1, [r4] ldr r1, [r1, 0x10] strh r0, [r1, 0x8] ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r6 adds r0, r5 movs r1, 0x3F bl GetMonData ldr r1, [r4] ldr r1, [r1, 0x10] strh r0, [r1, 0xA] ldr r4, _08022070 @ =gActiveBattler ldr r1, [r7] adds r0, r1, 0 adds r0, 0x8F ldrb r0, [r0] strb r0, [r4] ldrb r1, [r1, 0x10] ldr r0, _08022074 @ =gBattleMoveDamage ldrh r2, [r0] movs r0, 0 bl EmitExpUpdate ldrb r0, [r4] bl MarkBufferBankForExecution _08022052: ldr r1, _08022078 @ =gBattleScripting ldrb r0, [r1, 0x1C] adds r0, 0x1 strb r0, [r1, 0x1C] b _080223DA .align 2, 0 _0802205C: .4byte gUnknown_2023BC8 _08022060: .4byte gUnknown_20233C4 _08022064: .4byte gBattleStruct _08022068: .4byte gPlayerParty _0802206C: .4byte gBattleResources _08022070: .4byte gActiveBattler _08022074: .4byte gBattleMoveDamage _08022078: .4byte gBattleScripting _0802207C: ldr r0, _08022314 @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 beq _08022086 b _080223DA _08022086: ldr r1, _08022318 @ =gActiveBattler ldr r0, _0802231C @ =gBattleStruct ldr r4, [r0] adds r0, r4, 0 adds r0, 0x8F ldrb r0, [r0] strb r0, [r1] ldr r3, _08022320 @ =gUnknown_20233C4 ldrb r2, [r1] lsls r1, r2, 9 adds r0, r1, r3 ldrb r0, [r0] cmp r0, 0x21 beq _080220A4 b _08022350 _080220A4: adds r0, r3, 0x1 adds r0, r1, r0 ldrb r0, [r0] cmp r0, 0xB beq _080220B0 b _08022350 _080220B0: ldr r0, _08022324 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x8 ands r0, r1 cmp r0, 0 beq _080220DA ldr r0, _08022328 @ =gBattlerPartyIndexes lsls r1, r2, 1 adds r1, r0 ldrh r0, [r1] ldrb r4, [r4, 0x10] cmp r0, r4 bne _080220DA adds r1, r0, 0 movs r0, 0x64 muls r0, r1 ldr r1, _0802232C @ =gPlayerParty adds r0, r1 adds r1, r2, 0 bl HandleLowHpMusicChange _080220DA: ldr r1, _08022330 @ =gBattleTextBuff1 movs r3, 0xFD strb r3, [r1] movs r0, 0x4 strb r0, [r1, 0x1] ldr r6, _08022318 @ =gActiveBattler ldrb r0, [r6] strb r0, [r1, 0x2] ldr r4, _0802231C @ =gBattleStruct mov r9, r4 ldr r2, [r4] ldrb r0, [r2, 0x10] strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldr r4, _08022334 @ =gBattleTextBuff2 strb r3, [r4] movs r0, 0x1 strb r0, [r4, 0x1] strb r0, [r4, 0x2] movs r0, 0x3 strb r0, [r4, 0x3] ldrb r0, [r2, 0x10] movs r1, 0x64 mov r8, r1 mov r2, r8 muls r2, r0 adds r0, r2, 0 ldr r7, _0802232C @ =gPlayerParty adds r0, r7 movs r1, 0x38 bl GetMonData strb r0, [r4, 0x4] movs r0, 0x1 negs r0, r0 strb r0, [r4, 0x5] bl BattleScriptPushCursor ldr r2, _08022338 @ =gUnknown_3004FD4 ldr r1, _0802233C @ =gBitTable mov r4, r9 ldr r5, [r4] ldrb r0, [r5, 0x10] lsls r0, 2 adds r0, r1 ldr r0, [r0] ldrb r1, [r2] orrs r0, r1 strb r0, [r2] ldr r1, _08022340 @ =gUnknown_2023D74 ldr r0, _08022344 @ =gUnknown_81D89F5 str r0, [r1] ldr r4, _08022348 @ =gBattleMoveDamage ldr r2, _08022320 @ =gUnknown_20233C4 ldrb r1, [r6] lsls r1, 9 adds r0, r2, 0x2 adds r0, r1, r0 ldrb r3, [r0] adds r2, 0x3 adds r1, r2 ldrb r0, [r1] lsls r0, 8 orrs r3, r0 str r3, [r4] ldrb r0, [r5, 0x10] mov r1, r8 muls r1, r0 adds r0, r1, 0 adds r0, r7 movs r1, 0 bl AdjustFriendship ldr r1, _08022328 @ =gBattlerPartyIndexes mov r2, r9 ldr r0, [r2] ldrb r2, [r0, 0x10] ldrh r0, [r1] cmp r0, r2 bne _08022246 ldr r4, _0802234C @ =gBattleMons ldrh r0, [r4, 0x28] cmp r0, 0 beq _08022246 mov r0, r8 muls r0, r2 adds r0, r7 movs r1, 0x38 bl GetMonData adds r1, r4, 0 adds r1, 0x2A strb r0, [r1] mov r1, r9 ldr r0, [r1] ldrb r0, [r0, 0x10] mov r2, r8 muls r2, r0 adds r0, r2, 0 adds r0, r7 movs r1, 0x39 bl GetMonData strh r0, [r4, 0x28] mov r1, r9 ldr r0, [r1] ldrb r0, [r0, 0x10] mov r2, r8 muls r2, r0 adds r0, r2, 0 adds r0, r7 movs r1, 0x3A bl GetMonData strh r0, [r4, 0x2C] mov r1, r9 ldr r0, [r1] ldrb r0, [r0, 0x10] mov r2, r8 muls r2, r0 adds r0, r2, 0 adds r0, r7 movs r1, 0x3B bl GetMonData strh r0, [r4, 0x2] mov r1, r9 ldr r0, [r1] ldrb r0, [r0, 0x10] mov r2, r8 muls r2, r0 adds r0, r2, 0 adds r0, r7 movs r1, 0x3C bl GetMonData strh r0, [r4, 0x4] mov r1, r9 ldr r0, [r1] ldrb r0, [r0, 0x10] mov r2, r8 muls r2, r0 adds r0, r2, 0 adds r0, r7 movs r1, 0x3D bl GetMonData strh r0, [r4, 0x6] mov r1, r9 ldr r0, [r1] ldrb r0, [r0, 0x10] mov r2, r8 muls r2, r0 adds r0, r2, 0 adds r0, r7 movs r1, 0x3D bl GetMonData strh r0, [r4, 0x6] mov r1, r9 ldr r0, [r1] ldrb r0, [r0, 0x10] mov r2, r8 muls r2, r0 adds r0, r2, 0 adds r0, r7 movs r1, 0x3E bl GetMonData strh r0, [r4, 0x8] mov r1, r9 ldr r0, [r1] ldrb r0, [r0, 0x10] mov r2, r8 muls r2, r0 adds r0, r2, 0 adds r0, r7 movs r1, 0x3F bl GetMonData strh r0, [r4, 0xA] _08022246: ldr r0, _08022328 @ =gBattlerPartyIndexes ldr r7, _0802231C @ =gBattleStruct ldr r1, [r7] ldrb r2, [r1, 0x10] ldrh r0, [r0, 0x4] cmp r0, r2 beq _08022256 b _08022356 _08022256: ldr r6, _0802234C @ =gBattleMons movs r4, 0xD8 adds r4, r6 mov r8, r4 ldrh r0, [r4] cmp r0, 0 beq _08022356 ldr r0, _08022324 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _08022356 movs r5, 0x64 adds r0, r2, 0 muls r0, r5 ldr r4, _0802232C @ =gPlayerParty adds r0, r4 movs r1, 0x38 bl GetMonData adds r1, r6, 0 adds r1, 0xDA strb r0, [r1] ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r5 adds r0, r4 movs r1, 0x39 bl GetMonData mov r1, r8 strh r0, [r1] ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r5 adds r0, r4 movs r1, 0x3A bl GetMonData adds r1, r6, 0 adds r1, 0xDC strh r0, [r1] ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r5 adds r0, r4 movs r1, 0x3B bl GetMonData adds r1, r6, 0 adds r1, 0xB2 strh r0, [r1] ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r5 adds r0, r4 movs r1, 0x3C bl GetMonData adds r1, r6, 0 adds r1, 0xB4 strh r0, [r1] ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r5 adds r0, r4 movs r1, 0x3D bl GetMonData movs r2, 0xB6 adds r2, r6 mov r8, r2 strh r0, [r2] ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r5 adds r0, r4 movs r1, 0x3D bl GetMonData mov r1, r8 strh r0, [r1] ldr r0, [r7] ldrb r0, [r0, 0x10] muls r0, r5 adds r0, r4 movs r1, 0x3E bl GetMonData adds r1, r6, 0 adds r1, 0xB8 strh r0, [r1] b _08022356 .align 2, 0 _08022314: .4byte gUnknown_2023BC8 _08022318: .4byte gActiveBattler _0802231C: .4byte gBattleStruct _08022320: .4byte gUnknown_20233C4 _08022324: .4byte gBattleTypeFlags _08022328: .4byte gBattlerPartyIndexes _0802232C: .4byte gPlayerParty _08022330: .4byte gBattleTextBuff1 _08022334: .4byte gBattleTextBuff2 _08022338: .4byte gUnknown_3004FD4 _0802233C: .4byte gBitTable _08022340: .4byte gUnknown_2023D74 _08022344: .4byte gUnknown_81D89F5 _08022348: .4byte gBattleMoveDamage _0802234C: .4byte gBattleMons _08022350: ldr r1, _08022360 @ =gBattleMoveDamage movs r0, 0 str r0, [r1] _08022356: ldr r1, _08022364 @ =gBattleScripting movs r0, 0x5 strb r0, [r1, 0x1C] b _080223DA .align 2, 0 _08022360: .4byte gBattleMoveDamage _08022364: .4byte gBattleScripting _08022368: ldr r0, _08022378 @ =gBattleMoveDamage ldr r0, [r0] cmp r0, 0 beq _08022380 ldr r1, _0802237C @ =gBattleScripting movs r0, 0x3 strb r0, [r1, 0x1C] b _080223DA .align 2, 0 _08022378: .4byte gBattleMoveDamage _0802237C: .4byte gBattleScripting _08022380: ldr r2, _0802239C @ =gBattleStruct ldr r1, [r2] ldrb r0, [r1, 0x10] adds r0, 0x1 strb r0, [r1, 0x10] ldr r0, [r2] ldrb r0, [r0, 0x10] cmp r0, 0x5 bhi _080223A4 ldr r1, _080223A0 @ =gBattleScripting movs r0, 0x2 strb r0, [r1, 0x1C] b _080223DA .align 2, 0 _0802239C: .4byte gBattleStruct _080223A0: .4byte gBattleScripting _080223A4: ldr r1, _080223AC @ =gBattleScripting movs r0, 0x6 strb r0, [r1, 0x1C] b _080223DA .align 2, 0 _080223AC: .4byte gBattleScripting _080223B0: ldr r0, _080223E8 @ =gUnknown_2023BC8 ldr r5, [r0] cmp r5, 0 bne _080223DA ldr r4, _080223EC @ =gBattleMons ldr r2, _080223F0 @ =gUnknown_2023D6D ldrb r0, [r2] movs r1, 0x58 muls r0, r1 adds r0, r4 movs r3, 0 strh r5, [r0, 0x2E] ldrb r0, [r2] muls r0, r1 adds r0, r4 adds r0, 0x20 strb r3, [r0] ldr r1, _080223F4 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x2 str r0, [r1] _080223DA: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080223E8: .4byte gUnknown_2023BC8 _080223EC: .4byte gBattleMons _080223F0: .4byte gUnknown_2023D6D _080223F4: .4byte gUnknown_2023D74 thumb_func_end sub_8021A68 thumb_func_start sub_80223F8 sub_80223F8: @ 80223F8 push {r4-r7,lr} mov r7, r8 push {r7} movs r6, 0 ldr r0, _08022534 @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 beq _0802240A b _0802258A _0802240A: movs r5, 0 _0802240C: movs r0, 0x64 adds r1, r5, 0 muls r1, r0 ldr r0, _08022538 @ =gPlayerParty adds r4, r1, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0802243C adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 bne _0802243C adds r0, r4, 0 movs r1, 0x39 bl GetMonData adds r0, r6, r0 lsls r0, 16 lsrs r6, r0, 16 _0802243C: adds r5, 0x1 cmp r5, 0x5 ble _0802240C cmp r6, 0 bne _08022450 ldr r0, _0802253C @ =gBattleOutcome ldrb r1, [r0] movs r2, 0x2 orrs r1, r2 strb r1, [r0] _08022450: movs r6, 0 movs r5, 0 _08022454: movs r0, 0x64 adds r1, r5, 0 muls r1, r0 ldr r0, _08022540 @ =gEnemyParty adds r4, r1, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _08022484 adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 bne _08022484 adds r0, r4, 0 movs r1, 0x39 bl GetMonData adds r0, r6, r0 lsls r0, 16 lsrs r6, r0, 16 _08022484: adds r5, 0x1 cmp r5, 0x5 ble _08022454 ldr r2, _0802253C @ =gBattleOutcome cmp r6, 0 bne _08022498 ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] _08022498: ldrb r0, [r2] cmp r0, 0 bne _08022582 ldr r0, _08022544 @ =gBattleTypeFlags ldr r1, [r0] movs r2, 0x2 ands r1, r2 mov r8, r0 cmp r1, 0 beq _08022582 movs r3, 0 movs r5, 0 ldr r0, _08022548 @ =gBattlersCount ldrb r1, [r0] mov r12, r0 ldr r7, _0802254C @ =gUnknown_2023D74 cmp r3, r1 bge _080224E4 ldr r0, _08022550 @ =gUnknown_2023DD0 movs r6, 0x80 lsls r6, 21 ldr r4, [r0] adds r2, r1, 0 ldr r1, _08022554 @ =gUnknown_2023ECC _080224C8: adds r0, r6, 0 lsls r0, r5 ands r0, r4 cmp r0, 0 beq _080224DC ldrb r0, [r1] lsls r0, 25 cmp r0, 0 blt _080224DC adds r3, 0x1 _080224DC: adds r1, 0x28 adds r5, 0x2 cmp r5, r2 blt _080224C8 _080224E4: movs r2, 0 movs r5, 0x1 mov r0, r12 ldrb r1, [r0] cmp r5, r1 bge _0802251E ldr r0, _08022550 @ =gUnknown_2023DD0 movs r4, 0x80 lsls r4, 21 mov r12, r4 ldr r6, [r0] ldr r0, _08022554 @ =gUnknown_2023ECC adds r4, r1, 0 adds r1, r0, 0 adds r1, 0x14 _08022502: mov r0, r12 lsls r0, r5 ands r0, r6 cmp r0, 0 beq _08022516 ldrb r0, [r1] lsls r0, 25 cmp r0, 0 blt _08022516 adds r2, 0x1 _08022516: adds r1, 0x28 adds r5, 0x2 cmp r5, r4 blt _08022502 _0802251E: mov r1, r8 ldr r0, [r1] movs r1, 0x40 ands r0, r1 cmp r0, 0 beq _08022558 adds r0, r2, r3 cmp r0, 0x1 bgt _08022560 b _0802257A .align 2, 0 _08022534: .4byte gUnknown_2023BC8 _08022538: .4byte gPlayerParty _0802253C: .4byte gBattleOutcome _08022540: .4byte gEnemyParty _08022544: .4byte gBattleTypeFlags _08022548: .4byte gBattlersCount _0802254C: .4byte gUnknown_2023D74 _08022550: .4byte gUnknown_2023DD0 _08022554: .4byte gUnknown_2023ECC _08022558: cmp r2, 0 beq _0802257A cmp r3, 0 beq _0802257A _08022560: ldr r2, [r7] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 adds r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 adds r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 adds r1, r0 str r1, [r7] b _0802258A _0802257A: ldr r0, [r7] adds r0, 0x5 str r0, [r7] b _0802258A _08022582: ldr r1, _08022594 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802258A: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08022594: .4byte gUnknown_2023D74 thumb_func_end sub_80223F8 thumb_func_start MoveValuesCleanUp MoveValuesCleanUp: @ 8022598 ldr r1, _080225C0 @ =gMoveResultFlags movs r0, 0 strb r0, [r1] ldr r0, _080225C4 @ =gBattleScripting movs r2, 0 movs r1, 0x1 strb r1, [r0, 0xE] ldr r0, _080225C8 @ =gCritMultiplier strb r1, [r0] ldr r0, _080225CC @ =gUnknown_2023E82 strb r2, [r0, 0x3] strb r2, [r0, 0x6] ldr r2, _080225D0 @ =gUnknown_2023DD0 ldr r0, [r2] subs r1, 0x42 ands r0, r1 ldr r1, _080225D4 @ =0xffffbfff ands r0, r1 str r0, [r2] bx lr .align 2, 0 _080225C0: .4byte gMoveResultFlags _080225C4: .4byte gBattleScripting _080225C8: .4byte gCritMultiplier _080225CC: .4byte gUnknown_2023E82 _080225D0: .4byte gUnknown_2023DD0 _080225D4: .4byte 0xffffbfff thumb_func_end MoveValuesCleanUp thumb_func_start atk25_movevaluescleanup atk25_movevaluescleanup: @ 80225D8 push {lr} bl MoveValuesCleanUp ldr r1, _080225EC @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _080225EC: .4byte gUnknown_2023D74 thumb_func_end atk25_movevaluescleanup thumb_func_start atk26_setmultihit atk26_setmultihit: @ 80225F0 ldr r3, _08022600 @ =gUnknown_2023D72 ldr r2, _08022604 @ =gUnknown_2023D74 ldr r0, [r2] ldrb r1, [r0, 0x1] strb r1, [r3] adds r0, 0x2 str r0, [r2] bx lr .align 2, 0 _08022600: .4byte gUnknown_2023D72 _08022604: .4byte gUnknown_2023D74 thumb_func_end atk26_setmultihit thumb_func_start atk27_decrementmultihit atk27_decrementmultihit: @ 8022608 push {lr} ldr r1, _08022624 @ =gUnknown_2023D72 ldrb r0, [r1] subs r0, 0x1 strb r0, [r1] lsls r0, 24 cmp r0, 0 bne _0802262C ldr r1, _08022628 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08022646 .align 2, 0 _08022624: .4byte gUnknown_2023D72 _08022628: .4byte gUnknown_2023D74 _0802262C: ldr r3, _0802264C @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 adds r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 adds r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 adds r1, r0 str r1, [r3] _08022646: pop {r0} bx r0 .align 2, 0 _0802264C: .4byte gUnknown_2023D74 thumb_func_end atk27_decrementmultihit thumb_func_start atk28_goto atk28_goto: @ 8022650 ldr r3, _0802266C @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 adds r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 adds r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 adds r1, r0 str r1, [r3] bx lr .align 2, 0 _0802266C: .4byte gUnknown_2023D74 thumb_func_end atk28_goto thumb_func_start atk29_jumpifbyte atk29_jumpifbyte: @ 8022670 push {r4-r6,lr} ldr r3, _080226B4 @ =gUnknown_2023D74 ldr r1, [r3] ldrb r6, [r1, 0x1] ldrb r2, [r1, 0x2] ldrb r0, [r1, 0x3] lsls r0, 8 adds r2, r0 ldrb r0, [r1, 0x4] lsls r0, 16 adds r2, r0 ldrb r0, [r1, 0x5] lsls r0, 24 adds r5, r2, r0 ldrb r4, [r1, 0x6] ldrb r2, [r1, 0x7] ldrb r0, [r1, 0x8] lsls r0, 8 adds r2, r0 ldrb r0, [r1, 0x9] lsls r0, 16 adds r2, r0 ldrb r0, [r1, 0xA] lsls r0, 24 adds r2, r0 adds r1, 0xB str r1, [r3] cmp r6, 0x5 bhi _08022708 lsls r0, r6, 2 ldr r1, _080226B8 @ =_080226BC adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080226B4: .4byte gUnknown_2023D74 _080226B8: .4byte _080226BC .align 2, 0 _080226BC: .4byte _080226D4 .4byte _080226DC .4byte _080226E4 .4byte _080226EC .4byte _080226F4 .4byte _080226FE _080226D4: ldrb r0, [r5] cmp r0, r4 bne _08022708 b _08022706 _080226DC: ldrb r0, [r5] cmp r0, r4 beq _08022708 b _08022706 _080226E4: ldrb r0, [r5] cmp r0, r4 bls _08022708 b _08022706 _080226EC: ldrb r0, [r5] cmp r0, r4 bcs _08022708 b _08022706 _080226F4: ldrb r0, [r5] ands r4, r0 cmp r4, 0 beq _08022708 b _08022706 _080226FE: ldrb r0, [r5] ands r4, r0 cmp r4, 0 bne _08022708 _08022706: str r2, [r3] _08022708: pop {r4-r6} pop {r0} bx r0 thumb_func_end atk29_jumpifbyte thumb_func_start atk2A_jumpifhalfword atk2A_jumpifhalfword: @ 8022710 push {r4-r6,lr} ldr r3, _0802275C @ =gUnknown_2023D74 ldr r1, [r3] ldrb r6, [r1, 0x1] ldrb r2, [r1, 0x2] ldrb r0, [r1, 0x3] lsls r0, 8 adds r2, r0 ldrb r0, [r1, 0x4] lsls r0, 16 adds r2, r0 ldrb r0, [r1, 0x5] lsls r0, 24 adds r5, r2, r0 ldrb r4, [r1, 0x6] ldrb r0, [r1, 0x7] lsls r0, 8 orrs r4, r0 ldrb r2, [r1, 0x8] ldrb r0, [r1, 0x9] lsls r0, 8 adds r2, r0 ldrb r0, [r1, 0xA] lsls r0, 16 adds r2, r0 ldrb r0, [r1, 0xB] lsls r0, 24 adds r2, r0 adds r1, 0xC str r1, [r3] cmp r6, 0x5 bhi _080227B0 lsls r0, r6, 2 ldr r1, _08022760 @ =_08022764 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0802275C: .4byte gUnknown_2023D74 _08022760: .4byte _08022764 .align 2, 0 _08022764: .4byte _0802277C .4byte _08022784 .4byte _0802278C .4byte _08022794 .4byte _0802279C .4byte _080227A6 _0802277C: ldrh r0, [r5] cmp r0, r4 bne _080227B0 b _080227AE _08022784: ldrh r0, [r5] cmp r0, r4 beq _080227B0 b _080227AE _0802278C: ldrh r0, [r5] cmp r0, r4 bls _080227B0 b _080227AE _08022794: ldrh r0, [r5] cmp r0, r4 bcs _080227B0 b _080227AE _0802279C: ldrh r0, [r5] ands r4, r0 cmp r4, 0 beq _080227B0 b _080227AE _080227A6: ldrh r0, [r5] ands r4, r0 cmp r4, 0 bne _080227B0 _080227AE: str r2, [r3] _080227B0: pop {r4-r6} pop {r0} bx r0 thumb_func_end atk2A_jumpifhalfword thumb_func_start atk2B_jumpifword atk2B_jumpifword: @ 80227B8 push {r4-r6,lr} ldr r3, _08022810 @ =gUnknown_2023D74 ldr r1, [r3] ldrb r6, [r1, 0x1] ldrb r2, [r1, 0x2] ldrb r0, [r1, 0x3] lsls r0, 8 adds r2, r0 ldrb r0, [r1, 0x4] lsls r0, 16 adds r2, r0 ldrb r0, [r1, 0x5] lsls r0, 24 adds r5, r2, r0 ldrb r4, [r1, 0x6] ldrb r0, [r1, 0x7] lsls r0, 8 orrs r4, r0 ldrb r0, [r1, 0x8] lsls r0, 16 orrs r4, r0 ldrb r0, [r1, 0x9] lsls r0, 24 orrs r4, r0 ldrb r2, [r1, 0xA] ldrb r0, [r1, 0xB] lsls r0, 8 adds r2, r0 ldrb r0, [r1, 0xC] lsls r0, 16 adds r2, r0 ldrb r0, [r1, 0xD] lsls r0, 24 adds r2, r0 adds r1, 0xE str r1, [r3] cmp r6, 0x5 bhi _08022864 lsls r0, r6, 2 ldr r1, _08022814 @ =_08022818 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08022810: .4byte gUnknown_2023D74 _08022814: .4byte _08022818 .align 2, 0 _08022818: .4byte _08022830 .4byte _08022838 .4byte _08022840 .4byte _08022848 .4byte _08022850 .4byte _0802285A _08022830: ldr r0, [r5] cmp r0, r4 bne _08022864 b _08022862 _08022838: ldr r0, [r5] cmp r0, r4 beq _08022864 b _08022862 _08022840: ldr r0, [r5] cmp r0, r4 bls _08022864 b _08022862 _08022848: ldr r0, [r5] cmp r0, r4 bcs _08022864 b _08022862 _08022850: ldr r0, [r5] ands r0, r4 cmp r0, 0 beq _08022864 b _08022862 _0802285A: ldr r0, [r5] ands r0, r4 cmp r0, 0 bne _08022864 _08022862: str r2, [r3] _08022864: pop {r4-r6} pop {r0} bx r0 thumb_func_end atk2B_jumpifword thumb_func_start atk2C_jumpifarrayequal atk2C_jumpifarrayequal: @ 802286C push {r4-r7,lr} ldr r2, _080228C4 @ =gUnknown_2023D74 ldr r3, [r2] ldrb r1, [r3, 0x1] ldrb r0, [r3, 0x2] lsls r0, 8 adds r1, r0 ldrb r0, [r3, 0x3] lsls r0, 16 adds r1, r0 ldrb r0, [r3, 0x4] lsls r0, 24 adds r5, r1, r0 ldrb r1, [r3, 0x5] ldrb r0, [r3, 0x6] lsls r0, 8 adds r1, r0 ldrb r0, [r3, 0x7] lsls r0, 16 adds r1, r0 ldrb r0, [r3, 0x8] lsls r0, 24 adds r4, r1, r0 ldrb r6, [r3, 0x9] ldrb r1, [r3, 0xA] ldrb r0, [r3, 0xB] lsls r0, 8 adds r1, r0 ldrb r0, [r3, 0xC] lsls r0, 16 adds r1, r0 ldrb r0, [r3, 0xD] lsls r0, 24 adds r1, r0 mov r12, r1 movs r1, 0 cmp r1, r6 bcs _080228E4 ldrb r0, [r5] ldrb r7, [r4] cmp r0, r7 beq _080228C8 adds r0, r3, 0 b _080228E0 .align 2, 0 _080228C4: .4byte gUnknown_2023D74 _080228C8: adds r5, 0x1 adds r4, 0x1 adds r0, r1, 0x1 lsls r0, 24 lsrs r1, r0, 24 cmp r1, r6 bcs _080228E4 ldrb r0, [r5] ldrb r3, [r4] cmp r0, r3 beq _080228C8 ldr r0, [r2] _080228E0: adds r0, 0xE str r0, [r2] _080228E4: cmp r1, r6 bne _080228EC mov r7, r12 str r7, [r2] _080228EC: pop {r4-r7} pop {r0} bx r0 thumb_func_end atk2C_jumpifarrayequal thumb_func_start atk2D_jumpifarraynotequal atk2D_jumpifarraynotequal: @ 80228F4 push {r4-r7,lr} movs r7, 0 ldr r3, _08022968 @ =gUnknown_2023D74 ldr r1, [r3] ldrb r2, [r1, 0x1] ldrb r0, [r1, 0x2] lsls r0, 8 adds r2, r0 ldrb r0, [r1, 0x3] lsls r0, 16 adds r2, r0 ldrb r0, [r1, 0x4] lsls r0, 24 adds r5, r2, r0 ldrb r2, [r1, 0x5] ldrb r0, [r1, 0x6] lsls r0, 8 adds r2, r0 ldrb r0, [r1, 0x7] lsls r0, 16 adds r2, r0 ldrb r0, [r1, 0x8] lsls r0, 24 adds r4, r2, r0 ldrb r6, [r1, 0x9] ldrb r2, [r1, 0xA] ldrb r0, [r1, 0xB] lsls r0, 8 adds r2, r0 ldrb r0, [r1, 0xC] lsls r0, 16 adds r2, r0 ldrb r0, [r1, 0xD] lsls r0, 24 adds r2, r0 mov r12, r2 movs r1, 0 cmp r7, r6 bcs _0802295E _08022942: ldrb r0, [r5] ldrb r2, [r4] cmp r0, r2 bne _08022950 adds r0, r7, 0x1 lsls r0, 24 lsrs r7, r0, 24 _08022950: adds r5, 0x1 adds r4, 0x1 adds r0, r1, 0x1 lsls r0, 24 lsrs r1, r0, 24 cmp r1, r6 bcc _08022942 _0802295E: cmp r7, r6 beq _0802296C mov r0, r12 b _08022970 .align 2, 0 _08022968: .4byte gUnknown_2023D74 _0802296C: ldr r0, [r3] adds r0, 0xE _08022970: str r0, [r3] pop {r4-r7} pop {r0} bx r0 thumb_func_end atk2D_jumpifarraynotequal thumb_func_start atk2E_setbyte atk2E_setbyte: @ 8022978 ldr r3, _0802299C @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 adds r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 adds r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 adds r1, r0 ldrb r0, [r2, 0x5] strb r0, [r1] ldr r0, [r3] adds r0, 0x6 str r0, [r3] bx lr .align 2, 0 _0802299C: .4byte gUnknown_2023D74 thumb_func_end atk2E_setbyte thumb_func_start atk2F_addbyte atk2F_addbyte: @ 80229A0 ldr r3, _080229C8 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 adds r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 adds r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 adds r1, r0 ldrb r0, [r2, 0x5] ldrb r2, [r1] adds r0, r2 strb r0, [r1] ldr r0, [r3] adds r0, 0x6 str r0, [r3] bx lr .align 2, 0 _080229C8: .4byte gUnknown_2023D74 thumb_func_end atk2F_addbyte thumb_func_start atk30_subbyte atk30_subbyte: @ 80229CC ldr r3, _080229F4 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 adds r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 adds r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 adds r1, r0 ldrb r0, [r1] ldrb r2, [r2, 0x5] subs r0, r2 strb r0, [r1] ldr r0, [r3] adds r0, 0x6 str r0, [r3] bx lr .align 2, 0 _080229F4: .4byte gUnknown_2023D74 thumb_func_end atk30_subbyte thumb_func_start atk31_copyarray atk31_copyarray: @ 80229F8 push {r4-r6,lr} ldr r3, _08022A48 @ =gUnknown_2023D74 ldr r1, [r3] ldrb r2, [r1, 0x1] ldrb r0, [r1, 0x2] lsls r0, 8 adds r2, r0 ldrb r0, [r1, 0x3] lsls r0, 16 adds r2, r0 ldrb r0, [r1, 0x4] lsls r0, 24 adds r6, r2, r0 ldrb r2, [r1, 0x5] ldrb r0, [r1, 0x6] lsls r0, 8 adds r2, r0 ldrb r0, [r1, 0x7] lsls r0, 16 adds r2, r0 ldrb r0, [r1, 0x8] lsls r0, 24 adds r5, r2, r0 ldrb r4, [r1, 0x9] movs r2, 0 cmp r2, r4 bge _08022A3C _08022A2E: adds r0, r6, r2 adds r1, r5, r2 ldrb r1, [r1] strb r1, [r0] adds r2, 0x1 cmp r2, r4 blt _08022A2E _08022A3C: ldr r0, [r3] adds r0, 0xA str r0, [r3] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08022A48: .4byte gUnknown_2023D74 thumb_func_end atk31_copyarray thumb_func_start atk32_copyarraywithindex atk32_copyarraywithindex: @ 8022A4C push {r4-r7,lr} ldr r3, _08022AB4 @ =gUnknown_2023D74 ldr r1, [r3] ldrb r2, [r1, 0x1] ldrb r0, [r1, 0x2] lsls r0, 8 adds r2, r0 ldrb r0, [r1, 0x3] lsls r0, 16 adds r2, r0 ldrb r0, [r1, 0x4] lsls r0, 24 adds r7, r2, r0 ldrb r2, [r1, 0x5] ldrb r0, [r1, 0x6] lsls r0, 8 adds r2, r0 ldrb r0, [r1, 0x7] lsls r0, 16 adds r2, r0 ldrb r0, [r1, 0x8] lsls r0, 24 adds r6, r2, r0 ldrb r2, [r1, 0x9] ldrb r0, [r1, 0xA] lsls r0, 8 adds r2, r0 ldrb r0, [r1, 0xB] lsls r0, 16 adds r2, r0 ldrb r0, [r1, 0xC] lsls r0, 24 adds r5, r2, r0 ldrb r4, [r1, 0xD] movs r2, 0 cmp r2, r4 bge _08022AA8 _08022A96: adds r0, r7, r2 ldrb r1, [r5] adds r1, r2, r1 adds r1, r6, r1 ldrb r1, [r1] strb r1, [r0] adds r2, 0x1 cmp r2, r4 blt _08022A96 _08022AA8: ldr r0, [r3] adds r0, 0xE str r0, [r3] pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08022AB4: .4byte gUnknown_2023D74 thumb_func_end atk32_copyarraywithindex thumb_func_start atk33_orbyte atk33_orbyte: @ 8022AB8 ldr r3, _08022AE0 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 adds r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 adds r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 adds r1, r0 ldrb r0, [r1] ldrb r2, [r2, 0x5] orrs r0, r2 strb r0, [r1] ldr r0, [r3] adds r0, 0x6 str r0, [r3] bx lr .align 2, 0 _08022AE0: .4byte gUnknown_2023D74 thumb_func_end atk33_orbyte thumb_func_start atk34_orhalfword atk34_orhalfword: @ 8022AE4 push {r4,lr} ldr r4, _08022B18 @ =gUnknown_2023D74 ldr r3, [r4] ldrb r2, [r3, 0x1] ldrb r0, [r3, 0x2] lsls r0, 8 adds r2, r0 ldrb r0, [r3, 0x3] lsls r0, 16 adds r2, r0 ldrb r0, [r3, 0x4] lsls r0, 24 adds r2, r0 ldrb r1, [r3, 0x5] ldrb r0, [r3, 0x6] lsls r0, 8 orrs r1, r0 ldrh r0, [r2] orrs r1, r0 strh r1, [r2] ldr r0, [r4] adds r0, 0x7 str r0, [r4] pop {r4} pop {r0} bx r0 .align 2, 0 _08022B18: .4byte gUnknown_2023D74 thumb_func_end atk34_orhalfword thumb_func_start atk35_orword atk35_orword: @ 8022B1C push {r4,lr} ldr r4, _08022B5C @ =gUnknown_2023D74 ldr r2, [r4] ldrb r3, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 adds r3, r0 ldrb r0, [r2, 0x3] lsls r0, 16 adds r3, r0 ldrb r0, [r2, 0x4] lsls r0, 24 adds r3, r0 ldrb r1, [r2, 0x5] ldrb r0, [r2, 0x6] lsls r0, 8 adds r1, r0 ldrb r0, [r2, 0x7] lsls r0, 16 adds r1, r0 ldrb r0, [r2, 0x8] lsls r0, 24 adds r1, r0 ldr r0, [r3] orrs r0, r1 str r0, [r3] ldr r0, [r4] adds r0, 0x9 str r0, [r4] pop {r4} pop {r0} bx r0 .align 2, 0 _08022B5C: .4byte gUnknown_2023D74 thumb_func_end atk35_orword thumb_func_start atk36_bicbyte atk36_bicbyte: @ 8022B60 ldr r3, _08022B88 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 adds r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 adds r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 adds r1, r0 ldrb r2, [r2, 0x5] ldrb r0, [r1] bics r0, r2 strb r0, [r1] ldr r0, [r3] adds r0, 0x6 str r0, [r3] bx lr .align 2, 0 _08022B88: .4byte gUnknown_2023D74 thumb_func_end atk36_bicbyte thumb_func_start atk37_bichalfword atk37_bichalfword: @ 8022B8C push {r4,lr} ldr r4, _08022BC0 @ =gUnknown_2023D74 ldr r3, [r4] ldrb r1, [r3, 0x1] ldrb r0, [r3, 0x2] lsls r0, 8 adds r1, r0 ldrb r0, [r3, 0x3] lsls r0, 16 adds r1, r0 ldrb r0, [r3, 0x4] lsls r0, 24 adds r1, r0 ldrb r2, [r3, 0x5] ldrb r0, [r3, 0x6] lsls r0, 8 orrs r2, r0 ldrh r0, [r1] bics r0, r2 strh r0, [r1] ldr r0, [r4] adds r0, 0x7 str r0, [r4] pop {r4} pop {r0} bx r0 .align 2, 0 _08022BC0: .4byte gUnknown_2023D74 thumb_func_end atk37_bichalfword thumb_func_start atk38_bicword atk38_bicword: @ 8022BC4 push {r4,lr} ldr r4, _08022C04 @ =gUnknown_2023D74 ldr r2, [r4] ldrb r3, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 adds r3, r0 ldrb r0, [r2, 0x3] lsls r0, 16 adds r3, r0 ldrb r0, [r2, 0x4] lsls r0, 24 adds r3, r0 ldrb r1, [r2, 0x5] ldrb r0, [r2, 0x6] lsls r0, 8 adds r1, r0 ldrb r0, [r2, 0x7] lsls r0, 16 adds r1, r0 ldrb r0, [r2, 0x8] lsls r0, 24 adds r1, r0 ldr r0, [r3] bics r0, r1 str r0, [r3] ldr r0, [r4] adds r0, 0x9 str r0, [r4] pop {r4} pop {r0} bx r0 .align 2, 0 _08022C04: .4byte gUnknown_2023D74 thumb_func_end atk38_bicword thumb_func_start atk39_pause atk39_pause: @ 8022C08 push {r4,r5,lr} ldr r0, _08022C3C @ =gUnknown_2023BC8 ldr r4, [r0] cmp r4, 0 bne _08022C34 ldr r5, _08022C40 @ =gUnknown_2023D74 ldr r2, [r5] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldr r3, _08022C44 @ =gUnknown_2023E7C ldrh r0, [r3] adds r0, 0x1 strh r0, [r3] lsls r0, 16 lsrs r0, 16 cmp r0, r1 bcc _08022C34 strh r4, [r3] adds r0, r2, 0x3 str r0, [r5] _08022C34: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08022C3C: .4byte gUnknown_2023BC8 _08022C40: .4byte gUnknown_2023D74 _08022C44: .4byte gUnknown_2023E7C thumb_func_end atk39_pause thumb_func_start sub_8022C48 sub_8022C48: @ 8022C48 push {lr} ldr r0, _08022C60 @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 bne _08022C5A ldr r1, _08022C64 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] _08022C5A: pop {r0} bx r0 .align 2, 0 _08022C60: .4byte gUnknown_2023BC8 _08022C64: .4byte gUnknown_2023D74 thumb_func_end sub_8022C48 thumb_func_start atk3B_healthbar_update atk3B_healthbar_update: @ 8022C68 push {lr} ldr r0, _08022C7C @ =gUnknown_2023D74 ldr r0, [r0] ldrb r0, [r0, 0x1] cmp r0, 0 bne _08022C88 ldr r0, _08022C80 @ =gActiveBattler ldr r1, _08022C84 @ =gBattlerTarget b _08022C8C .align 2, 0 _08022C7C: .4byte gUnknown_2023D74 _08022C80: .4byte gActiveBattler _08022C84: .4byte gBattlerTarget _08022C88: ldr r0, _08022CB0 @ =gActiveBattler ldr r1, _08022CB4 @ =sBattler_AI _08022C8C: ldrb r1, [r1] strb r1, [r0] ldr r0, _08022CB8 @ =gBattleMoveDamage ldrh r1, [r0] movs r0, 0 bl EmitHealthBarUpdate ldr r0, _08022CB0 @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution ldr r1, _08022CBC @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x2 str r0, [r1] pop {r0} bx r0 .align 2, 0 _08022CB0: .4byte gActiveBattler _08022CB4: .4byte sBattler_AI _08022CB8: .4byte gBattleMoveDamage _08022CBC: .4byte gUnknown_2023D74 thumb_func_end atk3B_healthbar_update thumb_func_start atk3C_return atk3C_return: @ 8022CC0 push {lr} bl BattleScriptPop pop {r0} bx r0 thumb_func_end atk3C_return thumb_func_start atk3D_end atk3D_end: @ 8022CCC ldr r0, _08022CE0 @ =gMoveResultFlags movs r1, 0 strb r1, [r0] ldr r0, _08022CE4 @ =gActiveBattler strb r1, [r0] ldr r1, _08022CE8 @ =gUnknown_2023BE3 movs r0, 0xB strb r0, [r1] bx lr .align 2, 0 _08022CE0: .4byte gMoveResultFlags _08022CE4: .4byte gActiveBattler _08022CE8: .4byte gUnknown_2023BE3 thumb_func_end atk3D_end thumb_func_start atk3E_end2 atk3E_end2: @ 8022CEC ldr r1, _08022CFC @ =gActiveBattler movs r0, 0 strb r0, [r1] ldr r1, _08022D00 @ =gUnknown_2023BE3 movs r0, 0xB strb r0, [r1] bx lr .align 2, 0 _08022CFC: .4byte gActiveBattler _08022D00: .4byte gUnknown_2023BE3 thumb_func_end atk3E_end2 thumb_func_start atk3F_end3 atk3F_end3: @ 8022D04 push {lr} bl BattleScriptPop ldr r3, _08022D38 @ =gBattleResources ldr r0, [r3] ldr r0, [r0, 0xC] adds r1, r0, 0 adds r1, 0x20 ldrb r0, [r1] cmp r0, 0 beq _08022D1E subs r0, 0x1 strb r0, [r1] _08022D1E: ldr r2, _08022D3C @ =gUnknown_3004F84 ldr r0, [r3] ldr r1, [r0, 0xC] adds r0, r1, 0 adds r0, 0x20 ldrb r0, [r0] lsls r0, 2 adds r1, r0 ldr r0, [r1] str r0, [r2] pop {r0} bx r0 .align 2, 0 _08022D38: .4byte gBattleResources _08022D3C: .4byte gUnknown_3004F84 thumb_func_end atk3F_end3 thumb_func_start atk41_call atk41_call: @ 8022D40 push {r4,lr} ldr r4, _08022D6C @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x5 bl BattleScriptPush ldr r2, [r4] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r4] pop {r4} pop {r0} bx r0 .align 2, 0 _08022D6C: .4byte gUnknown_2023D74 thumb_func_end atk41_call thumb_func_start atk42_jumpiftype2 atk42_jumpiftype2: @ 8022D70 push {r4,lr} ldr r4, _08022DB8 @ =gUnknown_2023D74 ldr r0, [r4] ldrb r0, [r0, 0x1] bl sub_8016E24 lsls r0, 24 lsrs r0, 24 ldr r3, [r4] ldr r2, _08022DBC @ =gBattleMons movs r1, 0x58 muls r0, r1 adds r0, r2 adds r1, r0, 0 adds r1, 0x21 ldrb r2, [r3, 0x2] ldrb r1, [r1] cmp r2, r1 beq _08022D9E adds r0, 0x22 ldrb r0, [r0] cmp r2, r0 bne _08022DC0 _08022D9E: ldrb r1, [r3, 0x3] ldrb r0, [r3, 0x4] lsls r0, 8 orrs r1, r0 ldrb r0, [r3, 0x5] lsls r0, 16 orrs r1, r0 ldrb r0, [r3, 0x6] lsls r0, 24 orrs r1, r0 str r1, [r4] b _08022DC4 .align 2, 0 _08022DB8: .4byte gUnknown_2023D74 _08022DBC: .4byte gBattleMons _08022DC0: adds r0, r3, 0x7 str r0, [r4] _08022DC4: pop {r4} pop {r0} bx r0 thumb_func_end atk42_jumpiftype2 thumb_func_start atk43_jumpifabilitypresent atk43_jumpifabilitypresent: @ 8022DCC push {r4,lr} sub sp, 0x4 ldr r4, _08022E04 @ =gUnknown_2023D74 ldr r0, [r4] ldrb r2, [r0, 0x1] movs r0, 0 str r0, [sp] movs r0, 0x13 movs r1, 0 movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 beq _08022E08 ldr r2, [r4] ldrb r1, [r2, 0x2] ldrb r0, [r2, 0x3] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x5] lsls r0, 24 orrs r1, r0 str r1, [r4] b _08022E0E .align 2, 0 _08022E04: .4byte gUnknown_2023D74 _08022E08: ldr r0, [r4] adds r0, 0x6 str r0, [r4] _08022E0E: add sp, 0x4 pop {r4} pop {r0} bx r0 thumb_func_end atk43_jumpifabilitypresent thumb_func_start atk44_endselectionscript atk44_endselectionscript: @ 8022E18 ldr r0, _08022E2C @ =sBattler_AI ldrb r0, [r0] ldr r1, _08022E30 @ =gBattleStruct ldr r1, [r1] adds r0, r1 adds r0, 0x54 movs r1, 0x1 strb r1, [r0] bx lr .align 2, 0 _08022E2C: .4byte sBattler_AI _08022E30: .4byte gBattleStruct thumb_func_end atk44_endselectionscript thumb_func_start sub_8022E34 sub_8022E34: @ 8022E34 push {r4-r6,lr} ldr r4, _08022E84 @ =gUnknown_2023D74 ldr r0, [r4] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r6, _08022E88 @ =gActiveBattler strb r0, [r6] ldr r2, [r4] ldrb r1, [r2, 0x3] ldrb r0, [r2, 0x4] lsls r0, 8 adds r1, r0 ldrb r0, [r2, 0x5] lsls r0, 16 adds r1, r0 ldrb r0, [r2, 0x6] lsls r0, 24 adds r3, r1, r0 ldrb r5, [r2, 0x2] adds r0, r5, 0 cmp r0, 0x1 beq _08022E6E cmp r0, 0x11 beq _08022E6E cmp r0, 0x2 beq _08022E6E cmp r0, 0x19 bne _08022E8C _08022E6E: ldr r4, _08022E84 @ =gUnknown_2023D74 ldr r0, [r4] ldrb r1, [r0, 0x2] ldrh r2, [r3] movs r0, 0 bl EmitBattleAnimation ldr r0, _08022E88 @ =gActiveBattler ldrb r0, [r0] b _08022EE4 .align 2, 0 _08022E84: .4byte gUnknown_2023D74 _08022E88: .4byte gActiveBattler _08022E8C: ldr r0, _08022EA4 @ =gUnknown_2023DD0 ldr r0, [r0] movs r1, 0x80 ands r0, r1 cmp r0, 0 beq _08022EAC adds r0, r2, 0x7 bl BattleScriptPush ldr r0, _08022EA8 @ =gUnknown_81D89F1 b _08022EEC .align 2, 0 _08022EA4: .4byte gUnknown_2023DD0 _08022EA8: .4byte gUnknown_81D89F1 _08022EAC: adds r0, r5, 0 subs r0, 0xA lsls r0, 24 lsrs r0, 24 cmp r0, 0x3 bls _08022ED8 ldr r1, _08022ED0 @ =gStatuses3 ldrb r0, [r6] lsls r0, 2 adds r0, r1 ldr r0, [r0] ldr r1, _08022ED4 @ =0x000400c0 ands r0, r1 cmp r0, 0 beq _08022ED8 adds r0, r2, 0x7 b _08022EEC .align 2, 0 _08022ED0: .4byte gStatuses3 _08022ED4: .4byte 0x000400c0 _08022ED8: ldrb r1, [r2, 0x2] ldrh r2, [r3] movs r0, 0 bl EmitBattleAnimation ldrb r0, [r6] _08022EE4: bl MarkBufferBankForExecution ldr r0, [r4] adds r0, 0x7 _08022EEC: str r0, [r4] pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_8022E34 thumb_func_start atk46_playanimation2 atk46_playanimation2: @ 8022EF4 push {r4-r7,lr} ldr r6, _08022F5C @ =gUnknown_2023D74 ldr r0, [r6] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r7, _08022F60 @ =gActiveBattler strb r0, [r7] ldr r2, [r6] ldrb r1, [r2, 0x2] ldrb r0, [r2, 0x3] lsls r0, 8 adds r1, r0 ldrb r0, [r2, 0x4] lsls r0, 16 adds r1, r0 ldrb r0, [r2, 0x5] lsls r0, 24 adds r3, r1, r0 ldrb r1, [r2, 0x6] ldrb r0, [r2, 0x7] lsls r0, 8 adds r1, r0 ldrb r0, [r2, 0x8] lsls r0, 16 adds r1, r0 ldrb r0, [r2, 0x9] lsls r0, 24 adds r4, r1, r0 ldrb r5, [r3] adds r0, r5, 0 cmp r0, 0x1 beq _08022F3E cmp r0, 0x11 beq _08022F3E cmp r0, 0x2 bne _08022F64 _08022F3E: ldrb r1, [r3] ldrh r2, [r4] movs r0, 0 bl EmitBattleAnimation ldr r0, _08022F60 @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution ldr r1, _08022F5C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0xA str r0, [r1] b _08022FBA .align 2, 0 _08022F5C: .4byte gUnknown_2023D74 _08022F60: .4byte gActiveBattler _08022F64: ldr r0, _08022F74 @ =gUnknown_2023DD0 ldr r0, [r0] movs r1, 0x80 ands r0, r1 cmp r0, 0 beq _08022F78 adds r0, r2, 0 b _08022FB6 .align 2, 0 _08022F74: .4byte gUnknown_2023DD0 _08022F78: adds r0, r5, 0 subs r0, 0xA lsls r0, 24 lsrs r0, 24 cmp r0, 0x3 bls _08022FA4 ldr r1, _08022F9C @ =gStatuses3 ldrb r0, [r7] lsls r0, 2 adds r0, r1 ldr r0, [r0] ldr r1, _08022FA0 @ =0x000400c0 ands r0, r1 cmp r0, 0 beq _08022FA4 adds r0, r2, 0 b _08022FB6 .align 2, 0 _08022F9C: .4byte gStatuses3 _08022FA0: .4byte 0x000400c0 _08022FA4: ldrb r1, [r3] ldrh r2, [r4] movs r0, 0 bl EmitBattleAnimation ldrb r0, [r7] bl MarkBufferBankForExecution ldr r0, [r6] _08022FB6: adds r0, 0xA str r0, [r6] _08022FBA: pop {r4-r7} pop {r0} bx r0 thumb_func_end atk46_playanimation2 thumb_func_start atk47_setgraphicalstatchangevalues atk47_setgraphicalstatchangevalues: @ 8022FC0 push {r4,lr} movs r3, 0 ldr r1, _08022FDC @ =gBattleScripting ldrb r0, [r1, 0x1A] movs r2, 0xF0 ands r2, r0 adds r4, r1, 0 cmp r2, 0x20 beq _08022FEE cmp r2, 0x20 bgt _08022FE0 cmp r2, 0x10 beq _08022FEA b _08022FF8 .align 2, 0 _08022FDC: .4byte gBattleScripting _08022FE0: cmp r2, 0x90 beq _08022FF2 cmp r2, 0xA0 beq _08022FF6 b _08022FF8 _08022FEA: movs r3, 0xF b _08022FF8 _08022FEE: movs r3, 0x27 b _08022FF8 _08022FF2: movs r3, 0x16 b _08022FF8 _08022FF6: movs r3, 0x2E _08022FF8: ldrb r1, [r4, 0x1A] movs r0, 0xF ands r0, r1 adds r0, r3, r0 subs r0, 0x1 movs r1, 0 strb r0, [r4, 0x10] strb r1, [r4, 0x11] ldr r1, _08023018 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _08023018: .4byte gUnknown_2023D74 thumb_func_end atk47_setgraphicalstatchangevalues thumb_func_start atk48_playstatchangeanimation atk48_playstatchangeanimation: @ 802301C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 movs r7, 0 movs r0, 0 mov r8, r0 movs r3, 0 ldr r5, _08023090 @ =gUnknown_2023D74 ldr r0, [r5] ldrb r0, [r0, 0x1] str r3, [sp] bl sub_8016E24 ldr r2, _08023094 @ =gActiveBattler strb r0, [r2] ldr r0, [r5] ldrb r4, [r0, 0x2] ldrb r1, [r0, 0x3] movs r0, 0x1 ands r0, r1 ldr r3, [sp] cmp r0, 0 beq _08023130 movs r0, 0x2 ands r0, r1 movs r1, 0x15 cmp r0, 0 beq _0802305C movs r1, 0x2D _0802305C: cmp r4, 0 beq _08023104 movs r0, 0x1 mov r10, r0 ldr r0, _08023098 @ =gUnknown_2023BFC mov r9, r0 lsls r5, r1, 16 _0802306A: adds r0, r4, 0 mov r1, r10 ands r0, r1 cmp r0, 0 beq _080230F6 ldr r0, _08023090 @ =gUnknown_2023D74 ldr r0, [r0] ldrb r1, [r0, 0x3] movs r0, 0x8 ands r0, r1 cmp r0, 0 beq _0802309C ldr r0, _08023094 @ =gActiveBattler ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r7, r0 b _080230E4 .align 2, 0 _08023090: .4byte gUnknown_2023D74 _08023094: .4byte gActiveBattler _08023098: .4byte gUnknown_2023BFC _0802309C: ldr r6, _08023120 @ =gActiveBattler ldrb r0, [r6] str r3, [sp] bl GetBattlerPosition mov r1, r10 ands r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 ldr r1, _08023124 @ =gSideTimers adds r0, r1 ldrb r0, [r0, 0x4] ldr r3, [sp] cmp r0, 0 bne _080230F6 ldr r0, _08023128 @ =gBattleMons ldrb r2, [r6] movs r1, 0x58 muls r2, r1 adds r0, r2, r0 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x1D beq _080230F6 cmp r0, 0x49 beq _080230F6 cmp r0, 0x33 bne _080230DA cmp r7, 0x6 beq _080230F6 _080230DA: cmp r0, 0x34 bne _080230E2 cmp r7, 0x1 beq _080230F6 _080230E2: adds r0, r7, r2 _080230E4: add r0, r9 ldrb r0, [r0] lsls r0, 24 asrs r0, 24 cmp r0, 0 ble _080230F6 lsrs r0, r5, 16 mov r8, r0 adds r3, 0x1 _080230F6: lsrs r4, 1 movs r1, 0x80 lsls r1, 9 adds r5, r1 adds r7, 0x1 cmp r4, 0 bne _0802306A _08023104: ldr r0, _0802312C @ =gUnknown_2023D74 mov r9, r0 cmp r3, 0x1 ble _08023192 ldr r0, [r0] ldrb r1, [r0, 0x3] movs r0, 0x2 ands r0, r1 movs r1, 0x39 mov r8, r1 cmp r0, 0 beq _08023192 movs r0, 0x3A b _08023190 .align 2, 0 _08023120: .4byte gActiveBattler _08023124: .4byte gSideTimers _08023128: .4byte gBattleMons _0802312C: .4byte gUnknown_2023D74 _08023130: movs r0, 0x2 ands r0, r1 movs r1, 0xE cmp r0, 0 beq _0802313C movs r1, 0x26 _0802313C: mov r9, r5 cmp r4, 0 beq _08023178 ldr r6, _080231AC @ =gUnknown_2023BFC adds r5, r2, 0 lsls r2, r1, 16 _08023148: movs r0, 0x1 ands r0, r4 cmp r0, 0 beq _0802316A ldrb r1, [r5] movs r0, 0x58 muls r0, r1 adds r0, r7, r0 adds r0, r6 ldrb r0, [r0] lsls r0, 24 asrs r0, 24 cmp r0, 0xB bgt _0802316A lsrs r1, r2, 16 mov r8, r1 adds r3, 0x1 _0802316A: lsrs r4, 1 movs r0, 0x80 lsls r0, 9 adds r2, r0 adds r7, 0x1 cmp r4, 0 bne _08023148 _08023178: cmp r3, 0x1 ble _08023192 mov r1, r9 ldr r0, [r1] ldrb r1, [r0, 0x3] movs r0, 0x2 ands r0, r1 movs r1, 0x37 mov r8, r1 cmp r0, 0 beq _08023192 movs r0, 0x38 _08023190: mov r8, r0 _08023192: mov r1, r9 ldr r2, [r1] ldrb r1, [r2, 0x3] movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _080231B0 cmp r3, 0x1 bgt _080231B0 adds r0, r2, 0x4 mov r1, r9 b _080231FE .align 2, 0 _080231AC: .4byte gUnknown_2023BFC _080231B0: cmp r3, 0 beq _080231F8 ldr r4, _080231EC @ =gBattleScripting ldrb r0, [r4, 0x1B] cmp r0, 0 bne _080231F8 movs r0, 0 movs r1, 0x1 mov r2, r8 str r3, [sp] bl EmitBattleAnimation ldr r0, _080231F0 @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution ldr r0, _080231F4 @ =gUnknown_2023D74 ldr r0, [r0] ldrb r1, [r0, 0x3] movs r0, 0x4 ands r0, r1 ldr r3, [sp] cmp r0, 0 beq _080231E8 cmp r3, 0x1 ble _080231E8 movs r0, 0x1 strb r0, [r4, 0x1B] _080231E8: ldr r1, _080231F4 @ =gUnknown_2023D74 b _080231FA .align 2, 0 _080231EC: .4byte gBattleScripting _080231F0: .4byte gActiveBattler _080231F4: .4byte gUnknown_2023D74 _080231F8: mov r1, r9 _080231FA: ldr r0, [r1] adds r0, 0x4 _080231FE: str r0, [r1] add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 thumb_func_end atk48_playstatchangeanimation thumb_func_start atk49_moveend atk49_moveend: @ 8023210 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x1C movs r0, 0 mov r10, r0 ldr r2, _08023260 @ =gUnknown_2023D4C ldrh r1, [r2] ldr r0, _08023264 @ =0x0000ffff movs r3, 0 str r3, [sp, 0x18] cmp r1, r0 beq _08023232 ldrh r2, [r2] str r2, [sp, 0x18] _08023232: ldr r0, _08023268 @ =gUnknown_2023D74 ldr r0, [r0] ldrb r4, [r0, 0x1] str r4, [sp, 0x10] ldrb r0, [r0, 0x2] str r0, [sp, 0x14] ldr r1, _0802326C @ =gBattleMons ldr r0, _08023270 @ =sBattler_AI ldrb r2, [r0] movs r0, 0x58 muls r0, r2 adds r1, r0, r1 ldrh r0, [r1, 0x2E] cmp r0, 0xAF bne _08023278 ldr r1, _08023274 @ =gEnigmaBerries lsls r0, r2, 3 subs r0, r2 lsls r0, 2 adds r0, r1 ldrb r0, [r0, 0x7] b _08023282 .align 2, 0 _08023260: .4byte gUnknown_2023D4C _08023264: .4byte 0x0000ffff _08023268: .4byte gUnknown_2023D74 _0802326C: .4byte gBattleMons _08023270: .4byte sBattler_AI _08023274: .4byte gEnigmaBerries _08023278: ldrh r0, [r1, 0x2E] bl ItemId_GetHoldEffect lsls r0, 24 lsrs r0, 24 _08023282: str r0, [sp, 0x8] ldr r1, _080232A4 @ =gBattleStruct ldr r0, _080232A8 @ =sBattler_AI ldrb r0, [r0] lsls r0, 1 adds r0, 0xC8 ldr r1, [r1] adds r0, r1, r0 str r0, [sp, 0xC] ldrb r0, [r1, 0x13] cmp r0, 0 beq _08023334 movs r5, 0x3F ands r5, r0 str r5, [sp, 0x4] b _08023346 .align 2, 0 _080232A4: .4byte gBattleStruct _080232A8: .4byte sBattler_AI _080232AC: ldr r4, _080232C0 @ =gActiveBattler strb r2, [r4] movs r0, 0 movs r1, 0x1 bl EmitSpriteInvisibility ldrb r0, [r4] bl MarkBufferBankForExecution b _0802379E .align 2, 0 _080232C0: .4byte gActiveBattler _080232C4: ldr r4, _080232E8 @ =gActiveBattler strb r2, [r4] movs r0, 0 movs r1, 0 bl EmitSpriteInvisibility ldrb r0, [r4] bl MarkBufferBankForExecution ldrb r1, [r6] lsls r1, 2 adds r1, r5 ldr r0, [r1] ldr r2, _080232EC @ =0xfffbff3f ands r0, r2 str r0, [r1] b _0802379E .align 2, 0 _080232E8: .4byte gActiveBattler _080232EC: .4byte 0xfffbff3f _080232F0: strb r2, [r7] ldr r0, [r5] orrs r0, r6 str r0, [r5] ldr r0, _08023324 @ =gBattleScripting strb r4, [r0, 0x14] bl MoveValuesCleanUp ldr r2, _08023328 @ =gUnknown_81D65A8 mov r0, r8 ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 add r0, r9 ldrb r0, [r0] lsls r0, 2 adds r0, r2 ldr r0, [r0] bl BattleScriptPush ldr r1, _0802332C @ =gUnknown_2023D74 ldr r0, _08023330 @ =gUnknown_81D96A8 bl _08023BFC .align 2, 0 _08023324: .4byte gBattleScripting _08023328: .4byte gUnknown_81D65A8 _0802332C: .4byte gUnknown_2023D74 _08023330: .4byte gUnknown_81D96A8 _08023334: ldr r2, _0802334C @ =gBattleMoves ldr r0, _08023350 @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x2] str r0, [sp, 0x4] _08023346: ldr r1, _08023354 @ =gBattleScripting mov r12, r1 b _08023362 .align 2, 0 _0802334C: .4byte gBattleMoves _08023350: .4byte gCurrentMove _08023354: .4byte gBattleScripting _08023358: mov r2, r10 cmp r2, 0 beq _08023362 bl _08023BE8 _08023362: mov r3, r12 ldrb r0, [r3, 0x14] cmp r0, 0x11 bls _0802336E bl _08023BB4 _0802336E: lsls r0, 2 ldr r1, _08023378 @ =_0802337C adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08023378: .4byte _0802337C .align 2, 0 _0802337C: .4byte _080233C4 .4byte _080234A0 .4byte _0802355C .4byte _08023580 .4byte _08023598 .4byte _080235C0 .4byte _080235E4 .4byte _0802368C .4byte _08023702 .4byte _08023738 .4byte _080237D8 .4byte _080236CC .4byte _080236EC .4byte _0802381C .4byte _08023860 .4byte _08023A40 .4byte _08023B28 .4byte _08023BB4 _080233C4: ldr r6, _0802347C @ =gBattleMons ldr r5, _08023480 @ =gBattlerTarget ldrb r3, [r5] movs r7, 0x58 adds r2, r3, 0 muls r2, r7 adds r0, r6, 0 adds r0, 0x50 adds r0, r2, r0 ldr r0, [r0] movs r1, 0x80 lsls r1, 16 ands r0, r1 cmp r0, 0 bne _080233E4 b _080237C8 _080233E4: adds r0, r2, r6 ldrh r0, [r0, 0x28] cmp r0, 0 bne _080233EE b _080237C8 _080233EE: ldr r0, _08023484 @ =sBattler_AI ldrb r1, [r0] cmp r1, r3 bne _080233F8 b _080237C8 _080233F8: adds r0, r1, 0 bl GetBattlerSide adds r4, r0, 0 ldrb r0, [r5] bl GetBattlerSide lsls r4, 24 lsls r0, 24 cmp r4, r0 bne _08023410 b _080237C8 _08023410: ldr r0, _08023488 @ =gMoveResultFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 beq _0802341E b _080237C8 _0802341E: ldr r2, _0802348C @ =gUnknown_2023ECC ldrb r3, [r5] lsls r0, r3, 2 adds r0, r3 lsls r1, r0, 2 adds r0, r2, 0 adds r0, 0x8 adds r0, r1, r0 ldr r0, [r0] cmp r0, 0 bne _08023442 adds r0, r2, 0 adds r0, 0xC adds r0, r1, r0 ldr r0, [r0] cmp r0, 0 bne _08023442 b _080237C8 _08023442: ldr r2, _08023490 @ =gBattleMoves ldr r0, _08023494 @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x1] cmp r0, 0 bne _08023458 b _080237C8 _08023458: adds r0, r3, 0 muls r0, r7 adds r1, r0, r6 ldrb r2, [r1, 0x19] movs r0, 0x19 ldrsb r0, [r1, r0] cmp r0, 0xB ble _0802346A b _080237C8 _0802346A: adds r0, r2, 0x1 strb r0, [r1, 0x19] bl BattleScriptPushCursor ldr r1, _08023498 @ =gUnknown_2023D74 ldr r0, _0802349C @ =gUnknown_81D8C48 str r0, [r1] b _080236FC .align 2, 0 _0802347C: .4byte gBattleMons _08023480: .4byte gBattlerTarget _08023484: .4byte sBattler_AI _08023488: .4byte gMoveResultFlags _0802348C: .4byte gUnknown_2023ECC _08023490: .4byte gBattleMoves _08023494: .4byte gCurrentMove _08023498: .4byte gUnknown_2023D74 _0802349C: .4byte gUnknown_81D8C48 _080234A0: ldr r4, _0802353C @ =gBattleMons ldr r6, _08023540 @ =gBattlerTarget ldrb r2, [r6] movs r5, 0x58 mov r12, r5 mov r1, r12 muls r1, r2 adds r7, r4, 0 adds r7, 0x4C adds r5, r1, r7 ldr r3, [r5] movs r0, 0x20 ands r0, r3 cmp r0, 0 bne _080234C0 b _080237C8 _080234C0: adds r0, r1, r4 ldrh r0, [r0, 0x28] cmp r0, 0 bne _080234CA b _080237C8 _080234CA: ldr r0, _08023544 @ =sBattler_AI ldrb r0, [r0] cmp r0, r2 bne _080234D4 b _080237C8 _080234D4: ldr r0, _08023548 @ =gUnknown_2023ECC lsls r1, r2, 2 adds r1, r2 lsls r1, 2 adds r0, 0xC adds r1, r0 ldr r0, [r1] cmp r0, 0 bne _080234E8 b _080237C8 _080234E8: ldr r0, _0802354C @ =gMoveResultFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 beq _080234F6 b _080237C8 _080234F6: ldr r0, [sp, 0x4] cmp r0, 0xA beq _080234FE b _080237C8 _080234FE: movs r0, 0x21 negs r0, r0 ands r3, r0 str r3, [r5] ldr r4, _08023550 @ =gActiveBattler ldrb r0, [r6] strb r0, [r4] ldrb r0, [r6] mov r1, r12 muls r1, r0 adds r0, r1, 0 adds r0, r7 str r0, [sp] movs r0, 0 movs r1, 0x28 movs r2, 0 movs r3, 0x4 bl EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution bl BattleScriptPushCursor ldr r1, _08023554 @ =gUnknown_2023D74 ldr r0, _08023558 @ =gUnknown_81D9098 str r0, [r1] movs r2, 0x1 mov r10, r2 b _080237C8 .align 2, 0 _0802353C: .4byte gBattleMons _08023540: .4byte gBattlerTarget _08023544: .4byte sBattler_AI _08023548: .4byte gUnknown_2023ECC _0802354C: .4byte gMoveResultFlags _08023550: .4byte gActiveBattler _08023554: .4byte gUnknown_2023D74 _08023558: .4byte gUnknown_81D9098 _0802355C: ldr r0, _0802357C @ =gBattlerTarget ldrb r1, [r0] movs r0, 0 str r0, [sp] movs r0, 0x7 movs r2, 0 movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 bne _08023576 b _080237C8 _08023576: movs r3, 0x1 mov r10, r3 b _080237C8 .align 2, 0 _0802357C: .4byte gBattlerTarget _08023580: ldr r0, _08023594 @ =gBattlerTarget ldrb r1, [r0] movs r0, 0 str r0, [sp] movs r0, 0x4 movs r2, 0 movs r3, 0 bl AbilityBattleEffects b _080236F6 .align 2, 0 _08023594: .4byte gBattlerTarget _08023598: movs r0, 0 str r0, [sp] movs r0, 0x5 movs r1, 0 movs r2, 0 movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 bne _080235B0 b _080237C8 _080235B0: movs r5, 0x1 mov r10, r5 ldr r0, _080235BC @ =gBattleScripting mov r12, r0 b _08023BB4 .align 2, 0 _080235BC: .4byte gBattleScripting _080235C0: ldr r0, _080235E0 @ =sBattler_AI ldrb r1, [r0] movs r0, 0 str r0, [sp] movs r0, 0x8 movs r2, 0 movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 bne _080235DA b _080237C8 _080235DA: movs r1, 0x1 mov r10, r1 b _080237C8 .align 2, 0 _080235E0: .4byte sBattler_AI _080235E4: ldr r0, _08023674 @ =gUnknown_2023DD0 ldr r0, [r0] movs r1, 0x80 lsls r1, 18 ands r0, r1 cmp r0, 0 beq _08023628 ldr r2, [sp, 0x8] cmp r2, 0x1D bne _08023628 ldr r0, _08023678 @ =gUnknown_2023D4C ldrh r2, [r0] adds r3, r0, 0 cmp r2, 0xA5 beq _08023628 ldr r4, [sp, 0xC] ldrh r1, [r4] cmp r1, 0 beq _08023610 ldr r0, _0802367C @ =0x0000ffff cmp r1, r0 bne _08023628 _08023610: cmp r2, 0xE2 bne _08023622 ldr r0, _08023680 @ =gMoveResultFlags ldrb r1, [r0] movs r0, 0x20 ands r0, r1 cmp r0, 0 bne _08023622 b _08023AFA _08023622: ldrh r0, [r3] ldr r1, [sp, 0xC] strh r0, [r1] _08023628: movs r4, 0 ldr r2, _08023684 @ =gBattleMons ldr r3, _08023688 @ =sBattler_AI ldrb r1, [r3] movs r0, 0x58 muls r0, r1 adds r2, 0xC adds r0, r2 ldrh r0, [r0] ldr r5, [sp, 0xC] ldrh r1, [r5] mov r9, r3 cmp r0, r1 beq _08023660 mov r6, r9 movs r3, 0x58 adds r5, r1, 0 _0802364A: adds r4, 0x1 cmp r4, 0x3 bgt _08023660 lsls r0, r4, 1 ldrb r1, [r6] muls r1, r3 adds r0, r1 adds r0, r2 ldrh r0, [r0] cmp r0, r5 bne _0802364A _08023660: cmp r4, 0x4 bne _0802366A movs r0, 0 ldr r1, [sp, 0xC] strh r0, [r1] _0802366A: mov r2, r12 ldrb r0, [r2, 0x14] adds r0, 0x1 strb r0, [r2, 0x14] b _08023BB4 .align 2, 0 _08023674: .4byte gUnknown_2023DD0 _08023678: .4byte gUnknown_2023D4C _0802367C: .4byte 0x0000ffff _08023680: .4byte gMoveResultFlags _08023684: .4byte gBattleMons _08023688: .4byte sBattler_AI _0802368C: movs r4, 0 ldr r0, _080236C0 @ =gBattlersCount ldrb r3, [r0] cmp r4, r3 blt _08023698 b _08023846 _08023698: ldr r7, _080236C4 @ =gBattleStruct movs r6, 0 movs r3, 0xD0 adds r5, r0, 0 ldr r2, _080236C8 @ =gBattleMons _080236A2: ldr r0, [r7] adds r0, r3 ldrh r1, [r0] cmp r1, 0 beq _080236B0 strh r1, [r2, 0x2E] strh r6, [r0] _080236B0: adds r3, 0x2 adds r2, 0x58 adds r4, 0x1 ldrb r0, [r5] cmp r4, r0 blt _080236A2 b _08023846 .align 2, 0 _080236C0: .4byte gBattlersCount _080236C4: .4byte gBattleStruct _080236C8: .4byte gBattleMons _080236CC: movs r0, 0x3 movs r1, 0 movs r2, 0 bl sub_801BC68 lsls r0, 24 cmp r0, 0 beq _080237C8 movs r2, 0x1 mov r10, r2 ldr r3, _080236E8 @ =gBattleScripting mov r12, r3 b _08023BB4 .align 2, 0 _080236E8: .4byte gBattleScripting _080236EC: movs r0, 0x4 movs r1, 0 movs r2, 0 bl sub_801BC68 _080236F6: lsls r0, 24 cmp r0, 0 beq _080237C8 _080236FC: movs r4, 0x1 mov r10, r4 b _080237C8 _08023702: ldr r1, _08023728 @ =gStatuses3 ldr r0, _0802372C @ =sBattler_AI ldrb r2, [r0] lsls r0, r2, 2 adds r0, r1 ldr r0, [r0] ldr r1, _08023730 @ =0x000400c0 ands r0, r1 cmp r0, 0 bne _08023718 b _08023AFA _08023718: ldr r0, _08023734 @ =gUnknown_2023DD0 ldr r0, [r0] movs r1, 0x80 ands r0, r1 cmp r0, 0 beq _08023726 b _080232AC _08023726: b _08023AFA .align 2, 0 _08023728: .4byte gStatuses3 _0802372C: .4byte sBattler_AI _08023730: .4byte 0x000400c0 _08023734: .4byte gUnknown_2023DD0 _08023738: ldr r0, _080237A8 @ =gMoveResultFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 bne _08023764 ldr r1, _080237AC @ =gStatuses3 ldr r0, _080237B0 @ =sBattler_AI ldrb r2, [r0] lsls r0, r2, 2 adds r0, r1 ldr r0, [r0] ldr r1, _080237B4 @ =0x000400c0 ands r0, r1 cmp r0, 0 beq _08023764 adds r0, r2, 0 bl WasUnableToUseMove lsls r0, 24 cmp r0, 0 beq _080237C8 _08023764: ldr r4, _080237B8 @ =gActiveBattler ldr r5, _080237B0 @ =sBattler_AI ldrb r0, [r5] strb r0, [r4] movs r0, 0 movs r1, 0 bl EmitSpriteInvisibility ldrb r0, [r4] bl MarkBufferBankForExecution ldr r0, _080237AC @ =gStatuses3 ldrb r2, [r5] lsls r2, 2 adds r2, r0 ldr r0, [r2] ldr r1, _080237BC @ =0xfffbff3f ands r0, r1 str r0, [r2] ldr r2, _080237C0 @ =gUnknown_2023ECC ldrb r1, [r5] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 strb r1, [r0] _0802379E: ldr r1, _080237C4 @ =gBattleScripting ldrb r0, [r1, 0x14] adds r0, 0x1 strb r0, [r1, 0x14] b _08023BFE .align 2, 0 _080237A8: .4byte gMoveResultFlags _080237AC: .4byte gStatuses3 _080237B0: .4byte sBattler_AI _080237B4: .4byte 0x000400c0 _080237B8: .4byte gActiveBattler _080237BC: .4byte 0xfffbff3f _080237C0: .4byte gUnknown_2023ECC _080237C4: .4byte gBattleScripting _080237C8: ldr r1, _080237D4 @ =gBattleScripting ldrb r0, [r1, 0x14] adds r0, 0x1 strb r0, [r1, 0x14] mov r12, r1 b _08023BB4 .align 2, 0 _080237D4: .4byte gBattleScripting _080237D8: ldr r0, _08023808 @ =gUnknown_2023ECC ldr r6, _0802380C @ =gBattlerTarget ldrb r2, [r6] lsls r3, r2, 2 adds r1, r3, r2 lsls r1, 2 adds r1, r0 ldrb r0, [r1] lsls r0, 29 cmp r0, 0 blt _08023846 ldr r0, _08023810 @ =gBattlersCount ldrb r0, [r0] cmp r2, r0 bcs _08023846 ldr r5, _08023814 @ =gStatuses3 adds r0, r3, r5 ldr r0, [r0] ldr r1, _08023818 @ =0x000400c0 ands r0, r1 cmp r0, 0 bne _08023806 b _080232C4 _08023806: b _08023846 .align 2, 0 _08023808: .4byte gUnknown_2023ECC _0802380C: .4byte gBattlerTarget _08023810: .4byte gBattlersCount _08023814: .4byte gStatuses3 _08023818: .4byte 0x000400c0 _0802381C: movs r4, 0 ldr r0, _08023850 @ =gBattlersCount ldrb r2, [r0] cmp r4, r2 bge _08023846 ldr r2, _08023854 @ =gDisableStructs ldr r5, _08023858 @ =0xfeffffff adds r3, r0, 0 ldr r1, _0802385C @ =gUnknown_2023C34 _0802382E: ldrb r0, [r2, 0xA] cmp r0, 0 bne _0802383A ldr r0, [r1] ands r0, r5 str r0, [r1] _0802383A: adds r2, 0x1C adds r1, 0x58 adds r4, 0x1 ldrb r0, [r3] cmp r4, r0 blt _0802382E _08023846: mov r1, r12 ldrb r0, [r1, 0x14] adds r0, 0x1 strb r0, [r1, 0x14] b _08023BB4 .align 2, 0 _08023850: .4byte gBattlersCount _08023854: .4byte gDisableStructs _08023858: .4byte 0xfeffffff _0802385C: .4byte gUnknown_2023C34 _08023860: ldr r1, _08023914 @ =gUnknown_2023DD0 ldr r3, [r1] movs r0, 0x80 lsls r0, 5 ands r0, r3 ldr r2, _08023918 @ =sBattler_AI mov r9, r2 adds r5, r1, 0 cmp r0, 0 beq _0802388A ldr r0, _0802391C @ =gActiveBattler ldrb r2, [r2] strb r2, [r0] ldr r1, _08023920 @ =gBattlerTarget ldrb r0, [r1] mov r4, r9 strb r0, [r4] strb r2, [r1] ldr r0, _08023924 @ =0xffffefff ands r3, r0 str r3, [r5] _0802388A: ldr r0, [r5] movs r1, 0x80 lsls r1, 3 ands r0, r1 cmp r0, 0 beq _080238A6 ldr r0, _08023928 @ =gUnknown_2023D90 mov r2, r9 ldrb r1, [r2] lsls r1, 1 adds r1, r0 ldr r0, _0802392C @ =gUnknown_2023D4C ldrh r0, [r0] strh r0, [r1] _080238A6: ldr r0, _08023930 @ =gAbsentBattlerFlags ldrb r1, [r0] ldr r2, _08023934 @ =gBitTable mov r3, r9 ldrb r4, [r3] lsls r0, r4, 2 adds r0, r2 ldr r3, [r0] ands r1, r3 adds r6, r2, 0 cmp r1, 0 beq _080238C0 b _08023A2C _080238C0: ldr r0, _08023938 @ =gBattleStruct ldr r1, [r0] adds r1, 0x91 ldrb r1, [r1] ands r1, r3 adds r7, r0, 0 cmp r1, 0 beq _080238D2 b _08023A2C _080238D2: ldr r0, _0802393C @ =gBattleMoves ldr r2, [sp, 0x18] lsls r1, r2, 1 adds r1, r2 lsls r1, 2 adds r1, r0 ldrb r1, [r1] mov r8, r0 cmp r1, 0x7F bne _080238E8 b _08023A2C _080238E8: ldr r0, [r5] movs r1, 0x80 lsls r1, 18 ands r0, r1 cmp r0, 0 beq _0802394C ldr r0, _08023940 @ =gLastUsedMove lsls r1, r4, 1 adds r1, r0 ldr r0, _0802392C @ =gUnknown_2023D4C ldrh r0, [r0] strh r0, [r1] ldr r0, _08023944 @ =gUnknown_2023DB0 mov r3, r9 ldrb r1, [r3] lsls r1, 1 adds r1, r0 ldr r0, _08023948 @ =gCurrentMove ldrh r0, [r0] strh r0, [r1] b _08023966 .align 2, 0 _08023914: .4byte gUnknown_2023DD0 _08023918: .4byte sBattler_AI _0802391C: .4byte gActiveBattler _08023920: .4byte gBattlerTarget _08023924: .4byte 0xffffefff _08023928: .4byte gUnknown_2023D90 _0802392C: .4byte gUnknown_2023D4C _08023930: .4byte gAbsentBattlerFlags _08023934: .4byte gBitTable _08023938: .4byte gBattleStruct _0802393C: .4byte gBattleMoves _08023940: .4byte gLastUsedMove _08023944: .4byte gUnknown_2023DB0 _08023948: .4byte gCurrentMove _0802394C: ldr r1, _080239B4 @ =gLastUsedMove lsls r0, r4, 1 adds r0, r1 ldr r1, _080239B8 @ =0x0000ffff strh r1, [r0] ldr r1, _080239BC @ =gUnknown_2023DB0 mov r4, r9 ldrb r0, [r4] lsls r0, 1 adds r0, r1 movs r1, 0x1 negs r1, r1 strh r1, [r0] _08023966: ldr r2, _080239C0 @ =gBattlerTarget ldrb r3, [r2] lsls r0, r3, 2 adds r0, r6 ldr r0, [r0] lsls r0, 28 ldr r1, [r5] ands r1, r0 cmp r1, 0 bne _08023984 ldr r0, _080239C4 @ =gUnknown_2023DC0 adds r0, r3, r0 mov r3, r9 ldrb r1, [r3] strb r1, [r0] _08023984: ldr r0, [r5] movs r1, 0x80 lsls r1, 18 ands r0, r1 cmp r0, 0 beq _08023A20 ldr r0, _080239C8 @ =gMoveResultFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 bne _08023A20 ldr r0, _080239CC @ =gUnknown_2023D4C ldrh r3, [r0] ldr r0, _080239B8 @ =0x0000ffff cmp r3, r0 bne _080239D4 ldr r1, _080239D0 @ =gUnknown_2023DA0 ldrb r0, [r2] lsls r0, 1 adds r0, r1 strh r3, [r0] b _08023A2C .align 2, 0 _080239B4: .4byte gLastUsedMove _080239B8: .4byte 0x0000ffff _080239BC: .4byte gUnknown_2023DB0 _080239C0: .4byte gBattlerTarget _080239C4: .4byte gUnknown_2023DC0 _080239C8: .4byte gMoveResultFlags _080239CC: .4byte gUnknown_2023D4C _080239D0: .4byte gUnknown_2023DA0 _080239D4: ldr r0, _080239F8 @ =gUnknown_2023DA0 ldrb r1, [r2] lsls r1, 1 adds r1, r0 ldr r4, _080239FC @ =gCurrentMove ldrh r0, [r4] strh r0, [r1] ldr r0, [r7] ldrb r3, [r0, 0x13] cmp r3, 0 beq _08023A04 ldr r0, _08023A00 @ =gUnknown_2023DA8 ldrb r1, [r2] lsls r1, 1 adds r1, r0 movs r0, 0x3F ands r0, r3 b _08023A2A .align 2, 0 _080239F8: .4byte gUnknown_2023DA0 _080239FC: .4byte gCurrentMove _08023A00: .4byte gUnknown_2023DA8 _08023A04: ldr r0, _08023A1C @ =gUnknown_2023DA8 ldrb r2, [r2] lsls r2, 1 adds r2, r0 ldrh r1, [r4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 add r0, r8 ldrb r0, [r0, 0x2] strh r0, [r2] b _08023A2C .align 2, 0 _08023A1C: .4byte gUnknown_2023DA8 _08023A20: ldr r0, _08023A38 @ =gUnknown_2023DA0 ldrb r1, [r2] lsls r1, 1 adds r1, r0 ldr r0, _08023A3C @ =0x0000ffff _08023A2A: strh r0, [r1] _08023A2C: mov r4, r12 ldrb r0, [r4, 0x14] adds r0, 0x1 strb r0, [r4, 0x14] b _08023BB4 .align 2, 0 _08023A38: .4byte gUnknown_2023DA0 _08023A3C: .4byte 0x0000ffff _08023A40: ldr r0, _08023B04 @ =gAbsentBattlerFlags ldrb r1, [r0] ldr r7, _08023B08 @ =gBitTable ldr r2, _08023B0C @ =sBattler_AI ldrb r3, [r2] lsls r0, r3, 2 adds r0, r7 ldr r4, [r0] ands r1, r4 mov r9, r2 cmp r1, 0 bne _08023AFA ldr r6, _08023B10 @ =gBattleStruct ldr r5, [r6] adds r0, r5, 0 adds r0, 0x91 ldrb r0, [r0] ands r0, r4 cmp r0, 0 bne _08023AFA ldr r1, _08023B14 @ =gBattleMoves ldr r2, [sp, 0x18] lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r1 ldrb r1, [r0, 0x8] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _08023AFA ldr r0, _08023B18 @ =gUnknown_2023DD0 ldr r1, [r0] movs r0, 0x80 lsls r0, 18 ands r0, r1 cmp r0, 0 beq _08023AFA ldr r4, _08023B1C @ =gBattlerTarget ldrb r0, [r4] cmp r3, r0 beq _08023AFA ldrb r2, [r4] lsls r0, r2, 2 adds r0, r7 ldr r0, [r0] lsls r0, 28 ands r1, r0 cmp r1, 0 bne _08023AFA ldr r0, _08023B20 @ =gMoveResultFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 bne _08023AFA lsls r1, r2, 1 adds r1, r5 adds r1, 0x98 ldr r3, _08023B24 @ =gUnknown_2023D4C ldrh r0, [r3] strb r0, [r1] ldrb r1, [r4] ldr r0, [r6] lsls r1, 1 adds r1, r0 adds r1, 0x99 ldrh r0, [r3] lsrs r0, 8 strb r0, [r1] ldrb r0, [r4] mov r2, r9 ldrb r1, [r2] ldr r2, [r6] lsls r0, 3 lsls r1, 1 adds r0, r1 adds r0, r2 adds r0, 0xE0 ldrh r1, [r3] strb r1, [r0] ldrb r1, [r4] mov r4, r9 ldrb r0, [r4] ldr r2, [r6] lsls r1, 3 lsls r0, 1 adds r1, r0 adds r1, r2 adds r1, 0xE1 ldrh r0, [r3] lsrs r0, 8 strb r0, [r1] _08023AFA: mov r5, r12 ldrb r0, [r5, 0x14] adds r0, 0x1 strb r0, [r5, 0x14] b _08023BB4 .align 2, 0 _08023B04: .4byte gAbsentBattlerFlags _08023B08: .4byte gBitTable _08023B0C: .4byte sBattler_AI _08023B10: .4byte gBattleStruct _08023B14: .4byte gBattleMoves _08023B18: .4byte gUnknown_2023DD0 _08023B1C: .4byte gBattlerTarget _08023B20: .4byte gMoveResultFlags _08023B24: .4byte gUnknown_2023D4C _08023B28: ldr r5, _08023C10 @ =gUnknown_2023DD0 ldr r2, [r5] movs r0, 0x80 lsls r0, 12 ands r0, r2 cmp r0, 0 bne _08023BAC ldr r0, _08023C14 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _08023BAC ldr r1, _08023C18 @ =gUnknown_2023E8C ldr r0, _08023C1C @ =sBattler_AI ldrb r0, [r0] lsls r0, 4 adds r0, r1 ldrb r0, [r0, 0x1] lsls r0, 29 cmp r0, 0 blt _08023BAC ldr r0, _08023C20 @ =gBattleMoves mov r9, r0 ldr r1, _08023C24 @ =gCurrentMove mov r8, r1 ldrh r0, [r1] lsls r1, r0, 1 adds r1, r0 lsls r1, 2 add r1, r9 ldrb r0, [r1, 0x6] cmp r0, 0x8 bne _08023BAC movs r6, 0x80 lsls r6, 2 adds r4, r6, 0 ands r4, r2 cmp r4, 0 bne _08023BAC ldr r7, _08023C28 @ =gBattlerTarget ldrb r0, [r7] bl GetBattlerPosition movs r1, 0x2 eors r0, r1 lsls r0, 24 lsrs r0, 24 bl GetBattlerAtPosition lsls r0, 24 lsrs r2, r0, 24 ldr r1, _08023C2C @ =gBattleMons movs r0, 0x58 muls r0, r2 adds r0, r1 ldrh r0, [r0, 0x28] cmp r0, 0 beq _08023BA2 bl _080232F0 _08023BA2: ldr r0, [r5] orrs r0, r6 str r0, [r5] ldr r2, _08023C30 @ =gBattleScripting mov r12, r2 _08023BAC: mov r3, r12 ldrb r0, [r3, 0x14] adds r0, 0x1 strb r0, [r3, 0x14] _08023BB4: ldr r4, [sp, 0x10] cmp r4, 0x1 bne _08023BC6 mov r5, r10 cmp r5, 0 bne _08023BC6 movs r0, 0x11 mov r1, r12 strb r0, [r1, 0x14] _08023BC6: ldr r2, [sp, 0x10] cmp r2, 0x2 bne _08023BDC ldr r4, [sp, 0x14] mov r3, r12 ldrb r3, [r3, 0x14] cmp r4, r3 bne _08023BDC movs r0, 0x11 mov r4, r12 strb r0, [r4, 0x14] _08023BDC: mov r5, r12 ldrb r0, [r5, 0x14] cmp r0, 0x11 beq _08023BE8 bl _08023358 _08023BE8: mov r1, r12 ldrb r0, [r1, 0x14] cmp r0, 0x11 bne _08023BFE mov r2, r10 cmp r2, 0 bne _08023BFE ldr r1, _08023C34 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x3 _08023BFC: str r0, [r1] _08023BFE: add sp, 0x1C pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08023C10: .4byte gUnknown_2023DD0 _08023C14: .4byte gBattleTypeFlags _08023C18: .4byte gUnknown_2023E8C _08023C1C: .4byte sBattler_AI _08023C20: .4byte gBattleMoves _08023C24: .4byte gCurrentMove _08023C28: .4byte gBattlerTarget _08023C2C: .4byte gBattleMons _08023C30: .4byte gBattleScripting _08023C34: .4byte gUnknown_2023D74 thumb_func_end atk49_moveend thumb_func_start atk4A_typecalc2 atk4A_typecalc2: @ 8023C38 push {r4-r7,lr} mov r7, r8 push {r7} movs r4, 0 movs r5, 0 ldr r2, _08023C9C @ =gBattleMoves ldr r0, _08023CA0 @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x2] mov r8, r0 ldr r2, _08023CA4 @ =gBattleMons ldr r3, _08023CA8 @ =gBattlerTarget ldrb r1, [r3] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x20 ldrb r0, [r0] mov r12, r2 adds r7, r3, 0 cmp r0, 0x1A bne _08023CCC mov r1, r8 cmp r1, 0x4 bne _08023CCC ldr r3, _08023CAC @ =gLastUsedAbility strb r0, [r3] ldr r2, _08023CB0 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x9 orrs r0, r1 strb r0, [r2] ldr r1, _08023CB4 @ =gUnknown_2023DA0 ldrb r0, [r7] lsls r0, 1 adds r0, r1 strh r4, [r0] ldr r0, _08023CB8 @ =gUnknown_2023E82 mov r2, r8 strb r2, [r0, 0x6] ldrb r0, [r7] ldrb r1, [r3] bl sub_80C71D0 b _08023DAE .align 2, 0 _08023C9C: .4byte gBattleMoves _08023CA0: .4byte gCurrentMove _08023CA4: .4byte gBattleMons _08023CA8: .4byte gBattlerTarget _08023CAC: .4byte gLastUsedAbility _08023CB0: .4byte gMoveResultFlags _08023CB4: .4byte gUnknown_2023DA0 _08023CB8: .4byte gUnknown_2023E82 _08023CBC: ldr r0, _08023CC8 @ =gMoveResultFlags ldrb r1, [r0] movs r2, 0x8 orrs r1, r2 strb r1, [r0] b _08023DAE .align 2, 0 _08023CC8: .4byte gMoveResultFlags _08023CCC: ldr r1, _08023CD8 @ =gUnknown_824F050 adds r0, r5, r1 ldrb r0, [r0] adds r6, r1, 0 b _08023D8E .align 2, 0 _08023CD8: .4byte gUnknown_824F050 _08023CDC: adds r0, r5, r6 ldrb r0, [r0] cmp r0, r8 bne _08023D88 adds r2, r5, 0x1 adds r3, r2, r6 ldrb r1, [r7] movs r0, 0x58 muls r0, r1 add r0, r12 adds r0, 0x21 ldrb r1, [r3] adds r3, r2, 0 ldrb r0, [r0] cmp r1, r0 bne _08023D1A adds r0, r5, 0x2 adds r0, r6 ldrb r1, [r0] cmp r1, 0 beq _08023CBC cmp r1, 0x5 bne _08023D0E movs r0, 0x4 orrs r4, r0 _08023D0E: cmp r1, 0x14 bne _08023D1A movs r0, 0x2 orrs r4, r0 lsls r0, r4, 24 lsrs r4, r0, 24 _08023D1A: adds r2, r3, r6 ldrb r1, [r7] movs r0, 0x58 muls r0, r1 add r0, r12 adds r1, r0, 0 adds r1, 0x22 ldrb r2, [r2] ldrb r1, [r1] cmp r2, r1 bne _08023D88 adds r0, 0x21 ldrb r1, [r0] cmp r1, r2 beq _08023D42 adds r0, r5, 0x2 adds r0, r6 ldrb r0, [r0] cmp r0, 0 beq _08023CBC _08023D42: cmp r1, r2 beq _08023D58 adds r0, r5, 0x2 adds r0, r6 ldrb r0, [r0] cmp r0, 0x5 bne _08023D58 movs r0, 0x4 orrs r4, r0 lsls r0, r4, 24 lsrs r4, r0, 24 _08023D58: adds r2, r3, r6 ldrb r1, [r7] movs r0, 0x58 muls r0, r1 add r0, r12 adds r1, r0, 0 adds r1, 0x22 ldrb r2, [r2] ldrb r1, [r1] cmp r2, r1 bne _08023D88 adds r0, 0x21 ldrb r0, [r0] cmp r0, r2 beq _08023D88 adds r0, r5, 0x2 adds r0, r6 ldrb r0, [r0] cmp r0, 0x14 bne _08023D88 movs r0, 0x2 orrs r4, r0 lsls r0, r4, 24 lsrs r4, r0, 24 _08023D88: adds r5, 0x3 adds r0, r5, r6 ldrb r0, [r0] _08023D8E: cmp r0, 0xFF beq _08023DAE cmp r0, 0xFE bne _08023CDC ldrb r1, [r7] movs r0, 0x58 muls r0, r1 mov r1, r12 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 22 ands r0, r1 cmp r0, 0 beq _08023D88 _08023DAE: ldr r2, _08023E5C @ =gBattleMons ldr r0, _08023E60 @ =gBattlerTarget mov r8, r0 ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x20 ldrb r6, [r0] cmp r6, 0x19 bne _08023E2A movs r5, 0x29 ands r5, r4 cmp r5, 0 bne _08023E2A ldr r0, _08023E64 @ =sBattler_AI ldrb r0, [r0] ldr r7, _08023E68 @ =gCurrentMove ldrh r1, [r7] bl AttacksThisTurn lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x2 bne _08023E2A adds r0, r4, 0 ands r0, r1 cmp r0, 0 beq _08023DF0 movs r0, 0x6 ands r4, r0 cmp r4, 0x6 bne _08023E2A _08023DF0: ldr r2, _08023E6C @ =gBattleMoves ldrh r1, [r7] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x1] cmp r0, 0 beq _08023E2A ldr r3, _08023E70 @ =gLastUsedAbility strb r6, [r3] ldr r2, _08023E74 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r1, _08023E78 @ =gUnknown_2023DA0 mov r2, r8 ldrb r0, [r2] lsls r0, 1 adds r0, r1 strh r5, [r0] ldr r1, _08023E7C @ =gUnknown_2023E82 movs r0, 0x3 strb r0, [r1, 0x6] ldrb r0, [r2] ldrb r1, [r3] bl sub_80C71D0 _08023E2A: ldr r0, _08023E74 @ =gMoveResultFlags ldrb r1, [r0] movs r0, 0x8 ands r0, r1 cmp r0, 0 beq _08023E48 ldr r2, _08023E80 @ =gUnknown_2023E8C ldr r0, _08023E64 @ =sBattler_AI ldrb r1, [r0] lsls r1, 4 adds r1, r2 ldrb r0, [r1, 0x1] movs r2, 0x2 orrs r0, r2 strb r0, [r1, 0x1] _08023E48: ldr r1, _08023E84 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08023E5C: .4byte gBattleMons _08023E60: .4byte gBattlerTarget _08023E64: .4byte sBattler_AI _08023E68: .4byte gCurrentMove _08023E6C: .4byte gBattleMoves _08023E70: .4byte gLastUsedAbility _08023E74: .4byte gMoveResultFlags _08023E78: .4byte gUnknown_2023DA0 _08023E7C: .4byte gUnknown_2023E82 _08023E80: .4byte gUnknown_2023E8C _08023E84: .4byte gUnknown_2023D74 thumb_func_end atk4A_typecalc2 thumb_func_start atk4B_returnatktoball atk4B_returnatktoball: @ 8023E88 push {r4,lr} ldr r4, _08023EC4 @ =gActiveBattler ldr r0, _08023EC8 @ =sBattler_AI ldrb r0, [r0] strb r0, [r4] ldr r2, _08023ECC @ =gUnknown_2023DD0 ldr r1, _08023ED0 @ =gBitTable ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, [r0] lsls r1, 28 ldr r0, [r2] ands r0, r1 cmp r0, 0 bne _08023EB6 movs r0, 0 movs r1, 0 bl EmitReturnMonToBall ldrb r0, [r4] bl MarkBufferBankForExecution _08023EB6: ldr r1, _08023ED4 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _08023EC4: .4byte gActiveBattler _08023EC8: .4byte sBattler_AI _08023ECC: .4byte gUnknown_2023DD0 _08023ED0: .4byte gBitTable _08023ED4: .4byte gUnknown_2023D74 thumb_func_end atk4B_returnatktoball thumb_func_start atk4C_getswitchedmondata atk4C_getswitchedmondata: @ 8023ED8 push {r4,r5,lr} ldr r0, _08023F30 @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 bne _08023F28 ldr r5, _08023F34 @ =gUnknown_2023D74 ldr r0, [r5] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r4, _08023F38 @ =gActiveBattler strb r0, [r4] ldr r3, _08023F3C @ =gBattlerPartyIndexes ldrb r0, [r4] lsls r2, r0, 1 adds r2, r3 ldr r1, _08023F40 @ =gBattleStruct ldr r1, [r1] adds r0, r1 adds r0, 0x5C ldrb r0, [r0] strh r0, [r2] ldr r1, _08023F44 @ =gBitTable ldrb r0, [r4] lsls r0, 1 adds r0, r3 ldrh r0, [r0] lsls r0, 2 adds r0, r1 ldrb r2, [r0] movs r0, 0 movs r1, 0 bl BtlController_EmitGetMonData ldrb r0, [r4] bl MarkBufferBankForExecution ldr r0, [r5] adds r0, 0x2 str r0, [r5] _08023F28: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08023F30: .4byte gUnknown_2023BC8 _08023F34: .4byte gUnknown_2023D74 _08023F38: .4byte gActiveBattler _08023F3C: .4byte gBattlerPartyIndexes _08023F40: .4byte gBattleStruct _08023F44: .4byte gBitTable thumb_func_end atk4C_getswitchedmondata thumb_func_start sub_8023F48 sub_8023F48: @ 8023F48 push {r4-r7,lr} sub sp, 0x58 ldr r0, _080240A0 @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 beq _08023F56 b _08024098 _08023F56: ldr r0, _080240A4 @ =gUnknown_2023D74 ldr r0, [r0] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r4, _080240A8 @ =gActiveBattler strb r0, [r4] ldr r6, _080240AC @ =gBattleMons ldrb r0, [r4] movs r5, 0x58 adds r1, r0, 0 muls r1, r5 adds r1, r6 mov r0, sp movs r2, 0x58 bl memcpy ldrb r0, [r4] muls r0, r5 adds r3, r0, r6 movs r2, 0 ldr r5, _080240B0 @ =gUnknown_20233C4 adds r7, r4, 0 _08023F84: adds r0, r3, r2 ldrb r1, [r4] lsls r1, 9 adds r1, 0x4 adds r1, r2, r1 adds r1, r5 ldrb r1, [r1] strb r1, [r0] adds r2, 0x1 cmp r2, 0x57 bls _08023F84 ldr r4, _080240AC @ =gBattleMons ldrb r0, [r7] movs r6, 0x58 adds r2, r0, 0 muls r2, r6 adds r2, r4 ldr r3, _080240B4 @ =gBaseStats ldrh r1, [r2] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r3 ldrb r0, [r0, 0x6] adds r2, 0x21 strb r0, [r2] ldrb r0, [r7] adds r1, r0, 0 muls r1, r6 adds r1, r4 ldrh r2, [r1] lsls r0, r2, 3 subs r0, r2 lsls r0, 2 adds r0, r3 ldrb r0, [r0, 0x7] adds r1, 0x22 strb r0, [r1] ldrb r0, [r7] adds r1, r0, 0 muls r1, r6 adds r1, r4 ldrh r0, [r1] ldrb r1, [r1, 0x17] lsrs r1, 7 bl GetAbilityBySpecies ldrb r1, [r7] muls r1, r6 adds r1, r4 adds r1, 0x20 strb r0, [r1] ldrb r0, [r7] bl GetBattlerSide lsls r0, 24 lsrs r2, r0, 24 ldr r0, _080240B8 @ =gUnknown_2023F20 adds r0, 0x29 adds r0, r2, r0 ldrb r1, [r0] ldr r3, _080240BC @ =gBitTable ldr r2, _080240C0 @ =gBattlerPartyIndexes ldrb r5, [r7] lsls r0, r5, 1 adds r0, r2 ldrh r0, [r0] lsls r0, 2 adds r0, r3 ldr r0, [r0] ands r1, r0 mov r12, r4 cmp r1, 0 beq _08024022 adds r0, r5, 0 muls r0, r6 add r0, r12 movs r1, 0 strh r1, [r0, 0x2E] _08024022: ldr r2, _080240C4 @ =gBattleMoves ldr r0, _080240C8 @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0] cmp r0, 0x7F bne _08024068 movs r2, 0 adds r4, r7, 0 movs r6, 0x58 mov r5, r12 adds r5, 0x18 add r3, sp, 0x18 _08024042: ldrb r0, [r4] adds r1, r0, 0 muls r1, r6 adds r1, r2, r1 adds r1, r5 adds r0, r3, r2 ldrb r0, [r0] strb r0, [r1] adds r2, 0x1 cmp r2, 0x7 ble _08024042 ldrb r1, [r7] movs r0, 0x58 muls r0, r1 mov r1, r12 adds r1, 0x50 adds r0, r1 ldr r1, [sp, 0x50] str r1, [r0] _08024068: bl sub_8012760 ldr r0, _080240CC @ =gBattleScripting ldr r3, _080240A8 @ =gActiveBattler ldrb r2, [r3] strb r2, [r0, 0x17] ldr r1, _080240D0 @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x7 strb r0, [r1, 0x1] strb r2, [r1, 0x2] ldr r2, _080240C0 @ =gBattlerPartyIndexes ldrb r0, [r3] lsls r0, 1 adds r0, r2 ldrh r0, [r0] strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldr r1, _080240A4 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x2 str r0, [r1] _08024098: add sp, 0x58 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080240A0: .4byte gUnknown_2023BC8 _080240A4: .4byte gUnknown_2023D74 _080240A8: .4byte gActiveBattler _080240AC: .4byte gBattleMons _080240B0: .4byte gUnknown_20233C4 _080240B4: .4byte gBaseStats _080240B8: .4byte gUnknown_2023F20 _080240BC: .4byte gBitTable _080240C0: .4byte gBattlerPartyIndexes _080240C4: .4byte gBattleMoves _080240C8: .4byte gCurrentMove _080240CC: .4byte gBattleScripting _080240D0: .4byte gBattleTextBuff1 thumb_func_end sub_8023F48 thumb_func_start sub_80240D4 sub_80240D4: @ 80240D4 push {r4-r6,lr} ldr r0, _08024168 @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 bne _08024160 ldr r0, _0802416C @ =gUnknown_2023D74 ldr r0, [r0] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r6, _08024170 @ =gActiveBattler strb r0, [r6] ldrb r0, [r6] bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0802412A ldr r0, _08024174 @ =gBattleTypeFlags ldr r0, [r0] ldr r1, _08024178 @ =0x0001aa02 ands r0, r1 cmp r0, 0 bne _0802412A ldr r4, _0802417C @ =gBattleMons ldrb r0, [r6] movs r5, 0x58 muls r0, r5 adds r0, r4 ldrh r0, [r0] bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 ldrb r1, [r6] muls r1, r5 adds r4, 0x48 adds r1, r4 ldr r2, [r1] movs r1, 0x2 bl HandleSetPokedexFlag _0802412A: ldr r2, _08024180 @ =gAbsentBattlerFlags ldr r1, _08024184 @ =gBitTable ldr r5, _08024170 @ =gActiveBattler ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, [r0] ldrb r0, [r2] bics r0, r1 strb r0, [r2] ldr r1, _08024188 @ =gBattlerPartyIndexes ldrb r0, [r5] lsls r0, 1 adds r0, r1 ldrb r1, [r0] ldr r4, _0802416C @ =gUnknown_2023D74 ldr r0, [r4] ldrb r2, [r0, 0x2] movs r0, 0 bl EmitSwitchInAnim ldrb r0, [r5] bl MarkBufferBankForExecution ldr r0, [r4] adds r0, 0x3 str r0, [r4] _08024160: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08024168: .4byte gUnknown_2023BC8 _0802416C: .4byte gUnknown_2023D74 _08024170: .4byte gActiveBattler _08024174: .4byte gBattleTypeFlags _08024178: .4byte 0x0001aa02 _0802417C: .4byte gBattleMons _08024180: .4byte gAbsentBattlerFlags _08024184: .4byte gBitTable _08024188: .4byte gBattlerPartyIndexes thumb_func_end sub_80240D4 thumb_func_start sub_802418C sub_802418C: @ 802418C push {r4-r7,lr} mov r7, r8 push {r7} ldr r4, _080241F0 @ =gUnknown_2023D74 ldr r0, [r4] ldrb r1, [r0, 0x1] movs r0, 0x7F ands r0, r1 bl sub_8016E24 ldr r3, _080241F4 @ =gActiveBattler strb r0, [r3] ldr r2, [r4] ldrb r1, [r2, 0x1] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _08024204 ldr r1, _080241F8 @ =gBattleMons ldrb r3, [r3] movs r0, 0x58 muls r0, r3 adds r1, 0x50 adds r0, r1 ldr r0, [r0] ldr r1, _080241FC @ =0x0400e000 ands r0, r1 cmp r0, 0 bne _080241D8 ldr r1, _08024200 @ =gStatuses3 lsls r0, r3, 2 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 3 ands r0, r1 cmp r0, 0 beq _08024204 _080241D8: ldrb r1, [r2, 0x2] ldrb r0, [r2, 0x3] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x5] lsls r0, 24 orrs r1, r0 str r1, [r4] b _08024388 .align 2, 0 _080241F0: .4byte gUnknown_2023D74 _080241F4: .4byte gActiveBattler _080241F8: .4byte gBattleMons _080241FC: .4byte 0x0400e000 _08024200: .4byte gStatuses3 _08024204: ldr r5, _08024290 @ =gBattleTypeFlags ldr r0, [r5] movs r1, 0x40 ands r0, r1 cmp r0, 0 beq _080242A4 ldr r4, _08024294 @ =gActiveBattler ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 lsrs r0, 24 ldr r1, _08024298 @ =gPlayerParty mov r8, r1 cmp r0, 0x1 bne _08024228 ldr r0, _0802429C @ =gEnemyParty mov r8, r0 _08024228: movs r5, 0 ldrb r0, [r4] bl GetBankMultiplayerId lsls r0, 24 lsrs r0, 24 bl GetLinkTrainerFlankId lsls r0, 16 lsrs r0, 16 cmp r0, 0x1 bne _08024242 movs r5, 0x3 _08024242: adds r6, r5, 0x3 cmp r5, r6 bge _0802428A ldr r7, _080242A0 @ =gBattlerPartyIndexes _0802424A: movs r0, 0x64 muls r0, r5 mov r1, r8 adds r4, r1, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _08024284 adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 bne _08024284 adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _08024284 ldr r0, _08024294 @ =gActiveBattler ldrb r0, [r0] lsls r0, 1 adds r0, r7 ldrh r0, [r0] cmp r0, r5 bne _0802428A _08024284: adds r5, 0x1 cmp r5, r6 blt _0802424A _0802428A: cmp r5, r6 beq _08024358 b _08024380 .align 2, 0 _08024290: .4byte gBattleTypeFlags _08024294: .4byte gActiveBattler _08024298: .4byte gPlayerParty _0802429C: .4byte gEnemyParty _080242A0: .4byte gBattlerPartyIndexes _080242A4: ldr r0, _080242D4 @ =gActiveBattler ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x1 bne _080242E4 movs r0, 0x1 bl GetBattlerAtPosition lsls r0, 24 lsrs r7, r0, 24 ldr r0, [r5] ands r0, r4 cmp r0, 0 beq _080242D8 movs r0, 0x3 bl GetBattlerAtPosition lsls r0, 24 lsrs r6, r0, 24 b _080242DA .align 2, 0 _080242D4: .4byte gActiveBattler _080242D8: adds r6, r7, 0 _080242DA: ldr r0, _080242E0 @ =gEnemyParty mov r8, r0 b _0802430A .align 2, 0 _080242E0: .4byte gEnemyParty _080242E4: movs r0, 0 bl GetBattlerAtPosition lsls r0, 24 lsrs r7, r0, 24 ldr r0, [r5] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _08024304 movs r0, 0x2 bl GetBattlerAtPosition lsls r0, 24 lsrs r6, r0, 24 b _08024306 _08024304: adds r6, r7, 0 _08024306: ldr r1, _08024374 @ =gPlayerParty mov r8, r1 _0802430A: movs r5, 0 _0802430C: movs r0, 0x64 muls r0, r5 mov r1, r8 adds r4, r1, r0 adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _0802434E adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _0802434E adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 bne _0802434E ldr r1, _08024378 @ =gBattlerPartyIndexes lsls r0, r7, 1 adds r0, r1 ldrh r0, [r0] cmp r5, r0 beq _0802434E lsls r0, r6, 1 adds r0, r1 ldrh r0, [r0] cmp r5, r0 bne _08024354 _0802434E: adds r5, 0x1 cmp r5, 0x5 ble _0802430C _08024354: cmp r5, 0x6 bne _08024380 _08024358: ldr r3, _0802437C @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x2] ldrb r0, [r2, 0x3] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x5] lsls r0, 24 orrs r1, r0 str r1, [r3] b _08024388 .align 2, 0 _08024374: .4byte gPlayerParty _08024378: .4byte gBattlerPartyIndexes _0802437C: .4byte gUnknown_2023D74 _08024380: ldr r1, _08024394 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x6 str r0, [r1] _08024388: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08024394: .4byte gUnknown_2023D74 thumb_func_end sub_802418C thumb_func_start sub_8024398 sub_8024398: @ 8024398 push {r4,r5,lr} sub sp, 0x4 adds r2, r0, 0 lsls r2, 24 lsrs r2, 24 ldr r4, _080243E0 @ =gActiveBattler ldrb r0, [r4] ldr r5, _080243E4 @ =gBattleStruct ldr r1, [r5] adds r1, r0, r1 adds r1, 0x58 ldr r3, _080243E8 @ =gBattlerPartyIndexes lsls r0, 1 adds r0, r3 ldrh r0, [r0] strb r0, [r1] ldrb r0, [r4] lsls r1, r0, 1 adds r1, r0 adds r1, 0x60 ldr r0, [r5] adds r0, r1 str r0, [sp] movs r0, 0 movs r1, 0x1 movs r3, 0 bl EmitChoosePokemon ldrb r0, [r4] bl MarkBufferBankForExecution add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080243E0: .4byte gActiveBattler _080243E4: .4byte gBattleStruct _080243E8: .4byte gBattlerPartyIndexes thumb_func_end sub_8024398 thumb_func_start sub_80243EC sub_80243EC: @ 80243EC push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x4 movs r7, 0 movs r0, 0 mov r9, r0 ldr r6, _08024498 @ =gUnknown_2023D74 ldr r2, [r6] ldrb r1, [r2, 0x2] ldrb r0, [r2, 0x3] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x5] lsls r0, 24 orrs r1, r0 mov r8, r1 ldrb r1, [r2, 0x1] adds r0, r1, 0 mov r12, r6 cmp r0, 0x5 beq _08024422 b _080248B8 _08024422: ldr r0, _0802449C @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x41 ands r1, r0 cmp r1, 0x1 beq _08024510 ldr r1, _080244A0 @ =gActiveBattler strb r7, [r1] ldr r0, _080244A4 @ =gBattlersCount ldrb r0, [r0] cmp r7, r0 bcc _0802443C b _080248A6 _0802443C: ldr r7, _080244A8 @ =gUnknown_2023DD0 ldr r6, _080244AC @ =gBitTable adds r4, r1, 0 ldr r2, _080244B0 @ =gAbsentBattlerFlags mov r8, r2 _08024446: ldrb r2, [r4] lsls r0, r2, 2 adds r0, r6 ldr r1, [r0] lsls r1, 28 ldr r0, [r7] ands r0, r1 cmp r0, 0 beq _080244E8 adds r0, r2, 0 movs r1, 0x6 movs r2, 0x6 bl sub_8019C10 lsls r0, 24 cmp r0, 0 beq _080244B4 ldrb r0, [r4] lsls r0, 2 adds r0, r6 ldr r0, [r0] mov r2, r8 ldrb r1, [r2] orrs r0, r1 strb r0, [r2] ldrb r0, [r4] lsls r0, 2 adds r0, r6 ldr r1, [r0] lsls r1, 28 ldr r0, [r7] bics r0, r1 str r0, [r7] movs r0, 0 movs r1, 0x2 bl EmitLinkStandbyMsg ldrb r0, [r4] bl MarkBufferBankForExecution b _080244F6 .align 2, 0 _08024498: .4byte gUnknown_2023D74 _0802449C: .4byte gBattleTypeFlags _080244A0: .4byte gActiveBattler _080244A4: .4byte gBattlersCount _080244A8: .4byte gUnknown_2023DD0 _080244AC: .4byte gBitTable _080244B0: .4byte gAbsentBattlerFlags _080244B4: ldr r5, _080244E4 @ =gUnknown_2023ECC ldrb r0, [r4] lsls r1, r0, 2 adds r1, r0 lsls r1, 2 adds r1, r5 ldrb r0, [r1] lsls r0, 25 cmp r0, 0 blt _080244F6 movs r0, 0x6 bl sub_8024398 ldrb r1, [r4] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r5 ldrb r1, [r0] movs r2, 0x40 orrs r1, r2 strb r1, [r0] b _080244F6 .align 2, 0 _080244E4: .4byte gUnknown_2023ECC _080244E8: movs r0, 0 movs r1, 0x2 bl EmitLinkStandbyMsg ldrb r0, [r4] bl MarkBufferBankForExecution _080244F6: ldrb r0, [r4] adds r0, 0x1 strb r0, [r4] ldr r1, _0802450C @ =gBattlersCount lsls r0, 24 lsrs r0, 24 ldrb r1, [r1] cmp r0, r1 bcc _08024446 b _080248A6 .align 2, 0 _0802450C: .4byte gBattlersCount _08024510: ands r0, r1 cmp r0, 0 bne _08024518 b _080248A6 _08024518: ldr r0, _08024570 @ =gUnknown_2023DD0 mov r8, r0 ldr r0, [r0] lsrs r5, r0, 28 ldr r6, _08024574 @ =gBitTable ldr r0, [r6] ands r0, r5 cmp r0, 0 beq _080245CE ldr r4, _08024578 @ =gActiveBattler strb r7, [r4] movs r0, 0 movs r1, 0x6 movs r2, 0x6 bl sub_8019C10 lsls r0, 24 cmp r0, 0 beq _08024580 ldr r2, _0802457C @ =gAbsentBattlerFlags ldrb r0, [r4] lsls r0, 2 adds r0, r6 ldr r0, [r0] ldrb r1, [r2] orrs r0, r1 strb r0, [r2] ldrb r0, [r4] lsls r0, 2 adds r0, r6 ldr r1, [r0] lsls r1, 28 mov r2, r8 ldr r0, [r2] bics r0, r1 str r0, [r2] movs r0, 0 bl EmitCmd42 ldrb r0, [r4] bl MarkBufferBankForExecution b _080245CE .align 2, 0 _08024570: .4byte gUnknown_2023DD0 _08024574: .4byte gBitTable _08024578: .4byte gActiveBattler _0802457C: .4byte gAbsentBattlerFlags _08024580: ldr r6, _080245B4 @ =gUnknown_2023ECC ldrb r0, [r4] lsls r1, r0, 2 adds r1, r0 lsls r1, 2 adds r1, r6 ldrb r0, [r1] lsls r0, 25 cmp r0, 0 blt _080245BC ldr r0, _080245B8 @ =gBattleStruct ldr r0, [r0] adds r0, 0x5E ldrb r0, [r0] bl sub_8024398 ldrb r1, [r4] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r6 ldrb r1, [r0] movs r2, 0x40 orrs r1, r2 strb r1, [r0] b _080245CE .align 2, 0 _080245B4: .4byte gUnknown_2023ECC _080245B8: .4byte gBattleStruct _080245BC: movs r0, 0 movs r1, 0x2 bl EmitLinkStandbyMsg ldrb r0, [r4] bl MarkBufferBankForExecution movs r0, 0x1 mov r9, r0 _080245CE: ldr r6, _08024628 @ =gBitTable ldr r0, [r6, 0x8] ands r0, r5 cmp r0, 0 beq _0802468C ldr r0, [r6] ands r0, r5 cmp r0, 0 bne _0802468C ldr r4, _0802462C @ =gActiveBattler movs r0, 0x2 strb r0, [r4] movs r0, 0x2 movs r1, 0x6 movs r2, 0x6 bl sub_8019C10 lsls r0, 24 cmp r0, 0 beq _08024638 ldr r2, _08024630 @ =gAbsentBattlerFlags ldrb r0, [r4] lsls r0, 2 adds r0, r6 ldr r0, [r0] ldrb r1, [r2] orrs r0, r1 strb r0, [r2] ldr r2, _08024634 @ =gUnknown_2023DD0 ldrb r0, [r4] lsls r0, 2 adds r0, r6 ldr r1, [r0] lsls r1, 28 ldr r0, [r2] bics r0, r1 str r0, [r2] movs r0, 0 bl EmitCmd42 ldrb r0, [r4] bl MarkBufferBankForExecution b _0802468C .align 2, 0 _08024628: .4byte gBitTable _0802462C: .4byte gActiveBattler _08024630: .4byte gAbsentBattlerFlags _08024634: .4byte gUnknown_2023DD0 _08024638: ldr r6, _0802466C @ =gUnknown_2023ECC ldrb r0, [r4] lsls r1, r0, 2 adds r1, r0 lsls r1, 2 adds r1, r6 ldrb r0, [r1] lsls r0, 25 cmp r0, 0 blt _08024674 ldr r0, _08024670 @ =gBattleStruct ldr r0, [r0] adds r0, 0x5C ldrb r0, [r0] bl sub_8024398 ldrb r1, [r4] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r6 ldrb r1, [r0] movs r2, 0x40 orrs r1, r2 strb r1, [r0] b _0802468C .align 2, 0 _0802466C: .4byte gUnknown_2023ECC _08024670: .4byte gBattleStruct _08024674: movs r0, 0x1 mov r1, r9 ands r0, r1 cmp r0, 0 bne _0802468C movs r0, 0 movs r1, 0x2 bl EmitLinkStandbyMsg ldrb r0, [r4] bl MarkBufferBankForExecution _0802468C: ldr r6, _080246DC @ =gBitTable ldr r0, [r6, 0x4] ands r0, r5 cmp r0, 0 beq _0802473E ldr r4, _080246E0 @ =gActiveBattler movs r0, 0x1 strb r0, [r4] movs r0, 0x1 movs r1, 0x6 movs r2, 0x6 bl sub_8019C10 lsls r0, 24 cmp r0, 0 beq _080246EC ldr r2, _080246E4 @ =gAbsentBattlerFlags ldrb r0, [r4] lsls r0, 2 adds r0, r6 ldr r0, [r0] ldrb r1, [r2] orrs r0, r1 strb r0, [r2] ldr r2, _080246E8 @ =gUnknown_2023DD0 ldrb r0, [r4] lsls r0, 2 adds r0, r6 ldr r1, [r0] lsls r1, 28 ldr r0, [r2] bics r0, r1 str r0, [r2] movs r0, 0 bl EmitCmd42 ldrb r0, [r4] bl MarkBufferBankForExecution b _0802473E .align 2, 0 _080246DC: .4byte gBitTable _080246E0: .4byte gActiveBattler _080246E4: .4byte gAbsentBattlerFlags _080246E8: .4byte gUnknown_2023DD0 _080246EC: ldr r6, _08024720 @ =gUnknown_2023ECC ldrb r0, [r4] lsls r1, r0, 2 adds r1, r0 lsls r1, 2 adds r1, r6 ldrb r0, [r1] lsls r0, 25 cmp r0, 0 blt _08024728 ldr r0, _08024724 @ =gBattleStruct ldr r0, [r0] adds r0, 0x5F ldrb r0, [r0] bl sub_8024398 ldrb r1, [r4] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r6 ldrb r1, [r0] movs r2, 0x40 orrs r1, r2 strb r1, [r0] b _0802473E .align 2, 0 _08024720: .4byte gUnknown_2023ECC _08024724: .4byte gBattleStruct _08024728: movs r0, 0 movs r1, 0x2 bl EmitLinkStandbyMsg ldrb r0, [r4] bl MarkBufferBankForExecution movs r0, 0x2 mov r2, r9 orrs r2, r0 mov r9, r2 _0802473E: ldr r6, _08024798 @ =gBitTable ldr r0, [r6, 0xC] ands r0, r5 cmp r0, 0 beq _080247FC ldr r0, [r6, 0x4] ands r0, r5 cmp r0, 0 bne _080247FC ldr r4, _0802479C @ =gActiveBattler movs r0, 0x3 strb r0, [r4] movs r0, 0x3 movs r1, 0x6 movs r2, 0x6 bl sub_8019C10 lsls r0, 24 cmp r0, 0 beq _080247A8 ldr r2, _080247A0 @ =gAbsentBattlerFlags ldrb r0, [r4] lsls r0, 2 adds r0, r6 ldr r0, [r0] ldrb r1, [r2] orrs r0, r1 strb r0, [r2] ldr r2, _080247A4 @ =gUnknown_2023DD0 ldrb r0, [r4] lsls r0, 2 adds r0, r6 ldr r1, [r0] lsls r1, 28 ldr r0, [r2] bics r0, r1 str r0, [r2] movs r0, 0 bl EmitCmd42 ldrb r0, [r4] bl MarkBufferBankForExecution b _080247FC .align 2, 0 _08024798: .4byte gBitTable _0802479C: .4byte gActiveBattler _080247A0: .4byte gAbsentBattlerFlags _080247A4: .4byte gUnknown_2023DD0 _080247A8: ldr r6, _080247DC @ =gUnknown_2023ECC ldrb r0, [r4] lsls r1, r0, 2 adds r1, r0 lsls r1, 2 adds r1, r6 ldrb r0, [r1] lsls r0, 25 cmp r0, 0 blt _080247E4 ldr r0, _080247E0 @ =gBattleStruct ldr r0, [r0] adds r0, 0x5D ldrb r0, [r0] bl sub_8024398 ldrb r1, [r4] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r6 ldrb r1, [r0] movs r2, 0x40 orrs r1, r2 strb r1, [r0] b _080247FC .align 2, 0 _080247DC: .4byte gUnknown_2023ECC _080247E0: .4byte gBattleStruct _080247E4: movs r0, 0x2 mov r1, r9 ands r1, r0 cmp r1, 0 bne _080247FC movs r0, 0 movs r1, 0x2 bl EmitLinkStandbyMsg ldrb r0, [r4] bl MarkBufferBankForExecution _080247FC: ldr r1, _0802482C @ =gUnknown_2023ECC ldrb r0, [r1] lsls r0, 25 cmp r0, 0 blt _08024850 adds r0, r1, 0 adds r0, 0x28 ldrb r0, [r0] lsls r0, 25 cmp r0, 0 blt _08024850 cmp r5, 0 beq _08024850 ldr r0, _08024830 @ =gAbsentBattlerFlags ldrb r1, [r0] ldr r0, _08024834 @ =gBitTable ldr r0, [r0] ands r1, r0 cmp r1, 0 beq _0802483C ldr r1, _08024838 @ =gActiveBattler movs r0, 0x2 strb r0, [r1] b _08024840 .align 2, 0 _0802482C: .4byte gUnknown_2023ECC _08024830: .4byte gAbsentBattlerFlags _08024834: .4byte gBitTable _08024838: .4byte gActiveBattler _0802483C: ldr r0, _08024880 @ =gActiveBattler strb r1, [r0] _08024840: movs r0, 0 movs r1, 0x2 bl EmitLinkStandbyMsg ldr r0, _08024880 @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution _08024850: ldr r1, _08024884 @ =gUnknown_2023ECC ldrb r0, [r1, 0x14] lsls r0, 25 cmp r0, 0 blt _080248A6 adds r0, r1, 0 adds r0, 0x3C ldrb r0, [r0] lsls r0, 25 cmp r0, 0 blt _080248A6 cmp r5, 0 beq _080248A6 ldr r0, _08024888 @ =gAbsentBattlerFlags ldrb r0, [r0] ldr r1, _0802488C @ =gBitTable ldr r1, [r1, 0x4] ands r0, r1 cmp r0, 0 beq _08024890 ldr r1, _08024880 @ =gActiveBattler movs r0, 0x3 b _08024894 .align 2, 0 _08024880: .4byte gActiveBattler _08024884: .4byte gUnknown_2023ECC _08024888: .4byte gAbsentBattlerFlags _0802488C: .4byte gBitTable _08024890: ldr r1, _080248B0 @ =gActiveBattler movs r0, 0x1 _08024894: strb r0, [r1] movs r0, 0 movs r1, 0x2 bl EmitLinkStandbyMsg ldr r0, _080248B0 @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution _080248A6: ldr r1, _080248B4 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x6 str r0, [r1] b _08024C2E .align 2, 0 _080248B0: .4byte gActiveBattler _080248B4: .4byte gUnknown_2023D74 _080248B8: cmp r0, 0x6 beq _080248BE b _08024AAC _080248BE: ldr r0, _08024934 @ =gBattleTypeFlags ldr r1, [r0] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _080248CC b _08024A48 _080248CC: movs r0, 0x1 ands r1, r0 cmp r1, 0 bne _080248D6 b _08024A48 _080248D6: ldr r7, _08024938 @ =gUnknown_2023DD0 ldr r0, [r7] lsrs r5, r0, 28 ldr r4, _0802493C @ =gBitTable ldr r0, [r4, 0x8] ands r0, r5 cmp r0, 0 beq _0802497E ldr r0, [r4] ands r0, r5 cmp r0, 0 beq _0802497E ldr r6, _08024940 @ =gActiveBattler movs r0, 0x2 strb r0, [r6] ldr r0, _08024944 @ =gUnknown_20233C4 ldrb r1, [r0, 0x1] movs r0, 0x2 movs r2, 0x6 bl sub_8019C10 lsls r0, 24 cmp r0, 0 beq _0802494C ldr r2, _08024948 @ =gAbsentBattlerFlags ldrb r0, [r6] lsls r0, 2 adds r0, r4 ldr r0, [r0] ldrb r1, [r2] orrs r0, r1 strb r0, [r2] ldrb r0, [r6] lsls r0, 2 adds r0, r4 ldr r1, [r0] lsls r1, 28 ldr r0, [r7] bics r0, r1 str r0, [r7] movs r0, 0 bl EmitCmd42 ldrb r0, [r6] bl MarkBufferBankForExecution b _0802497E .align 2, 0 _08024934: .4byte gBattleTypeFlags _08024938: .4byte gUnknown_2023DD0 _0802493C: .4byte gBitTable _08024940: .4byte gActiveBattler _08024944: .4byte gUnknown_20233C4 _08024948: .4byte gAbsentBattlerFlags _0802494C: ldr r4, _080249DC @ =gUnknown_2023ECC ldrb r0, [r6] lsls r1, r0, 2 adds r1, r0 lsls r1, 2 adds r1, r4 ldrb r0, [r1] lsls r0, 25 cmp r0, 0 blt _0802497E ldr r0, _080249E0 @ =gBattleStruct ldr r0, [r0] adds r0, 0x5C ldrb r0, [r0] bl sub_8024398 ldrb r1, [r6] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r4 ldrb r1, [r0] movs r2, 0x40 orrs r1, r2 strb r1, [r0] _0802497E: ldr r4, _080249E4 @ =gBitTable ldr r0, [r4, 0xC] ands r0, r5 cmp r0, 0 beq _08024A2E ldr r0, [r4, 0x4] ands r5, r0 cmp r5, 0 beq _08024A2E ldr r5, _080249E8 @ =gActiveBattler movs r0, 0x3 strb r0, [r5] ldr r0, _080249EC @ =gUnknown_20233C4 ldr r2, _080249F0 @ =0x00000201 adds r0, r2 ldrb r1, [r0] movs r0, 0x3 movs r2, 0x6 bl sub_8019C10 lsls r0, 24 cmp r0, 0 beq _080249FC ldr r2, _080249F4 @ =gAbsentBattlerFlags ldrb r0, [r5] lsls r0, 2 adds r0, r4 ldr r0, [r0] ldrb r1, [r2] orrs r0, r1 strb r0, [r2] ldr r2, _080249F8 @ =gUnknown_2023DD0 ldrb r0, [r5] lsls r0, 2 adds r0, r4 ldr r1, [r0] lsls r1, 28 ldr r0, [r2] bics r0, r1 str r0, [r2] movs r0, 0 bl EmitCmd42 ldrb r0, [r5] bl MarkBufferBankForExecution b _08024A2E .align 2, 0 _080249DC: .4byte gUnknown_2023ECC _080249E0: .4byte gBattleStruct _080249E4: .4byte gBitTable _080249E8: .4byte gActiveBattler _080249EC: .4byte gUnknown_20233C4 _080249F0: .4byte 0x00000201 _080249F4: .4byte gAbsentBattlerFlags _080249F8: .4byte gUnknown_2023DD0 _080249FC: ldr r4, _08024A3C @ =gUnknown_2023ECC ldrb r0, [r5] lsls r1, r0, 2 adds r1, r0 lsls r1, 2 adds r1, r4 ldrb r0, [r1] lsls r0, 25 cmp r0, 0 blt _08024A2E ldr r0, _08024A40 @ =gBattleStruct ldr r0, [r0] adds r0, 0x5D ldrb r0, [r0] bl sub_8024398 ldrb r1, [r5] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r4 ldrb r1, [r0] movs r2, 0x40 orrs r1, r2 strb r1, [r0] _08024A2E: ldr r1, _08024A44 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x6 str r0, [r1] mov r12, r1 b _08024A4C .align 2, 0 _08024A3C: .4byte gUnknown_2023ECC _08024A40: .4byte gBattleStruct _08024A44: .4byte gUnknown_2023D74 _08024A48: adds r0, r2, 0x6 str r0, [r6] _08024A4C: ldr r0, _08024A9C @ =gUnknown_2023DD0 ldr r0, [r0] lsrs r5, r0, 28 ldr r1, _08024AA0 @ =gUnknown_2023D6D movs r0, 0 strb r0, [r1] ldr r4, _08024AA4 @ =gBitTable ldr r2, [r4] ands r2, r5 ldr r6, _08024AA8 @ =gBattlersCount cmp r2, 0 bne _08024A88 adds r7, r6, 0 ldrb r0, [r6] cmp r2, r0 bcs _08024A88 adds r3, r1, 0 _08024A6E: ldrb r0, [r3] adds r0, 0x1 strb r0, [r3] ldrb r2, [r3] lsls r0, r2, 2 adds r0, r4 ldr r0, [r0] ands r0, r5 cmp r0, 0 bne _08024A88 ldrb r0, [r7] cmp r2, r0 bcc _08024A6E _08024A88: ldrb r0, [r1] ldrb r6, [r6] cmp r0, r6 beq _08024A92 b _08024C2E _08024A92: mov r1, r8 mov r2, r12 str r1, [r2] b _08024C2E .align 2, 0 _08024A9C: .4byte gUnknown_2023DD0 _08024AA0: .4byte gUnknown_2023D6D _08024AA4: .4byte gBitTable _08024AA8: .4byte gBattlersCount _08024AAC: movs r0, 0x80 ands r0, r1 movs r5, 0x1 cmp r0, 0 beq _08024AB8 movs r5, 0 _08024AB8: movs r0, 0x7F ands r0, r1 bl sub_8016E24 lsls r0, 24 lsrs r7, r0, 24 ldr r1, _08024AE0 @ =gUnknown_2023ECC lsls r0, r7, 2 adds r0, r7 lsls r0, 2 adds r0, r1 ldrb r0, [r0] lsls r0, 25 cmp r0, 0 bge _08024AE4 ldr r0, [r6] adds r0, 0x6 str r0, [r6] b _08024C2E .align 2, 0 _08024AE0: .4byte gUnknown_2023ECC _08024AE4: adds r0, r7, 0 movs r1, 0x6 movs r2, 0x6 bl sub_8019C10 lsls r0, 24 cmp r0, 0 beq _08024B34 ldr r2, _08024B24 @ =gActiveBattler strb r7, [r2] ldr r3, _08024B28 @ =gAbsentBattlerFlags ldr r4, _08024B2C @ =gBitTable ldrb r0, [r2] lsls r0, 2 adds r0, r4 ldr r0, [r0] ldrb r1, [r3] orrs r0, r1 strb r0, [r3] ldr r3, _08024B30 @ =gUnknown_2023DD0 ldrb r0, [r2] lsls r0, 2 adds r0, r4 ldr r1, [r0] lsls r1, 28 ldr r0, [r3] bics r0, r1 str r0, [r3] mov r0, r8 str r0, [r6] b _08024C2E .align 2, 0 _08024B24: .4byte gActiveBattler _08024B28: .4byte gAbsentBattlerFlags _08024B2C: .4byte gBitTable _08024B30: .4byte gUnknown_2023DD0 _08024B34: ldr r4, _08024BD8 @ =gActiveBattler strb r7, [r4] ldrb r0, [r4] ldr r3, _08024BDC @ =gBattleStruct ldr r1, [r3] adds r1, r0, r1 adds r1, 0x58 ldr r2, _08024BE0 @ =gBattlerPartyIndexes lsls r0, 1 adds r0, r2 ldrh r0, [r0] strb r0, [r1] ldrb r1, [r4] movs r0, 0x2 eors r0, r1 ldr r3, [r3] adds r0, r3 adds r0, 0x5C ldrb r2, [r0] ldrb r1, [r4] lsls r0, r1, 1 adds r0, r1 adds r0, 0x60 adds r3, r0 str r3, [sp] movs r0, 0 adds r1, r5, 0 movs r3, 0 bl EmitChoosePokemon ldrb r0, [r4] bl MarkBufferBankForExecution ldr r0, [r6] adds r0, 0x6 str r0, [r6] ldrb r0, [r4] bl GetBattlerPosition lsls r0, 24 cmp r0, 0 bne _08024B94 ldr r1, _08024BE4 @ =gBattleResults ldrb r0, [r1, 0x2] cmp r0, 0xFE bhi _08024B94 adds r0, 0x1 strb r0, [r1, 0x2] _08024B94: ldr r0, _08024BE8 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x40 ands r0, r1 cmp r0, 0 beq _08024BF0 ldr r1, _08024BD8 @ =gActiveBattler movs r0, 0 strb r0, [r1] ldr r0, _08024BEC @ =gBattlersCount ldrb r0, [r0] cmp r0, 0 beq _08024C2E adds r4, r1, 0 _08024BB0: ldrb r0, [r4] cmp r0, r7 beq _08024BC4 movs r0, 0 movs r1, 0x2 bl EmitLinkStandbyMsg ldrb r0, [r4] bl MarkBufferBankForExecution _08024BC4: ldrb r0, [r4] adds r0, 0x1 strb r0, [r4] ldr r1, _08024BEC @ =gBattlersCount lsls r0, 24 lsrs r0, 24 ldrb r1, [r1] cmp r0, r1 bcc _08024BB0 b _08024C2E .align 2, 0 _08024BD8: .4byte gActiveBattler _08024BDC: .4byte gBattleStruct _08024BE0: .4byte gBattlerPartyIndexes _08024BE4: .4byte gBattleResults _08024BE8: .4byte gBattleTypeFlags _08024BEC: .4byte gBattlersCount _08024BF0: adds r0, r7, 0 bl GetBattlerPosition movs r1, 0x1 eors r0, r1 lsls r0, 24 lsrs r0, 24 bl GetBattlerAtPosition ldr r4, _08024C3C @ =gActiveBattler strb r0, [r4] ldr r0, _08024C40 @ =gAbsentBattlerFlags ldrb r1, [r0] ldr r2, _08024C44 @ =gBitTable ldrb r3, [r4] lsls r0, r3, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 beq _08024C20 movs r0, 0x2 eors r3, r0 strb r3, [r4] _08024C20: movs r0, 0 movs r1, 0x2 bl EmitLinkStandbyMsg ldrb r0, [r4] bl MarkBufferBankForExecution _08024C2E: add sp, 0x4 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08024C3C: .4byte gActiveBattler _08024C40: .4byte gAbsentBattlerFlags _08024C44: .4byte gBitTable thumb_func_end sub_80243EC thumb_func_start sub_8024C48 sub_8024C48: @ 8024C48 push {r4-r7,lr} ldr r0, _08024C74 @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 beq _08024C54 b _08024E16 _08024C54: ldr r4, _08024C78 @ =gUnknown_2023D74 ldr r0, [r4] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r7, _08024C7C @ =gActiveBattler strb r0, [r7] ldr r0, [r4] ldrb r0, [r0, 0x2] cmp r0, 0x1 beq _08024CC4 cmp r0, 0x1 bgt _08024C80 cmp r0, 0 beq _08024C86 b _08024E0E .align 2, 0 _08024C74: .4byte gUnknown_2023BC8 _08024C78: .4byte gUnknown_2023D74 _08024C7C: .4byte gActiveBattler _08024C80: cmp r0, 0x2 beq _08024CE0 b _08024E0E _08024C86: movs r3, 0 ldr r0, _08024CB8 @ =gBattlersCount ldrb r1, [r0] cmp r3, r1 blt _08024C92 b _08024E0E _08024C92: ldr r6, _08024CBC @ =gBattleStruct ldr r2, _08024CC0 @ =gUnknown_20233C4 movs r5, 0x80 lsls r5, 2 adds r4, r0, 0 _08024C9C: ldrb r0, [r2] cmp r0, 0x22 bne _08024CAC ldr r0, [r6] adds r0, r3, r0 adds r0, 0x5C ldrb r1, [r2, 0x1] strb r1, [r0] _08024CAC: adds r2, r5 adds r3, 0x1 ldrb r0, [r4] cmp r3, r0 blt _08024C9C b _08024E0E .align 2, 0 _08024CB8: .4byte gBattlersCount _08024CBC: .4byte gBattleStruct _08024CC0: .4byte gUnknown_20233C4 _08024CC4: ldr r0, _08024CDC @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x40 ands r0, r1 cmp r0, 0 beq _08024CD2 b _08024E0E _08024CD2: ldrb r0, [r7] bl sub_8013F6C b _08024E0E .align 2, 0 _08024CDC: .4byte gBattleTypeFlags _08024CE0: ldr r1, _08024DAC @ =gUnknown_2023E82 ldr r4, _08024DB0 @ =gUnknown_20233C4 ldrb r0, [r7] lsls r0, 9 adds r2, r4, 0x1 adds r0, r2 ldrb r0, [r0] strb r0, [r1] ldrb r0, [r7] ldr r6, _08024DB4 @ =gBattleStruct ldr r1, [r6] adds r1, r0, r1 adds r1, 0x5C lsls r0, 9 adds r0, r2 ldrb r0, [r0] strb r0, [r1] ldr r0, _08024DB8 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x40 ands r0, r1 cmp r0, 0 beq _08024DBC ldrb r0, [r7] ldr r2, [r6] lsls r1, r0, 1 adds r1, r0 adds r1, r2 adds r1, 0x60 ldrb r2, [r1] movs r0, 0xF ands r0, r2 strb r0, [r1] ldrb r0, [r7] ldr r2, [r6] lsls r1, r0, 1 adds r1, r0 adds r1, r2 adds r1, 0x60 lsls r0, 9 adds r5, r4, 0x2 adds r0, r5 ldrb r2, [r0] movs r3, 0xF0 adds r0, r3, 0 ands r0, r2 ldrb r2, [r1] orrs r0, r2 strb r0, [r1] ldrb r1, [r7] ldr r2, [r6] lsls r0, r1, 1 adds r0, r1 adds r0, r2 adds r0, 0x61 lsls r1, 9 adds r4, 0x3 mov r12, r4 add r1, r12 ldrb r1, [r1] strb r1, [r0] ldrb r0, [r7] movs r4, 0x2 eors r0, r4 ldr r2, [r6] lsls r1, r0, 1 adds r1, r0 adds r1, r2 adds r1, 0x60 ldrb r2, [r1] adds r0, r3, 0 ands r0, r2 strb r0, [r1] ldrb r0, [r7] eors r0, r4 ldr r2, [r6] lsls r1, r0, 1 adds r1, r0 adds r1, r2 adds r1, 0x60 ldrb r0, [r7] lsls r0, 9 adds r0, r5 ldrb r0, [r0] ands r3, r0 lsrs r3, 4 ldrb r0, [r1] orrs r3, r0 strb r3, [r1] ldrb r0, [r7] eors r4, r0 ldr r0, [r6] lsls r1, r4, 1 adds r1, r4 adds r1, r0 adds r1, 0x62 ldrb r0, [r7] lsls r0, 9 add r0, r12 ldrb r0, [r0] strb r0, [r1] b _08024DC2 .align 2, 0 _08024DAC: .4byte gUnknown_2023E82 _08024DB0: .4byte gUnknown_20233C4 _08024DB4: .4byte gBattleStruct _08024DB8: .4byte gBattleTypeFlags _08024DBC: ldrb r0, [r7] bl sub_8013F6C _08024DC2: ldr r1, _08024E1C @ =gBattleTextBuff1 movs r5, 0xFD strb r5, [r1] movs r0, 0x6 strb r0, [r1, 0x1] ldr r4, _08024E20 @ =gBattleMons ldr r3, _08024E24 @ =sBattler_AI ldrb r0, [r3] movs r2, 0x58 muls r0, r2 adds r0, r4 ldrh r0, [r0] strb r0, [r1, 0x2] ldrb r0, [r3] muls r0, r2 adds r0, r4 ldrh r0, [r0] lsrs r0, 8 strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldr r2, _08024E28 @ =gBattleTextBuff2 strb r5, [r2] movs r0, 0x7 strb r0, [r2, 0x1] ldr r3, _08024E2C @ =gActiveBattler ldrb r0, [r3] strb r0, [r2, 0x2] ldr r1, _08024E30 @ =gUnknown_20233C4 ldrb r0, [r3] lsls r0, 9 adds r1, 0x1 adds r0, r1 ldrb r0, [r0] strb r0, [r2, 0x3] movs r0, 0x1 negs r0, r0 strb r0, [r2, 0x4] _08024E0E: ldr r1, _08024E34 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x3 str r0, [r1] _08024E16: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08024E1C: .4byte gBattleTextBuff1 _08024E20: .4byte gBattleMons _08024E24: .4byte sBattler_AI _08024E28: .4byte gBattleTextBuff2 _08024E2C: .4byte gActiveBattler _08024E30: .4byte gUnknown_20233C4 _08024E34: .4byte gUnknown_2023D74 thumb_func_end sub_8024C48 thumb_func_start sub_8024E38 sub_8024E38: @ 8024E38 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x4 ldr r6, _08024F40 @ =gUnknown_2023D74 ldr r0, [r6] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r4, _08024F44 @ =gActiveBattler strb r0, [r4] ldrb r0, [r4] bl sub_80174B8 ldr r2, _08024F48 @ =gUnknown_2023DD0 ldr r1, _08024F4C @ =gBitTable ldrb r0, [r4] lsls r0, 2 adds r0, r1 ldr r1, [r0] lsls r1, 28 ldr r0, [r2] bics r0, r1 str r0, [r2] ldr r2, _08024F50 @ =gUnknown_2023ECC ldrb r0, [r4] lsls r1, r0, 2 adds r1, r0 lsls r1, 2 adds r1, r2 ldrb r2, [r1] movs r0, 0x41 negs r0, r0 ands r0, r2 strb r0, [r1] ldrb r0, [r4] bl GetBattlerSide ldr r5, _08024F54 @ =gSideAffecting lsls r0, 24 lsrs r0, 23 adds r0, r5 ldrh r1, [r0] movs r0, 0x80 lsls r0, 2 mov r8, r0 ands r0, r1 cmp r0, 0 bne _08024F88 ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 lsrs r0, 23 adds r0, r5 ldrh r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _08024F88 ldr r1, _08024F58 @ =gBattleMons mov r9, r1 ldrb r2, [r4] movs r7, 0x58 adds r0, r2, 0 muls r0, r7 adds r1, r0, r1 adds r0, r1, 0 adds r0, 0x21 ldrb r0, [r0] cmp r0, 0x2 beq _08024F88 adds r0, r1, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0x2 beq _08024F88 adds r0, r1, 0 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x1A beq _08024F88 adds r0, r2, 0 bl GetBattlerSide lsls r0, 24 lsrs r0, 23 adds r0, r5 ldrh r2, [r0] mov r1, r8 orrs r1, r2 strh r1, [r0] ldrb r0, [r4] bl GetBattlerSide ldr r2, _08024F5C @ =gSideTimers lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r2 ldrb r0, [r1, 0xA] movs r1, 0x5 subs r1, r0 lsls r1, 25 lsrs r1, 24 ldr r5, _08024F60 @ =gBattleMoveDamage ldrb r0, [r4] muls r0, r7 add r0, r9 ldrh r0, [r0, 0x2C] bl __divsi3 str r0, [r5] cmp r0, 0 bne _08024F28 movs r0, 0x1 str r0, [r5] _08024F28: ldr r0, _08024F64 @ =gBattleScripting ldrb r1, [r4] strb r1, [r0, 0x17] bl BattleScriptPushCursor ldr r0, [r6] ldrb r0, [r0, 0x1] cmp r0, 0 bne _08024F6C ldr r0, _08024F68 @ =gUnknown_81D8CBE str r0, [r6] b _080250C6 .align 2, 0 _08024F40: .4byte gUnknown_2023D74 _08024F44: .4byte gActiveBattler _08024F48: .4byte gUnknown_2023DD0 _08024F4C: .4byte gBitTable _08024F50: .4byte gUnknown_2023ECC _08024F54: .4byte gSideAffecting _08024F58: .4byte gBattleMons _08024F5C: .4byte gSideTimers _08024F60: .4byte gBattleMoveDamage _08024F64: .4byte gBattleScripting _08024F68: .4byte gUnknown_81D8CBE _08024F6C: cmp r0, 0x1 bne _08024F7C ldr r0, _08024F78 @ =gUnknown_81D8C87 str r0, [r6] b _080250C6 .align 2, 0 _08024F78: .4byte gUnknown_81D8C87 _08024F7C: ldr r0, _08024F84 @ =gUnknown_81D8CF5 str r0, [r6] b _080250C6 .align 2, 0 _08024F84: .4byte gUnknown_81D8CF5 _08024F88: ldr r1, _08025064 @ =gBattleMons ldr r5, _08025068 @ =gActiveBattler ldrb r2, [r5] movs r0, 0x58 muls r0, r2 adds r0, r1 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x36 bne _08024FAE ldr r1, _0802506C @ =gDisableStructs lsls r0, r2, 3 subs r0, r2 lsls r0, 2 adds r0, r1 ldrb r1, [r0, 0x18] movs r2, 0x1 orrs r1, r2 strb r1, [r0, 0x18] _08024FAE: ldrb r1, [r5] movs r0, 0 str r0, [sp] movs r2, 0 movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 beq _08024FC4 b _080250C6 _08024FC4: ldrb r1, [r5] movs r0, 0 movs r2, 0 bl sub_801BC68 lsls r0, 24 cmp r0, 0 bne _080250C6 ldrb r0, [r5] bl GetBattlerSide ldr r1, _08025070 @ =gSideAffecting lsls r0, 24 lsrs r0, 23 adds r0, r1 ldrh r2, [r0] ldr r1, _08025074 @ =0x0000fdff ands r1, r2 strh r1, [r0] movs r4, 0 ldr r0, _08025078 @ =gBattlersCount ldrb r3, [r0] cmp r4, r3 bge _08025012 ldr r6, _0802507C @ =gUnknown_2023BDE ldr r3, _08025080 @ =gUnknown_2023BDA movs r2, 0xC adds r1, r0, 0 _08024FFC: adds r0, r4, r6 ldrb r0, [r0] ldrb r7, [r5] cmp r0, r7 bne _0802500A adds r0, r4, r3 strb r2, [r0] _0802500A: adds r4, 0x1 ldrb r0, [r1] cmp r4, r0 blt _08024FFC _08025012: movs r4, 0 ldr r0, _08025078 @ =gBattlersCount ldrb r0, [r0] cmp r4, r0 bge _08025046 ldr r6, _08025084 @ =gBattleStruct ldr r5, _08025064 @ =gBattleMons _08025020: lsls r0, r4, 24 lsrs r0, 24 bl GetBattlerSide lsls r0, 24 lsrs r0, 23 adds r0, 0xA8 ldr r1, [r6] adds r1, r0 movs r0, 0x58 muls r0, r4 adds r0, r5 ldrh r0, [r0, 0x28] strh r0, [r1] adds r4, 0x1 ldr r0, _08025078 @ =gBattlersCount ldrb r0, [r0] cmp r4, r0 blt _08025020 _08025046: ldr r0, _08025088 @ =gUnknown_2023D74 ldr r1, [r0] ldrb r1, [r1, 0x1] adds r5, r0, 0 cmp r1, 0x5 bne _080250C0 ldr r0, _0802508C @ =gUnknown_2023DD0 ldr r0, [r0] lsrs r4, r0, 28 ldr r1, _08025090 @ =gUnknown_2023D6D ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] ldr r2, _08025094 @ =gBitTable b _080250A6 .align 2, 0 _08025064: .4byte gBattleMons _08025068: .4byte gActiveBattler _0802506C: .4byte gDisableStructs _08025070: .4byte gSideAffecting _08025074: .4byte 0x0000fdff _08025078: .4byte gBattlersCount _0802507C: .4byte gUnknown_2023BDE _08025080: .4byte gUnknown_2023BDA _08025084: .4byte gBattleStruct _08025088: .4byte gUnknown_2023D74 _0802508C: .4byte gUnknown_2023DD0 _08025090: .4byte gUnknown_2023D6D _08025094: .4byte gBitTable _08025098: ldr r0, _080250D4 @ =gBattlersCount ldrb r3, [r1] ldrb r0, [r0] cmp r3, r0 bcs _080250C0 adds r0, r3, 0x1 strb r0, [r1] _080250A6: ldrb r0, [r1] lsls r0, 2 adds r0, r2 ldr r3, [r0] adds r0, r4, 0 ands r0, r3 cmp r0, 0 beq _08025098 ldr r0, _080250D8 @ =gAbsentBattlerFlags ldrb r0, [r0] ands r0, r3 cmp r0, 0 bne _08025098 _080250C0: ldr r0, [r5] adds r0, 0x2 str r0, [r5] _080250C6: add sp, 0x4 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080250D4: .4byte gBattlersCount _080250D8: .4byte gAbsentBattlerFlags thumb_func_end sub_8024E38 thumb_func_start atk53_trainer_slide atk53_trainer_slide: @ 80250DC push {lr} ldr r0, _080250EC @ =gUnknown_2023D74 ldr r0, [r0] ldrb r0, [r0, 0x1] cmp r0, 0 bne _080250F0 movs r0, 0 b _080250F2 .align 2, 0 _080250EC: .4byte gUnknown_2023D74 _080250F0: movs r0, 0x1 _080250F2: bl GetBattlerAtPosition ldr r1, _08025114 @ =gActiveBattler strb r0, [r1] movs r0, 0 bl EmitTrainerSlide ldr r0, _08025114 @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution ldr r1, _08025118 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x2 str r0, [r1] pop {r0} bx r0 .align 2, 0 _08025114: .4byte gActiveBattler _08025118: .4byte gUnknown_2023D74 thumb_func_end atk53_trainer_slide thumb_func_start atk54_playse atk54_playse: @ 802511C push {r4,r5,lr} ldr r5, _0802514C @ =gActiveBattler ldr r0, _08025150 @ =sBattler_AI ldrb r0, [r0] strb r0, [r5] ldr r4, _08025154 @ =gUnknown_2023D74 ldr r0, [r4] ldrb r1, [r0, 0x1] ldrb r0, [r0, 0x2] lsls r0, 8 orrs r1, r0 movs r0, 0 bl EmitPlaySE ldrb r0, [r5] bl MarkBufferBankForExecution ldr r0, [r4] adds r0, 0x3 str r0, [r4] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0802514C: .4byte gActiveBattler _08025150: .4byte sBattler_AI _08025154: .4byte gUnknown_2023D74 thumb_func_end atk54_playse thumb_func_start atk55_play_sound atk55_play_sound: @ 8025158 push {r4,r5,lr} ldr r5, _08025188 @ =gActiveBattler ldr r0, _0802518C @ =sBattler_AI ldrb r0, [r0] strb r0, [r5] ldr r4, _08025190 @ =gUnknown_2023D74 ldr r0, [r4] ldrb r1, [r0, 0x1] ldrb r0, [r0, 0x2] lsls r0, 8 orrs r1, r0 movs r0, 0 bl Emitcmd44 ldrb r0, [r5] bl MarkBufferBankForExecution ldr r0, [r4] adds r0, 0x3 str r0, [r4] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08025188: .4byte gActiveBattler _0802518C: .4byte sBattler_AI _08025190: .4byte gUnknown_2023D74 thumb_func_end atk55_play_sound thumb_func_start atk56_playfaintcry atk56_playfaintcry: @ 8025194 push {r4,r5,lr} ldr r5, _080251BC @ =gUnknown_2023D74 ldr r0, [r5] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r4, _080251C0 @ =gActiveBattler strb r0, [r4] movs r0, 0 bl EmitFaintingCry ldrb r0, [r4] bl MarkBufferBankForExecution ldr r0, [r5] adds r0, 0x2 str r0, [r5] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080251BC: .4byte gUnknown_2023D74 _080251C0: .4byte gActiveBattler thumb_func_end atk56_playfaintcry thumb_func_start atk57 atk57: @ 80251C4 push {r4,lr} movs r0, 0 bl GetBattlerAtPosition ldr r4, _080251F0 @ =gActiveBattler strb r0, [r4] ldr r0, _080251F4 @ =gBattleOutcome ldrb r1, [r0] movs r0, 0 bl EmitCmd55 ldrb r0, [r4] bl MarkBufferBankForExecution ldr r1, _080251F8 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _080251F0: .4byte gActiveBattler _080251F4: .4byte gBattleOutcome _080251F8: .4byte gUnknown_2023D74 thumb_func_end atk57 thumb_func_start atk58_returntoball atk58_returntoball: @ 80251FC push {r4,r5,lr} ldr r5, _08025228 @ =gUnknown_2023D74 ldr r0, [r5] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r4, _0802522C @ =gActiveBattler strb r0, [r4] movs r0, 0 movs r1, 0x1 bl EmitReturnMonToBall ldrb r0, [r4] bl MarkBufferBankForExecution ldr r0, [r5] adds r0, 0x2 str r0, [r5] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08025228: .4byte gUnknown_2023D74 _0802522C: .4byte gActiveBattler thumb_func_end atk58_returntoball thumb_func_start atk59_handlelearnnewmove atk59_handlelearnnewmove: @ 8025230 push {r4-r7,lr} ldr r0, _080252A4 @ =gUnknown_2023D74 ldr r2, [r0] ldrb r6, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r6, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r6, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r6, r0 ldrb r4, [r2, 0x5] ldrb r0, [r2, 0x6] lsls r0, 8 orrs r4, r0 ldrb r0, [r2, 0x7] lsls r0, 16 orrs r4, r0 ldrb r0, [r2, 0x8] lsls r0, 24 orrs r4, r0 ldr r0, _080252A8 @ =gBattleStruct ldr r0, [r0] ldrb r1, [r0, 0x10] movs r0, 0x64 muls r0, r1 ldr r1, _080252AC @ =gPlayerParty adds r0, r1 ldrb r1, [r2, 0x9] bl MonTryLearningNewMove lsls r0, 16 lsrs r5, r0, 16 ldr r0, _080252B0 @ =0x0000fffe cmp r5, r0 bne _0802529A adds r7, r5, 0 _0802527E: ldr r0, _080252A8 @ =gBattleStruct ldr r0, [r0] ldrb r1, [r0, 0x10] movs r0, 0x64 muls r0, r1 ldr r1, _080252AC @ =gPlayerParty adds r0, r1 movs r1, 0 bl MonTryLearningNewMove lsls r0, 16 lsrs r5, r0, 16 cmp r5, r7 beq _0802527E _0802529A: cmp r5, 0 bne _080252B4 ldr r0, _080252A4 @ =gUnknown_2023D74 str r4, [r0] b _0802535C .align 2, 0 _080252A4: .4byte gUnknown_2023D74 _080252A8: .4byte gBattleStruct _080252AC: .4byte gPlayerParty _080252B0: .4byte 0x0000fffe _080252B4: ldr r0, _080252C4 @ =0x0000ffff cmp r5, r0 bne _080252CC ldr r1, _080252C8 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0xA str r0, [r1] b _0802535C .align 2, 0 _080252C4: .4byte 0x0000ffff _080252C8: .4byte gUnknown_2023D74 _080252CC: movs r0, 0 bl GetBattlerAtPosition ldr r1, _08025364 @ =gActiveBattler strb r0, [r1] ldr r2, _08025368 @ =gBattlerPartyIndexes ldrb r3, [r1] lsls r0, r3, 1 adds r0, r2 ldr r1, _0802536C @ =gBattleStruct ldr r1, [r1] ldrh r0, [r0] ldrb r1, [r1, 0x10] cmp r0, r1 bne _0802530C ldr r4, _08025370 @ =gBattleMons movs r0, 0x58 adds r2, r3, 0 muls r2, r0 adds r0, r4, 0 adds r0, 0x50 adds r0, r2, r0 ldr r0, [r0] movs r1, 0x80 lsls r1, 14 ands r0, r1 cmp r0, 0 bne _0802530C adds r0, r2, r4 adds r1, r5, 0 bl GiveMoveToBattleMon _0802530C: ldr r0, _08025374 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _08025358 movs r0, 0x2 bl GetBattlerAtPosition ldr r1, _08025364 @ =gActiveBattler strb r0, [r1] ldr r2, _08025368 @ =gBattlerPartyIndexes ldrb r3, [r1] lsls r0, r3, 1 adds r0, r2 ldr r1, _0802536C @ =gBattleStruct ldr r1, [r1] ldrh r0, [r0] ldrb r1, [r1, 0x10] cmp r0, r1 bne _08025358 ldr r4, _08025370 @ =gBattleMons movs r0, 0x58 adds r2, r3, 0 muls r2, r0 adds r0, r4, 0 adds r0, 0x50 adds r0, r2, r0 ldr r0, [r0] movs r1, 0x80 lsls r1, 14 ands r0, r1 cmp r0, 0 bne _08025358 adds r0, r2, r4 adds r1, r5, 0 bl GiveMoveToBattleMon _08025358: ldr r0, _08025378 @ =gUnknown_2023D74 str r6, [r0] _0802535C: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08025364: .4byte gActiveBattler _08025368: .4byte gBattlerPartyIndexes _0802536C: .4byte gBattleStruct _08025370: .4byte gBattleMons _08025374: .4byte gBattleTypeFlags _08025378: .4byte gUnknown_2023D74 thumb_func_end atk59_handlelearnnewmove thumb_func_start sub_802537C sub_802537C: @ 802537C push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x4 ldr r0, _080253A0 @ =gActiveBattler movs r1, 0 strb r1, [r0] ldr r0, _080253A4 @ =gBattleScripting ldrb r1, [r0, 0x1F] adds r2, r0, 0 cmp r1, 0x5 bls _08025396 b _080256D0 _08025396: lsls r0, r1, 2 ldr r1, _080253A8 @ =_080253AC adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080253A0: .4byte gActiveBattler _080253A4: .4byte gBattleScripting _080253A8: .4byte _080253AC .align 2, 0 _080253AC: .4byte _080253C4 .4byte _080253FC .4byte _080254A8 .4byte _08025500 .4byte _080256A4 .4byte _080256C4 _080253C4: movs r4, 0 str r4, [sp] movs r0, 0x17 movs r1, 0x8 movs r2, 0x1D movs r3, 0xD bl sub_802DB7C ldr r0, _080253F0 @ =gUnknown_83FE791 movs r1, 0xE bl sub_80D87BC ldr r1, _080253F4 @ =gBattleScripting ldrb r0, [r1, 0x1F] adds r0, 0x1 strb r0, [r1, 0x1F] ldr r0, _080253F8 @ =gUnknown_2023E82 strb r4, [r0, 0x1] bl sub_802DCB8 b _080256D0 .align 2, 0 _080253F0: .4byte gUnknown_83FE791 _080253F4: .4byte gBattleScripting _080253F8: .4byte gUnknown_2023E82 _080253FC: ldr r0, _08025484 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _08025422 ldr r4, _08025488 @ =gUnknown_2023E82 ldrb r0, [r4, 0x1] cmp r0, 0 beq _08025422 movs r0, 0x5 bl PlaySE bl sub_802DCF8 movs r0, 0 strb r0, [r4, 0x1] bl sub_802DCB8 _08025422: ldr r0, _08025484 @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _08025448 ldr r4, _08025488 @ =gUnknown_2023E82 ldrb r0, [r4, 0x1] cmp r0, 0 bne _08025448 movs r0, 0x5 bl PlaySE bl sub_802DCF8 movs r0, 0x1 strb r0, [r4, 0x1] bl sub_802DCB8 _08025448: ldr r0, _08025484 @ =gMain ldrh r1, [r0, 0x2E] movs r5, 0x1 adds r0, r5, 0 ands r0, r1 cmp r0, 0 beq _0802548C movs r0, 0x5 bl PlaySE ldr r0, _08025488 @ =gUnknown_2023E82 ldrb r4, [r0, 0x1] cmp r4, 0 bne _0802549C str r5, [sp] movs r0, 0x17 movs r1, 0x8 movs r2, 0x1D movs r3, 0xD bl sub_802DB7C movs r0, 0x1 negs r0, r0 str r4, [sp] movs r1, 0 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade b _080254D8 .align 2, 0 _08025484: .4byte gMain _08025488: .4byte gUnknown_2023E82 _0802548C: movs r0, 0x2 ands r0, r1 cmp r0, 0 bne _08025496 b _080256D0 _08025496: movs r0, 0x5 bl PlaySE _0802549C: ldr r1, _080254A4 @ =gBattleScripting movs r0, 0x4 strb r0, [r1, 0x1F] b _080256D0 .align 2, 0 _080254A4: .4byte gBattleScripting _080254A8: ldr r0, _080254E4 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _080254B6 b _080256D0 _080254B6: bl FreeAllWindowBuffers ldr r0, _080254E8 @ =gPlayerParty ldr r1, _080254EC @ =gBattleStruct ldr r1, [r1] ldrb r1, [r1, 0x10] ldr r2, _080254F0 @ =gPlayerPartyCount ldrb r2, [r2] subs r2, 0x1 lsls r2, 24 lsrs r2, 24 ldr r3, _080254F4 @ =sub_8077764 ldr r4, _080254F8 @ =gMoveToLearn ldrh r4, [r4] str r4, [sp] bl sub_8134738 _080254D8: ldr r1, _080254FC @ =gBattleScripting ldrb r0, [r1, 0x1F] adds r0, 0x1 strb r0, [r1, 0x1F] b _080256D0 .align 2, 0 _080254E4: .4byte gPaletteFade _080254E8: .4byte gPlayerParty _080254EC: .4byte gBattleStruct _080254F0: .4byte gPlayerPartyCount _080254F4: .4byte sub_8077764 _080254F8: .4byte gMoveToLearn _080254FC: .4byte gBattleScripting _08025500: ldr r0, _0802552C @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0802550E b _080256D0 _0802550E: ldr r0, _08025530 @ =gMain ldr r1, [r0, 0x4] ldr r0, _08025534 @ =sub_8011100 cmp r1, r0 beq _0802551A b _080256D0 _0802551A: bl sub_8138B2C lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x4 bne _0802553C ldr r0, _08025538 @ =gBattleScripting strb r5, [r0, 0x1F] b _080256D0 .align 2, 0 _0802552C: .4byte gPaletteFade _08025530: .4byte gMain _08025534: .4byte sub_8011100 _08025538: .4byte gBattleScripting _0802553C: ldr r6, _08025578 @ =gBattleStruct ldr r0, [r6] ldrb r0, [r0, 0x10] movs r1, 0x64 mov r8, r1 mov r1, r8 muls r1, r0 adds r0, r1, 0 ldr r7, _0802557C @ =gPlayerParty adds r0, r7 adds r1, r5, 0 adds r1, 0xD bl GetMonData lsls r0, 16 lsrs r4, r0, 16 adds r0, r4, 0 bl IsHMMove2 cmp r0, 0 beq _0802558C ldr r0, _08025580 @ =0x0000013f ldr r1, _08025584 @ =gActiveBattler ldrb r1, [r1] bl PrepareStringBattle ldr r1, _08025588 @ =gBattleScripting movs r0, 0x5 strb r0, [r1, 0x1F] b _080256D0 .align 2, 0 _08025578: .4byte gBattleStruct _0802557C: .4byte gPlayerParty _08025580: .4byte 0x0000013f _08025584: .4byte gActiveBattler _08025588: .4byte gBattleScripting _0802558C: ldr r3, _08025680 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] ldr r1, _08025684 @ =gBattleTextBuff2 movs r0, 0xFD strb r0, [r1] movs r0, 0x2 strb r0, [r1, 0x1] strb r4, [r1, 0x2] lsrs r0, r4, 8 strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldr r0, [r6] ldrb r0, [r0, 0x10] mov r1, r8 muls r1, r0 adds r0, r1, 0 adds r0, r7 adds r1, r5, 0 bl RemoveMonPPBonus ldr r0, [r6] ldrb r0, [r0, 0x10] mov r1, r8 muls r1, r0 adds r0, r1, 0 adds r0, r7 ldr r7, _08025688 @ =gMoveToLearn ldrh r1, [r7] adds r2, r5, 0 bl SetMonMoveSlot ldr r0, _0802568C @ =gBattlerPartyIndexes ldr r1, [r6] ldrh r0, [r0] ldrb r1, [r1, 0x10] cmp r0, r1 bne _08025622 ldr r4, _08025690 @ =gBattleMons ldr r0, [r4, 0x50] movs r1, 0x80 lsls r1, 14 ands r0, r1 cmp r0, 0 bne _08025622 ldr r0, _08025694 @ =gDisableStructs ldrb r1, [r0, 0x18] lsrs r1, 4 ldr r2, _08025698 @ =gBitTable lsls r0, r5, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _08025622 adds r0, r4, 0 adds r1, r5, 0 bl RemoveBattleMonPPBonus ldrh r1, [r7] adds r0, r4, 0 adds r2, r5, 0 bl SetBattleMonMoveSlot _08025622: ldr r0, _0802569C @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _080256D0 ldr r2, _0802568C @ =gBattlerPartyIndexes ldr r0, _080256A0 @ =gBattleStruct ldr r1, [r0] ldrh r0, [r2, 0x4] ldrb r1, [r1, 0x10] cmp r0, r1 bne _080256D0 ldr r4, _08025690 @ =gBattleMons movs r1, 0x80 lsls r1, 1 adds r0, r4, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 14 ands r0, r1 cmp r0, 0 bne _080256D0 ldr r0, _08025694 @ =gDisableStructs adds r0, 0x50 ldrb r1, [r0] lsrs r1, 4 ldr r2, _08025698 @ =gBitTable lsls r0, r5, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _080256D0 adds r4, 0xB0 adds r0, r4, 0 adds r1, r5, 0 bl RemoveBattleMonPPBonus ldr r0, _08025688 @ =gMoveToLearn ldrh r1, [r0] adds r0, r4, 0 adds r2, r5, 0 bl SetBattleMonMoveSlot b _080256D0 .align 2, 0 _08025680: .4byte gUnknown_2023D74 _08025684: .4byte gBattleTextBuff2 _08025688: .4byte gMoveToLearn _0802568C: .4byte gBattlerPartyIndexes _08025690: .4byte gBattleMons _08025694: .4byte gDisableStructs _08025698: .4byte gBitTable _0802569C: .4byte gBattleTypeFlags _080256A0: .4byte gBattleStruct _080256A4: movs r0, 0x1 str r0, [sp] movs r0, 0x17 movs r1, 0x8 movs r2, 0x1D movs r3, 0xD bl sub_802DB7C ldr r1, _080256C0 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _080256D0 .align 2, 0 _080256C0: .4byte gUnknown_2023D74 _080256C4: ldr r0, _080256DC @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 bne _080256D0 movs r0, 0x2 strb r0, [r2, 0x1F] _080256D0: add sp, 0x4 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080256DC: .4byte gUnknown_2023BC8 thumb_func_end sub_802537C thumb_func_start sub_80256E0 sub_80256E0: @ 80256E0 push {r4,r5,lr} sub sp, 0x4 ldr r5, _080256F4 @ =gBattleScripting ldrb r4, [r5, 0x1F] cmp r4, 0 beq _080256F8 cmp r4, 0x1 beq _08025728 b _0802580E .align 2, 0 _080256F4: .4byte gBattleScripting _080256F8: str r4, [sp] movs r0, 0x17 movs r1, 0x8 movs r2, 0x1D movs r3, 0xD bl sub_802DB7C ldr r0, _08025720 @ =gUnknown_83FE791 movs r1, 0xE bl sub_80D87BC ldrb r0, [r5, 0x1F] adds r0, 0x1 strb r0, [r5, 0x1F] ldr r0, _08025724 @ =gUnknown_2023E82 strb r4, [r0, 0x1] bl sub_802DCB8 b _0802580E .align 2, 0 _08025720: .4byte gUnknown_83FE791 _08025724: .4byte gUnknown_2023E82 _08025728: ldr r0, _080257AC @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _0802574E ldr r4, _080257B0 @ =gUnknown_2023E82 ldrb r0, [r4, 0x1] cmp r0, 0 beq _0802574E movs r0, 0x5 bl PlaySE bl sub_802DCF8 movs r0, 0 strb r0, [r4, 0x1] bl sub_802DCB8 _0802574E: ldr r0, _080257AC @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _08025774 ldr r4, _080257B0 @ =gUnknown_2023E82 ldrb r0, [r4, 0x1] cmp r0, 0 bne _08025774 movs r0, 0x5 bl PlaySE bl sub_802DCF8 movs r0, 0x1 strb r0, [r4, 0x1] bl sub_802DCB8 _08025774: ldr r0, _080257AC @ =gMain ldrh r1, [r0, 0x2E] movs r4, 0x1 adds r0, r4, 0 ands r0, r1 cmp r0, 0 beq _080257D8 movs r0, 0x5 bl PlaySE ldr r0, _080257B0 @ =gUnknown_2023E82 ldrb r0, [r0, 0x1] cmp r0, 0 beq _080257B8 ldr r3, _080257B4 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _080257C0 .align 2, 0 _080257AC: .4byte gMain _080257B0: .4byte gUnknown_2023E82 _080257B4: .4byte gUnknown_2023D74 _080257B8: ldr r1, _080257D4 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] _080257C0: movs r0, 0x1 str r0, [sp] movs r0, 0x17 movs r1, 0x8 movs r2, 0x1D movs r3, 0xD bl sub_802DB7C b _0802580E .align 2, 0 _080257D4: .4byte gUnknown_2023D74 _080257D8: movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0802580E movs r0, 0x5 bl PlaySE ldr r3, _08025818 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] str r4, [sp] movs r0, 0x17 movs r1, 0x8 movs r2, 0x1D movs r3, 0xD bl sub_802DB7C _0802580E: add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08025818: .4byte gUnknown_2023D74 thumb_func_end sub_80256E0 thumb_func_start sub_802581C sub_802581C: @ 802581C push {r4,lr} ldr r4, _08025888 @ =gUnknown_2023D74 ldr r0, [r4] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r2, _0802588C @ =gActiveBattler strb r0, [r2] ldr r0, _08025890 @ =gMoveResultFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 bne _080258A0 ldr r0, _08025894 @ =gUnknown_2023DD0 ldr r0, [r0] movs r1, 0x80 lsls r1, 1 ands r0, r1 cmp r0, 0 beq _0802586E ldr r1, _08025898 @ =gBattleMons ldrb r2, [r2] movs r0, 0x58 muls r0, r2 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 17 ands r0, r1 cmp r0, 0 beq _0802586E ldr r0, _0802589C @ =gDisableStructs lsls r1, r2, 3 subs r1, r2 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0xA] cmp r0, 0 bne _080258A0 _0802586E: movs r0, 0 bl EmitHitAnimation ldr r0, _0802588C @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution ldr r1, _08025888 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x2 str r0, [r1] b _080258A6 .align 2, 0 _08025888: .4byte gUnknown_2023D74 _0802588C: .4byte gActiveBattler _08025890: .4byte gMoveResultFlags _08025894: .4byte gUnknown_2023DD0 _08025898: .4byte gBattleMons _0802589C: .4byte gDisableStructs _080258A0: ldr r0, [r4] adds r0, 0x2 str r0, [r4] _080258A6: pop {r4} pop {r0} bx r0 thumb_func_end sub_802581C thumb_func_start sub_80258AC sub_80258AC: @ 80258AC push {r4-r7,lr} mov r7, r8 push {r7} movs r6, 0 movs r5, 0 ldr r0, _080258F0 @ =gBattleOutcome ldrb r0, [r0] cmp r0, 0x1 beq _080258C0 b _080259FA _080258C0: ldr r0, _080258F4 @ =gTrainerBattleOpponent_A ldrh r2, [r0] movs r1, 0x80 lsls r1, 3 cmp r2, r1 bne _08025904 ldr r0, _080258F8 @ =gBattleResources ldr r0, [r0] ldr r0, [r0] adds r0, 0x94 ldrb r2, [r0] ldr r0, _080258FC @ =gBattleStruct ldr r0, [r0] adds r0, 0x4A ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r4, r2, 0 muls r4, r0 ldr r0, _08025900 @ =gSaveBlock1Ptr mov r8, r0 b _080259E8 .align 2, 0 _080258F0: .4byte gBattleOutcome _080258F4: .4byte gTrainerBattleOpponent_A _080258F8: .4byte gBattleResources _080258FC: .4byte gBattleStruct _08025900: .4byte gSaveBlock1Ptr _08025904: ldr r2, _08025920 @ =gTrainers ldrh r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r3, r0, 3 adds r4, r3, r2 ldrb r1, [r4] cmp r1, 0x1 beq _0802595A cmp r1, 0x1 bgt _08025924 cmp r1, 0 beq _0802592E b _08025970 .align 2, 0 _08025920: .4byte gTrainers _08025924: cmp r1, 0x2 beq _08025944 cmp r1, 0x3 beq _0802595A b _08025970 _0802592E: adds r0, r2, 0 adds r0, 0x24 adds r0, r3, r0 ldr r1, [r0] adds r0, r4, 0 adds r0, 0x20 ldrb r0, [r0] lsls r0, 3 adds r0, r1 subs r0, 0x8 b _0802596E _08025944: adds r0, r2, 0 adds r0, 0x24 adds r0, r3, r0 ldr r1, [r0] adds r0, r4, 0 adds r0, 0x20 ldrb r0, [r0] lsls r0, 3 adds r0, r1 subs r0, 0x8 b _0802596E _0802595A: adds r0, r2, 0 adds r0, 0x24 adds r0, r3, r0 ldr r1, [r0] adds r0, r4, 0 adds r0, 0x20 ldrb r0, [r0] lsls r0, 4 adds r0, r1 subs r0, 0x10 _0802596E: ldrb r5, [r0, 0x2] _08025970: ldr r0, _080259CC @ =gUnknown_824F220 lsls r1, r6, 2 adds r3, r1, r0 ldrb r1, [r3] ldr r7, _080259D0 @ =gBattleStruct mov r12, r0 lsls r4, r5, 2 ldr r5, _080259D4 @ =gBattleTypeFlags ldr r0, _080259D8 @ =gSaveBlock1Ptr mov r8, r0 cmp r1, 0xFF beq _080259AA ldr r2, _080259DC @ =gTrainers ldr r0, _080259E0 @ =gTrainerBattleOpponent_A ldrh r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r2 ldrb r2, [r0, 0x1] adds r1, r3, 0 _0802599A: ldrb r0, [r1] cmp r0, r2 beq _080259AA adds r1, 0x4 adds r6, 0x1 ldrb r0, [r1] cmp r0, 0xFF bne _0802599A _080259AA: ldr r0, [r7] adds r0, 0x4A ldrb r0, [r0] adds r3, r4, 0 muls r3, r0 lsls r0, r6, 2 add r0, r12 ldrb r2, [r0, 0x1] ldr r0, [r5] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _080259E4 lsls r0, r2, 1 adds r4, r3, 0 muls r4, r0 b _080259E8 .align 2, 0 _080259CC: .4byte gUnknown_824F220 _080259D0: .4byte gBattleStruct _080259D4: .4byte gBattleTypeFlags _080259D8: .4byte gSaveBlock1Ptr _080259DC: .4byte gTrainers _080259E0: .4byte gTrainerBattleOpponent_A _080259E4: adds r4, r3, 0 muls r4, r2 _080259E8: mov r1, r8 ldr r0, [r1] movs r1, 0xA4 lsls r1, 2 adds r0, r1 adds r1, r4, 0 bl AddMoney b _08025A00 _080259FA: bl sub_8054C04 adds r4, r0, 0 _08025A00: ldr r1, _08025A40 @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x1 strb r0, [r1, 0x1] movs r0, 0x4 strb r0, [r1, 0x2] movs r0, 0x5 strb r0, [r1, 0x3] strb r4, [r1, 0x4] movs r0, 0xFF lsls r0, 8 ands r0, r4 lsrs r0, 8 strb r0, [r1, 0x5] movs r0, 0xFF lsls r0, 16 ands r0, r4 lsrs r0, 16 strb r0, [r1, 0x6] lsrs r0, r4, 24 strb r0, [r1, 0x7] movs r0, 0xFF strb r0, [r1, 0x8] cmp r4, 0 beq _08025A48 ldr r1, _08025A44 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08025A62 .align 2, 0 _08025A40: .4byte gBattleTextBuff1 _08025A44: .4byte gUnknown_2023D74 _08025A48: ldr r3, _08025A6C @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08025A62: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08025A6C: .4byte gUnknown_2023D74 thumb_func_end sub_80258AC thumb_func_start atk5E atk5E: @ 8025A70 push {r4-r7,lr} mov r7, r8 push {r7} ldr r4, _08025A94 @ =gUnknown_2023D74 ldr r0, [r4] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r6, _08025A98 @ =gActiveBattler strb r0, [r6] ldr r5, _08025A9C @ =gUnknown_2023E82 ldrb r0, [r5] mov r8, r4 cmp r0, 0 beq _08025AA0 cmp r0, 0x1 beq _08025AB8 b _08025B0C .align 2, 0 _08025A94: .4byte gUnknown_2023D74 _08025A98: .4byte gActiveBattler _08025A9C: .4byte gUnknown_2023E82 _08025AA0: movs r0, 0 movs r1, 0 movs r2, 0 bl BtlController_EmitGetMonData ldrb r0, [r6] bl MarkBufferBankForExecution ldrb r0, [r5] adds r0, 0x1 strb r0, [r5] b _08025B0C _08025AB8: ldr r0, _08025B18 @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 bne _08025B0C ldrb r0, [r6] lsls r0, 9 ldr r1, _08025B1C @ =gUnknown_20233C8 adds r0, r1 mov r12, r0 movs r2, 0 adds r4, r6, 0 movs r5, 0x58 ldr r6, _08025B20 @ =gUnknown_2023C08 adds r7, r6, 0 subs r7, 0x18 mov r3, r12 adds r3, 0xC _08025ADA: lsls r1, r2, 1 ldrb r0, [r4] muls r0, r5 adds r1, r0 adds r1, r7 ldrh r0, [r3] strh r0, [r1] ldrb r0, [r4] adds r1, r0, 0 muls r1, r5 adds r1, r2, r1 adds r1, r6 mov r0, r12 adds r0, 0x24 adds r0, r2 ldrb r0, [r0] strb r0, [r1] adds r3, 0x2 adds r2, 0x1 cmp r2, 0x3 ble _08025ADA mov r1, r8 ldr r0, [r1] adds r0, 0x2 str r0, [r1] _08025B0C: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08025B18: .4byte gUnknown_2023BC8 _08025B1C: .4byte gUnknown_20233C8 _08025B20: .4byte gUnknown_2023C08 thumb_func_end atk5E thumb_func_start atk5F atk5F: @ 8025B24 push {lr} ldr r0, _08025B4C @ =gActiveBattler ldr r2, _08025B50 @ =sBattler_AI ldrb r3, [r2] strb r3, [r0] ldr r1, _08025B54 @ =gBattlerTarget ldrb r0, [r1] strb r0, [r2] strb r3, [r1] ldr r2, _08025B58 @ =gUnknown_2023DD0 ldr r1, [r2] movs r3, 0x80 lsls r3, 5 adds r0, r1, 0 ands r0, r3 cmp r0, 0 beq _08025B60 ldr r0, _08025B5C @ =0xffffefff ands r1, r0 b _08025B62 .align 2, 0 _08025B4C: .4byte gActiveBattler _08025B50: .4byte sBattler_AI _08025B54: .4byte gBattlerTarget _08025B58: .4byte gUnknown_2023DD0 _08025B5C: .4byte 0xffffefff _08025B60: orrs r1, r3 _08025B62: str r1, [r2] ldr r1, _08025B70 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _08025B70: .4byte gUnknown_2023D74 thumb_func_end atk5F thumb_func_start atk60_incrementgamestat atk60_incrementgamestat: @ 8025B74 push {lr} ldr r0, _08025B9C @ =sBattler_AI ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _08025B8E ldr r0, _08025BA0 @ =gUnknown_2023D74 ldr r0, [r0] ldrb r0, [r0, 0x1] bl IncrementGameStat _08025B8E: ldr r1, _08025BA0 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x2 str r0, [r1] pop {r0} bx r0 .align 2, 0 _08025B9C: .4byte sBattler_AI _08025BA0: .4byte gUnknown_2023D74 thumb_func_end atk60_incrementgamestat thumb_func_start atk61_drawpartystatussummary atk61_drawpartystatussummary: @ 8025BA4 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x30 ldr r0, _08025C08 @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 bne _08025C58 ldr r0, _08025C0C @ =gUnknown_2023D74 ldr r0, [r0] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r1, _08025C10 @ =gActiveBattler strb r0, [r1] ldrb r0, [r1] bl GetBattlerSide lsls r0, 24 ldr r1, _08025C14 @ =gEnemyParty mov r8, r1 cmp r0, 0 bne _08025BD6 ldr r0, _08025C18 @ =gPlayerParty mov r8, r0 _08025BD6: movs r7, 0 add r6, sp, 0x4 mov r5, sp _08025BDC: movs r0, 0x64 muls r0, r7 mov r1, r8 adds r4, r1, r0 adds r0, r4, 0 movs r1, 0x41 bl GetMonData cmp r0, 0 beq _08025C00 adds r0, r4, 0 movs r1, 0x41 bl GetMonData movs r1, 0xCE lsls r1, 1 cmp r0, r1 bne _08025C20 _08025C00: ldr r0, _08025C1C @ =0x0000ffff strh r0, [r5] movs r0, 0 b _08025C32 .align 2, 0 _08025C08: .4byte gUnknown_2023BC8 _08025C0C: .4byte gUnknown_2023D74 _08025C10: .4byte gActiveBattler _08025C14: .4byte gEnemyParty _08025C18: .4byte gPlayerParty _08025C1C: .4byte 0x0000ffff _08025C20: adds r0, r4, 0 movs r1, 0x39 bl GetMonData strh r0, [r5] adds r0, r4, 0 movs r1, 0x37 bl GetMonData _08025C32: str r0, [r6] adds r6, 0x8 adds r5, 0x8 adds r7, 0x1 cmp r7, 0x5 ble _08025BDC movs r0, 0 mov r1, sp movs r2, 0x1 bl EmitDrawPartyStatusSummary ldr r0, _08025C64 @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution ldr r1, _08025C68 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x2 str r0, [r1] _08025C58: add sp, 0x30 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08025C64: .4byte gActiveBattler _08025C68: .4byte gUnknown_2023D74 thumb_func_end atk61_drawpartystatussummary thumb_func_start atk62 atk62: @ 8025C6C push {r4,r5,lr} ldr r5, _08025C94 @ =gUnknown_2023D74 ldr r0, [r5] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r4, _08025C98 @ =gActiveBattler strb r0, [r4] movs r0, 0 bl EmitCmd49 ldrb r0, [r4] bl MarkBufferBankForExecution ldr r0, [r5] adds r0, 0x2 str r0, [r5] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08025C94: .4byte gUnknown_2023D74 _08025C98: .4byte gActiveBattler thumb_func_end atk62 thumb_func_start atk63_jumptorandomattack atk63_jumptorandomattack: @ 8025C9C push {r4,lr} ldr r0, _08025CB4 @ =gUnknown_2023D74 ldr r1, [r0] ldrb r1, [r1, 0x1] adds r4, r0, 0 cmp r1, 0 beq _08025CC0 ldr r0, _08025CB8 @ =gCurrentMove ldr r1, _08025CBC @ =gUnknown_2023D4E ldrh r1, [r1] strh r1, [r0] b _08025CCE .align 2, 0 _08025CB4: .4byte gUnknown_2023D74 _08025CB8: .4byte gCurrentMove _08025CBC: .4byte gUnknown_2023D4E _08025CC0: ldr r2, _08025CEC @ =gUnknown_2023D4C ldr r1, _08025CF0 @ =gCurrentMove ldr r0, _08025CF4 @ =gUnknown_2023D4E ldrh r0, [r0] strh r0, [r1] strh r0, [r2] adds r0, r1, 0 _08025CCE: ldr r3, _08025CF8 @ =gUnknown_81D65A8 ldr r2, _08025CFC @ =gBattleMoves ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0] lsls r0, 2 adds r0, r3 ldr r0, [r0] str r0, [r4] pop {r4} pop {r0} bx r0 .align 2, 0 _08025CEC: .4byte gUnknown_2023D4C _08025CF0: .4byte gCurrentMove _08025CF4: .4byte gUnknown_2023D4E _08025CF8: .4byte gUnknown_81D65A8 _08025CFC: .4byte gBattleMoves thumb_func_end atk63_jumptorandomattack thumb_func_start atk64_statusanimation atk64_statusanimation: @ 8025D00 push {r4,lr} ldr r0, _08025D70 @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 bne _08025D68 ldr r0, _08025D74 @ =gUnknown_2023D74 ldr r0, [r0] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r4, _08025D78 @ =gActiveBattler strb r0, [r4] ldr r1, _08025D7C @ =gStatuses3 ldrb r2, [r4] lsls r0, r2, 2 adds r0, r1 ldr r0, [r0] ldr r1, _08025D80 @ =0x000400c0 ands r0, r1 cmp r0, 0 bne _08025D60 ldr r0, _08025D84 @ =gDisableStructs lsls r1, r2, 3 subs r1, r2 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0xA] cmp r0, 0 bne _08025D60 ldr r0, _08025D88 @ =gUnknown_2023DD0 ldr r0, [r0] movs r1, 0x80 ands r0, r1 cmp r0, 0 bne _08025D60 ldr r1, _08025D8C @ =gBattleMons movs r0, 0x58 muls r0, r2 adds r1, 0x4C adds r0, r1 ldr r2, [r0] movs r0, 0 movs r1, 0 bl EmitStatusAnimation ldrb r0, [r4] bl MarkBufferBankForExecution _08025D60: ldr r1, _08025D74 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x2 str r0, [r1] _08025D68: pop {r4} pop {r0} bx r0 .align 2, 0 _08025D70: .4byte gUnknown_2023BC8 _08025D74: .4byte gUnknown_2023D74 _08025D78: .4byte gActiveBattler _08025D7C: .4byte gStatuses3 _08025D80: .4byte 0x000400c0 _08025D84: .4byte gDisableStructs _08025D88: .4byte gUnknown_2023DD0 _08025D8C: .4byte gBattleMons thumb_func_end atk64_statusanimation thumb_func_start atk65_status2animation atk65_status2animation: @ 8025D90 push {r4,r5,lr} ldr r0, _08025E18 @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 bne _08025E10 ldr r4, _08025E1C @ =gUnknown_2023D74 ldr r0, [r4] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r5, _08025E20 @ =gActiveBattler strb r0, [r5] ldr r1, [r4] ldrb r3, [r1, 0x2] ldrb r0, [r1, 0x3] lsls r0, 8 orrs r3, r0 ldrb r0, [r1, 0x4] lsls r0, 16 orrs r3, r0 ldrb r0, [r1, 0x5] lsls r0, 24 orrs r3, r0 ldr r1, _08025E24 @ =gStatuses3 ldrb r2, [r5] lsls r0, r2, 2 adds r0, r1 ldr r0, [r0] ldr r1, _08025E28 @ =0x000400c0 ands r0, r1 cmp r0, 0 bne _08025E08 ldr r0, _08025E2C @ =gDisableStructs lsls r1, r2, 3 subs r1, r2 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0xA] cmp r0, 0 bne _08025E08 ldr r0, _08025E30 @ =gUnknown_2023DD0 ldr r0, [r0] movs r1, 0x80 ands r0, r1 cmp r0, 0 bne _08025E08 ldr r1, _08025E34 @ =gBattleMons movs r0, 0x58 muls r0, r2 adds r1, 0x50 adds r0, r1 ldr r2, [r0] ands r2, r3 movs r0, 0 movs r1, 0x1 bl EmitStatusAnimation ldrb r0, [r5] bl MarkBufferBankForExecution _08025E08: ldr r1, _08025E1C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x6 str r0, [r1] _08025E10: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08025E18: .4byte gUnknown_2023BC8 _08025E1C: .4byte gUnknown_2023D74 _08025E20: .4byte gActiveBattler _08025E24: .4byte gStatuses3 _08025E28: .4byte 0x000400c0 _08025E2C: .4byte gDisableStructs _08025E30: .4byte gUnknown_2023DD0 _08025E34: .4byte gBattleMons thumb_func_end atk65_status2animation thumb_func_start atk66_chosenstatusanimation atk66_chosenstatusanimation: @ 8025E38 push {r4,r5,lr} ldr r0, _08025EB0 @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 bne _08025EAA ldr r4, _08025EB4 @ =gUnknown_2023D74 ldr r0, [r4] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r5, _08025EB8 @ =gActiveBattler strb r0, [r5] ldr r4, [r4] ldrb r2, [r4, 0x3] ldrb r0, [r4, 0x4] lsls r0, 8 orrs r2, r0 ldrb r0, [r4, 0x5] lsls r0, 16 orrs r2, r0 ldrb r0, [r4, 0x6] lsls r0, 24 orrs r2, r0 ldr r1, _08025EBC @ =gStatuses3 ldrb r3, [r5] lsls r0, r3, 2 adds r0, r1 ldr r0, [r0] ldr r1, _08025EC0 @ =0x000400c0 ands r0, r1 cmp r0, 0 bne _08025EA2 ldr r0, _08025EC4 @ =gDisableStructs lsls r1, r3, 3 subs r1, r3 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0xA] cmp r0, 0 bne _08025EA2 ldr r0, _08025EC8 @ =gUnknown_2023DD0 ldr r0, [r0] movs r1, 0x80 ands r0, r1 cmp r0, 0 bne _08025EA2 ldrb r1, [r4, 0x2] movs r0, 0 bl EmitStatusAnimation ldrb r0, [r5] bl MarkBufferBankForExecution _08025EA2: ldr r1, _08025EB4 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x7 str r0, [r1] _08025EAA: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08025EB0: .4byte gUnknown_2023BC8 _08025EB4: .4byte gUnknown_2023D74 _08025EB8: .4byte gActiveBattler _08025EBC: .4byte gStatuses3 _08025EC0: .4byte 0x000400c0 _08025EC4: .4byte gDisableStructs _08025EC8: .4byte gUnknown_2023DD0 thumb_func_end atk66_chosenstatusanimation thumb_func_start atk67_yesnobox atk67_yesnobox: @ 8025ECC push {r4,r5,lr} sub sp, 0x4 ldr r5, _08025EE0 @ =gUnknown_2023E82 ldrb r4, [r5] cmp r4, 0 beq _08025EE4 cmp r4, 0x1 beq _08025F0C b _08025F9A .align 2, 0 _08025EE0: .4byte gUnknown_2023E82 _08025EE4: str r4, [sp] movs r0, 0x17 movs r1, 0x8 movs r2, 0x1D movs r3, 0xD bl sub_802DB7C ldr r0, _08025F08 @ =gUnknown_83FE791 movs r1, 0xE bl sub_80D87BC ldrb r0, [r5] adds r0, 0x1 strb r0, [r5] strb r4, [r5, 0x1] bl sub_802DCB8 b _08025F9A .align 2, 0 _08025F08: .4byte gUnknown_83FE791 _08025F0C: ldr r0, _08025F6C @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _08025F30 ldrb r0, [r5, 0x1] cmp r0, 0 beq _08025F30 movs r0, 0x5 bl PlaySE bl sub_802DCF8 movs r0, 0 strb r0, [r5, 0x1] bl sub_802DCB8 _08025F30: ldr r0, _08025F6C @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _08025F56 ldr r4, _08025F70 @ =gUnknown_2023E82 ldrb r0, [r4, 0x1] cmp r0, 0 bne _08025F56 movs r0, 0x5 bl PlaySE bl sub_802DCF8 movs r0, 0x1 strb r0, [r4, 0x1] bl sub_802DCB8 _08025F56: ldr r0, _08025F6C @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _08025F74 ldr r0, _08025F70 @ =gUnknown_2023E82 movs r4, 0x1 strb r4, [r0, 0x1] b _08025F7E .align 2, 0 _08025F6C: .4byte gMain _08025F70: .4byte gUnknown_2023E82 _08025F74: movs r4, 0x1 adds r0, r4, 0 ands r0, r1 cmp r0, 0 beq _08025F9A _08025F7E: movs r0, 0x5 bl PlaySE str r4, [sp] movs r0, 0x17 movs r1, 0x8 movs r2, 0x1D movs r3, 0xD bl sub_802DB7C ldr r1, _08025FA4 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] _08025F9A: add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08025FA4: .4byte gUnknown_2023D74 thumb_func_end atk67_yesnobox thumb_func_start atk68_cancelallactions atk68_cancelallactions: @ 8025FA8 push {r4,r5,lr} movs r1, 0 ldr r2, _08025FD4 @ =gBattlersCount ldr r5, _08025FD8 @ =gUnknown_2023D74 ldrb r0, [r2] cmp r1, r0 bge _08025FC6 ldr r4, _08025FDC @ =gUnknown_2023BDA movs r3, 0xC _08025FBA: adds r0, r1, r4 strb r3, [r0] adds r1, 0x1 ldrb r0, [r2] cmp r1, r0 blt _08025FBA _08025FC6: ldr r0, [r5] adds r0, 0x1 str r0, [r5] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08025FD4: .4byte gBattlersCount _08025FD8: .4byte gUnknown_2023D74 _08025FDC: .4byte gUnknown_2023BDA thumb_func_end atk68_cancelallactions thumb_func_start atk69_adjustsetdamage atk69_adjustsetdamage: @ 8025FE0 push {r4-r7,lr} ldr r7, _08026008 @ =gBattleMons ldr r6, _0802600C @ =gBattlerTarget ldrb r2, [r6] movs r5, 0x58 adds r0, r2, 0 muls r0, r5 adds r1, r0, r7 ldrh r0, [r1, 0x2E] cmp r0, 0xAF bne _08026014 ldr r1, _08026010 @ =gEnigmaBerries lsls r0, r2, 3 subs r0, r2 lsls r0, 2 adds r0, r1 ldrb r4, [r0, 0x7] ldrb r6, [r0, 0x1A] b _0802602E .align 2, 0 _08026008: .4byte gBattleMons _0802600C: .4byte gBattlerTarget _08026010: .4byte gEnigmaBerries _08026014: ldrh r0, [r1, 0x2E] bl ItemId_GetHoldEffect lsls r0, 24 lsrs r4, r0, 24 ldrb r0, [r6] muls r0, r5 adds r0, r7 ldrh r0, [r0, 0x2E] bl ItemId_GetHoldEffectParam lsls r0, 24 lsrs r6, r0, 24 _0802602E: ldr r1, _080260F0 @ =gPotentialItemEffectBattler ldr r5, _080260F4 @ =gBattlerTarget ldrb r0, [r5] strb r0, [r1] cmp r4, 0x27 bne _0802606C bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x64 bl __umodsi3 lsls r0, 16 lsrs r0, 16 cmp r0, r6 bcs _0802606C ldrb r0, [r5] movs r1, 0x27 bl sub_80C7208 ldr r2, _080260F8 @ =gUnknown_2023ECC ldrb r1, [r5] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r2, 0x80 orrs r1, r2 strb r1, [r0] _0802606C: ldr r2, _080260FC @ =gBattleMons ldr r3, _080260F4 @ =gBattlerTarget ldrb r4, [r3] movs r0, 0x58 muls r0, r4 adds r1, r2, 0 adds r1, 0x50 adds r0, r1 ldr r1, [r0] movs r0, 0x80 lsls r0, 17 ands r1, r0 adds r5, r2, 0 cmp r1, 0 bne _0802613C ldr r2, _08026100 @ =gBattleMoves ldr r0, _08026104 @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0] cmp r0, 0x65 beq _080260BE ldr r0, _08026108 @ =gUnknown_2023E8C lsls r1, r4, 4 adds r1, r0 ldrb r0, [r1] lsls r0, 30 cmp r0, 0 blt _080260BE ldr r0, _080260F8 @ =gUnknown_2023ECC lsls r1, r4, 2 adds r1, r4 lsls r1, 2 adds r1, r0 ldrb r0, [r1] lsrs r0, 7 cmp r0, 0 beq _0802613C _080260BE: ldrb r0, [r3] movs r4, 0x58 muls r0, r4 adds r0, r5 ldrh r1, [r0, 0x28] ldr r2, _0802610C @ =gBattleMoveDamage ldr r0, [r2] cmp r1, r0 bgt _0802613C subs r0, r1, 0x1 str r0, [r2] ldr r1, _08026108 @ =gUnknown_2023E8C ldrb r3, [r3] lsls r0, r3, 4 adds r0, r1 ldrb r0, [r0] lsls r0, 30 cmp r0, 0 bge _08026114 ldr r0, _08026110 @ =gMoveResultFlags ldrb r1, [r0] movs r2, 0x40 orrs r1, r2 strb r1, [r0] b _0802613C .align 2, 0 _080260F0: .4byte gPotentialItemEffectBattler _080260F4: .4byte gBattlerTarget _080260F8: .4byte gUnknown_2023ECC _080260FC: .4byte gBattleMons _08026100: .4byte gBattleMoves _08026104: .4byte gCurrentMove _08026108: .4byte gUnknown_2023E8C _0802610C: .4byte gBattleMoveDamage _08026110: .4byte gMoveResultFlags _08026114: ldr r0, _0802614C @ =gUnknown_2023ECC lsls r1, r3, 2 adds r1, r3 lsls r1, 2 adds r1, r0 ldrb r0, [r1] lsrs r0, 7 cmp r0, 0 beq _0802613C ldr r2, _08026150 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x80 orrs r0, r1 strb r0, [r2] ldr r1, _08026154 @ =gUnknown_2023D68 adds r0, r3, 0 muls r0, r4 adds r0, r5 ldrh r0, [r0, 0x2E] strh r0, [r1] _0802613C: ldr r1, _08026158 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802614C: .4byte gUnknown_2023ECC _08026150: .4byte gMoveResultFlags _08026154: .4byte gUnknown_2023D68 _08026158: .4byte gUnknown_2023D74 thumb_func_end atk69_adjustsetdamage thumb_func_start atk6A_removeitem atk6A_removeitem: @ 802615C push {r4-r6,lr} sub sp, 0x4 ldr r6, _080261BC @ =gUnknown_2023D74 ldr r0, [r6] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r5, _080261C0 @ =gActiveBattler strb r0, [r5] ldr r1, _080261C4 @ =gBattleStruct ldrb r4, [r5] lsls r0, r4, 1 adds r0, 0xB8 ldr r1, [r1] adds r1, r0 ldr r2, _080261C8 @ =gBattleMons movs r3, 0x58 adds r0, r4, 0 muls r0, r3 adds r0, r2 ldrh r0, [r0, 0x2E] strh r0, [r1] ldrb r0, [r5] muls r0, r3 adds r0, r2 movs r1, 0 strh r1, [r0, 0x2E] ldrb r0, [r5] muls r0, r3 adds r2, 0x2E adds r0, r2 str r0, [sp] movs r0, 0 movs r1, 0x2 movs r2, 0 movs r3, 0x2 bl EmitSetMonData ldrb r0, [r5] bl MarkBufferBankForExecution ldr r0, [r6] adds r0, 0x2 str r0, [r6] add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080261BC: .4byte gUnknown_2023D74 _080261C0: .4byte gActiveBattler _080261C4: .4byte gBattleStruct _080261C8: .4byte gBattleMons thumb_func_end atk6A_removeitem thumb_func_start atk6B_atknameinbuff1 atk6B_atknameinbuff1: @ 80261CC ldr r1, _080261F8 @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x7 strb r0, [r1, 0x1] ldr r2, _080261FC @ =sBattler_AI ldrb r0, [r2] strb r0, [r1, 0x2] ldr r3, _08026200 @ =gBattlerPartyIndexes ldrb r0, [r2] lsls r0, 1 adds r0, r3 ldrh r0, [r0] strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldr r1, _08026204 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] bx lr .align 2, 0 _080261F8: .4byte gBattleTextBuff1 _080261FC: .4byte sBattler_AI _08026200: .4byte gBattlerPartyIndexes _08026204: .4byte gUnknown_2023D74 thumb_func_end atk6B_atknameinbuff1 thumb_func_start atk6C_drawlvlupbox atk6C_drawlvlupbox: @ 8026208 push {r4,lr} sub sp, 0x4 ldr r0, _08026224 @ =gBattleScripting ldrb r1, [r0, 0x1E] adds r4, r0, 0 cmp r1, 0 bne _0802622C bl IsMonGettingExpSentOut cmp r0, 0 beq _08026228 movs r0, 0x3 b _0802622A .align 2, 0 _08026224: .4byte gBattleScripting _08026228: movs r0, 0x1 _0802622A: strb r0, [r4, 0x1E] _0802622C: ldrb r0, [r4, 0x1E] subs r0, 0x1 cmp r0, 0x9 bls _08026236 b _080263F6 _08026236: lsls r0, 2 ldr r1, _08026240 @ =_08026244 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08026240: .4byte _08026244 .align 2, 0 _08026244: .4byte _0802626C .4byte _08026298 .4byte _080262B0 .4byte _08026304 .4byte _08026318 .4byte _08026330 .4byte _08026318 .4byte _08026350 .4byte _08026380 .4byte _080263C4 _0802626C: ldr r1, _08026290 @ =gBattle_BG2_Y movs r0, 0x60 strh r0, [r1] movs r0, 0x2 movs r1, 0x7 movs r2, 0 bl SetBgAttribute movs r0, 0x2 bl ShowBg bl sub_8026480 ldr r1, _08026294 @ =gBattleScripting movs r0, 0x2 strb r0, [r1, 0x1E] b _080263F6 .align 2, 0 _08026290: .4byte gBattle_BG2_Y _08026294: .4byte gBattleScripting _08026298: bl sub_80264D0 lsls r0, 24 cmp r0, 0 beq _080262A4 b _080263F6 _080262A4: ldr r1, _080262AC @ =gBattleScripting movs r0, 0x3 strb r0, [r1, 0x1E] b _080263F6 .align 2, 0 _080262AC: .4byte gBattleScripting _080262B0: ldr r1, _080262F8 @ =gBattle_BG1_X movs r0, 0 strh r0, [r1] ldr r1, _080262FC @ =gBattle_BG1_Y movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 strh r0, [r1] movs r0, 0 movs r1, 0x7 movs r2, 0x1 bl SetBgAttribute movs r0, 0x1 movs r1, 0x7 movs r2, 0 bl SetBgAttribute movs r0, 0 bl ShowBg movs r0, 0x1 bl ShowBg movs r0, 0x80 str r0, [sp] movs r0, 0x12 movs r1, 0x7 movs r2, 0x1D movs r3, 0x13 bl sub_802DB7C ldr r1, _08026300 @ =gBattleScripting movs r0, 0x4 strb r0, [r1, 0x1E] b _080263F6 .align 2, 0 _080262F8: .4byte gBattle_BG1_X _080262FC: .4byte gBattle_BG1_Y _08026300: .4byte gBattleScripting _08026304: bl sub_8026404 movs r0, 0xC bl PutWindowTilemap movs r0, 0xC movs r1, 0x3 bl CopyWindowToVram b _0802636E _08026318: bl IsDma3ManagerBusyWithBgCopy lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 bne _080263F6 ldr r0, _0802632C @ =gBattle_BG1_Y strh r1, [r0] b _0802636E .align 2, 0 _0802632C: .4byte gBattle_BG1_Y _08026330: ldr r0, _0802634C @ =gMain ldrh r0, [r0, 0x2E] cmp r0, 0 beq _080263F6 movs r0, 0x5 bl PlaySE bl sub_8026448 movs r0, 0xC movs r1, 0x2 bl CopyWindowToVram b _0802636E .align 2, 0 _0802634C: .4byte gMain _08026350: ldr r0, _08026378 @ =gMain ldrh r0, [r0, 0x2E] cmp r0, 0 beq _080263F6 movs r0, 0x5 bl PlaySE movs r0, 0x81 str r0, [sp] movs r0, 0x12 movs r1, 0x7 movs r2, 0x1D movs r3, 0x13 bl sub_802DB7C _0802636E: ldr r1, _0802637C @ =gBattleScripting ldrb r0, [r1, 0x1E] adds r0, 0x1 strb r0, [r1, 0x1E] b _080263F6 .align 2, 0 _08026378: .4byte gMain _0802637C: .4byte gBattleScripting _08026380: bl sub_8026648 lsls r0, 24 cmp r0, 0 bne _080263F6 movs r0, 0xD bl ClearWindowTilemap movs r0, 0xD movs r1, 0x1 bl CopyWindowToVram movs r0, 0xC bl ClearWindowTilemap movs r0, 0xC movs r1, 0x1 bl CopyWindowToVram movs r0, 0x2 movs r1, 0x7 movs r2, 0x2 bl SetBgAttribute movs r0, 0x2 bl ShowBg ldr r1, _080263C0 @ =gBattleScripting movs r0, 0xA strb r0, [r1, 0x1E] b _080263F6 .align 2, 0 _080263C0: .4byte gBattleScripting _080263C4: bl IsDma3ManagerBusyWithBgCopy lsls r0, 24 cmp r0, 0 bne _080263F6 movs r0, 0 movs r1, 0x7 movs r2, 0 bl SetBgAttribute movs r0, 0x1 movs r1, 0x7 movs r2, 0x1 bl SetBgAttribute movs r0, 0 bl ShowBg movs r0, 0x1 bl ShowBg ldr r1, _08026400 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] _080263F6: add sp, 0x4 pop {r4} pop {r0} bx r0 .align 2, 0 _08026400: .4byte gUnknown_2023D74 thumb_func_end atk6C_drawlvlupbox thumb_func_start sub_8026404 sub_8026404: @ 8026404 push {lr} sub sp, 0x14 ldr r0, _0802643C @ =gBattleStruct ldr r0, [r0] ldrb r1, [r0, 0x10] movs r0, 0x64 muls r0, r1 ldr r1, _08026440 @ =gPlayerParty adds r0, r1 add r1, sp, 0x8 bl sub_811D130 ldr r0, _08026444 @ =gBattleResources ldr r0, [r0] ldr r1, [r0, 0x10] movs r0, 0xD str r0, [sp] movs r0, 0xF str r0, [sp, 0x4] movs r0, 0xC add r2, sp, 0x8 movs r3, 0xE bl sub_811E7F0 add sp, 0x14 pop {r0} bx r0 .align 2, 0 _0802643C: .4byte gBattleStruct _08026440: .4byte gPlayerParty _08026444: .4byte gBattleResources thumb_func_end sub_8026404 thumb_func_start sub_8026448 sub_8026448: @ 8026448 push {lr} sub sp, 0x10 ldr r0, _08026478 @ =gBattleStruct ldr r0, [r0] ldrb r1, [r0, 0x10] movs r0, 0x64 muls r0, r1 ldr r1, _0802647C @ =gPlayerParty adds r0, r1 add r1, sp, 0x4 bl sub_811D130 movs r0, 0xF str r0, [sp] movs r0, 0xC add r1, sp, 0x4 movs r2, 0xE movs r3, 0xD bl sub_811E93C add sp, 0x10 pop {r0} bx r0 .align 2, 0 _08026478: .4byte gBattleStruct _0802647C: .4byte gPlayerParty thumb_func_end sub_8026448 thumb_func_start sub_8026480 sub_8026480: @ 8026480 push {lr} ldr r1, _080264C0 @ =gBattle_BG2_Y movs r0, 0 strh r0, [r1] ldr r1, _080264C4 @ =gBattle_BG2_X movs r2, 0xD0 lsls r2, 1 adds r0, r2, 0 strh r0, [r1] ldr r0, _080264C8 @ =gUnknown_82506D0 movs r1, 0x60 movs r2, 0x20 bl LoadPalette ldr r1, _080264CC @ =gUnknown_82506F0 movs r0, 0xD movs r2, 0 movs r3, 0 bl CopyToWindowPixelBuffer movs r0, 0xD bl PutWindowTilemap movs r0, 0xD movs r1, 0x3 bl CopyWindowToVram bl PutMonIconOnLvlUpBox pop {r0} bx r0 .align 2, 0 _080264C0: .4byte gBattle_BG2_Y _080264C4: .4byte gBattle_BG2_X _080264C8: .4byte gUnknown_82506D0 _080264CC: .4byte gUnknown_82506F0 thumb_func_end sub_8026480 thumb_func_start sub_80264D0 sub_80264D0: @ 80264D0 push {r4,r5,lr} bl IsDma3ManagerBusyWithBgCopy lsls r0, 24 cmp r0, 0 beq _080264E0 movs r0, 0x1 b _0802651A _080264E0: ldr r4, _080264F0 @ =gBattle_BG2_X ldrh r1, [r4] movs r5, 0x80 lsls r5, 2 cmp r1, r5 bne _080264F4 movs r0, 0 b _0802651A .align 2, 0 _080264F0: .4byte gBattle_BG2_X _080264F4: movs r0, 0xD0 lsls r0, 1 cmp r1, r0 bne _08026500 bl PutLevelAndGenderOnLvlUpBox _08026500: ldrh r0, [r4] adds r0, 0x8 strh r0, [r4] lsls r0, 16 ldr r1, _08026520 @ =0x01ff0000 cmp r0, r1 bls _08026510 strh r5, [r4] _08026510: ldrh r1, [r4] eors r1, r5 negs r0, r1 orrs r0, r1 lsrs r0, 31 _0802651A: pop {r4,r5} pop {r1} bx r1 .align 2, 0 _08026520: .4byte 0x01ff0000 thumb_func_end sub_80264D0 thumb_func_start PutLevelAndGenderOnLvlUpBox PutLevelAndGenderOnLvlUpBox: @ 8026524 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x10 ldr r6, _080265F8 @ =gBattleStruct ldr r0, [r6] ldrb r0, [r0, 0x10] movs r5, 0x64 muls r0, r5 ldr r4, _080265FC @ =gPlayerParty adds r0, r4 movs r1, 0x38 bl GetMonData mov r8, r0 lsls r0, 16 lsrs r0, 16 mov r8, r0 ldr r0, [r6] ldrb r0, [r0, 0x10] muls r0, r5 adds r0, r4 bl GetMonGender lsls r0, 24 lsrs r7, r0, 24 ldr r0, [r6] ldrb r0, [r0, 0x10] muls r0, r5 adds r0, r4 ldr r6, _08026600 @ =gStringVar4 adds r1, r6, 0 bl GetMonNickname str r6, [sp] mov r1, sp movs r4, 0 movs r0, 0xD strb r0, [r1, 0x4] mov r0, sp strb r4, [r0, 0x5] movs r5, 0x20 strb r5, [r0, 0x6] strb r4, [r0, 0x7] strb r5, [r0, 0x8] strb r4, [r0, 0x9] strb r4, [r0, 0xA] strb r4, [r0, 0xB] mov r3, sp ldrb r2, [r3, 0xC] movs r1, 0x10 negs r1, r1 adds r0, r1, 0 ands r0, r2 strb r0, [r3, 0xC] mov r2, sp movs r0, 0x10 strb r0, [r2, 0xC] ldrb r0, [r2, 0xD] ands r1, r0 strb r1, [r2, 0xD] mov r0, sp strb r5, [r0, 0xD] movs r1, 0xFF movs r2, 0 bl AddTextPrinter movs r0, 0xF9 strb r0, [r6] adds r6, 0x1 movs r0, 0x5 strb r0, [r6] adds r6, 0x1 strb r4, [r6] adds r6, 0x1 adds r4, r6, 0 adds r0, r4, 0 mov r1, r8 movs r2, 0 movs r3, 0x3 bl ConvertIntToDecimalStringN adds r6, r0, 0 movs r1, 0 movs r2, 0x5 bl StringFill adds r6, r4, 0x4 cmp r7, 0xFF beq _08026624 cmp r7, 0 bne _08026604 adds r0, r6, 0 movs r1, 0 movs r2, 0xC bl WriteColorChangeControlCode adds r6, r0, 0 movs r1, 0x1 movs r2, 0xD bl WriteColorChangeControlCode adds r6, r0, 0 movs r0, 0xB5 b _0802661C .align 2, 0 _080265F8: .4byte gBattleStruct _080265FC: .4byte gPlayerParty _08026600: .4byte gStringVar4 _08026604: adds r0, r6, 0 movs r1, 0 movs r2, 0xE bl WriteColorChangeControlCode adds r6, r0, 0 movs r1, 0x1 movs r2, 0xF bl WriteColorChangeControlCode adds r6, r0, 0 movs r0, 0xB6 _0802661C: strb r0, [r6] adds r6, 0x1 movs r0, 0xFF strb r0, [r6] _08026624: mov r0, sp movs r1, 0xA strb r1, [r0, 0x7] strb r1, [r0, 0x9] movs r1, 0xFF movs r2, 0 bl AddTextPrinter movs r0, 0xD movs r1, 0x2 bl CopyWindowToVram add sp, 0x10 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end PutLevelAndGenderOnLvlUpBox thumb_func_start sub_8026648 sub_8026648: @ 8026648 push {lr} ldr r0, _0802665C @ =gBattle_BG2_X ldrh r1, [r0] movs r3, 0xD0 lsls r3, 1 adds r2, r0, 0 cmp r1, r3 bne _08026660 movs r0, 0 b _08026684 .align 2, 0 _0802665C: .4byte gBattle_BG2_X _08026660: ldrh r0, [r2] adds r1, r0, 0 subs r1, 0x10 ldr r0, _08026670 @ =0x0000019f cmp r1, r0 bgt _08026674 strh r3, [r2] b _08026676 .align 2, 0 _08026670: .4byte 0x0000019f _08026674: strh r1, [r2] _08026676: ldrh r1, [r2] movs r0, 0xD0 lsls r0, 1 eors r1, r0 negs r0, r1 orrs r0, r1 lsrs r0, 31 _08026684: pop {r1} bx r1 thumb_func_end sub_8026648 thumb_func_start PutMonIconOnLvlUpBox PutMonIconOnLvlUpBox: @ 8026688 push {r4-r6,lr} mov r6, r8 push {r6} sub sp, 0x10 ldr r0, _08026730 @ =gBattleStruct mov r8, r0 ldr r0, [r0] ldrb r0, [r0, 0x10] movs r6, 0x64 muls r0, r6 ldr r5, _08026734 @ =gPlayerParty adds r0, r5 movs r1, 0xB bl GetMonData adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 mov r1, r8 ldr r0, [r1] ldrb r0, [r0, 0x10] muls r0, r6 adds r0, r5 movs r1, 0 bl GetMonData adds r1, r0, 0 adds r0, r4, 0 movs r2, 0x1 bl GetMonIconPtr str r0, [sp] ldr r5, _08026738 @ =0xffff0000 ldr r0, [sp, 0x4] ands r0, r5 movs r1, 0x80 lsls r1, 2 orrs r0, r1 ldr r1, _0802673C @ =0x0000ffff ands r0, r1 ldr r1, _08026740 @ =0xd75a0000 orrs r0, r1 str r0, [sp, 0x4] adds r0, r4, 0 bl GetValidMonIconPalettePtr str r0, [sp, 0x8] add r4, sp, 0x8 ldr r0, [r4, 0x4] ands r0, r5 ldr r1, _08026744 @ =0x0000d75a orrs r0, r1 str r0, [r4, 0x4] mov r0, sp bl LoadSpriteSheet adds r0, r4, 0 bl LoadSpritePalette ldr r0, _08026748 @ =gUnknown_82507C8 movs r1, 0x80 lsls r1, 1 movs r2, 0xA movs r3, 0 bl CreateSprite lsls r0, 24 lsrs r0, 24 ldr r2, _0802674C @ =gSprites lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 movs r0, 0 strh r0, [r1, 0x2E] ldr r0, _08026750 @ =gBattle_BG2_X ldrh r0, [r0] strh r0, [r1, 0x30] add sp, 0x10 pop {r3} mov r8, r3 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08026730: .4byte gBattleStruct _08026734: .4byte gPlayerParty _08026738: .4byte 0xffff0000 _0802673C: .4byte 0x0000ffff _08026740: .4byte 0xd75a0000 _08026744: .4byte 0x0000d75a _08026748: .4byte gUnknown_82507C8 _0802674C: .4byte gSprites _08026750: .4byte gBattle_BG2_X thumb_func_end PutMonIconOnLvlUpBox thumb_func_start SpriteCB_MonIconOnLvlUpBox SpriteCB_MonIconOnLvlUpBox: @ 8026754 push {r4,lr} adds r2, r0, 0 ldr r0, _08026770 @ =gBattle_BG2_X ldrh r1, [r2, 0x30] ldrh r0, [r0] subs r1, r0 strh r1, [r2, 0x24] lsls r1, 16 cmp r1, 0 beq _08026774 movs r0, 0x1 strh r0, [r2, 0x2E] b _08026790 .align 2, 0 _08026770: .4byte gBattle_BG2_X _08026774: movs r1, 0x2E ldrsh r0, [r2, r1] cmp r0, 0 beq _08026790 adds r0, r2, 0 bl DestroySprite ldr r4, _08026798 @ =0x0000d75a adds r0, r4, 0 bl FreeSpriteTilesByTag adds r0, r4, 0 bl FreeSpritePaletteByTag _08026790: pop {r4} pop {r0} bx r0 .align 2, 0 _08026798: .4byte 0x0000d75a thumb_func_end SpriteCB_MonIconOnLvlUpBox thumb_func_start IsMonGettingExpSentOut IsMonGettingExpSentOut: @ 802679C push {lr} ldr r3, _080267C4 @ =gBattlerPartyIndexes ldr r0, _080267C8 @ =gBattleStruct ldr r0, [r0] ldrh r1, [r3] ldrb r2, [r0, 0x10] cmp r1, r2 beq _080267BE ldr r0, _080267CC @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _080267D0 ldrh r0, [r3, 0x4] cmp r0, r2 bne _080267D0 _080267BE: movs r0, 0x1 b _080267D2 .align 2, 0 _080267C4: .4byte gBattlerPartyIndexes _080267C8: .4byte gBattleStruct _080267CC: .4byte gBattleTypeFlags _080267D0: movs r0, 0 _080267D2: pop {r1} bx r1 thumb_func_end IsMonGettingExpSentOut thumb_func_start atk6D_resetsentmonsvalue atk6D_resetsentmonsvalue: @ 80267D8 push {lr} bl ResetSentPokesToOpponentValue ldr r1, _080267EC @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _080267EC: .4byte gUnknown_2023D74 thumb_func_end atk6D_resetsentmonsvalue thumb_func_start atk6E_setatktoplayer0 atk6E_setatktoplayer0: @ 80267F0 push {lr} movs r0, 0 bl GetBattlerAtPosition ldr r1, _08026808 @ =sBattler_AI strb r0, [r1] ldr r1, _0802680C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _08026808: .4byte sBattler_AI _0802680C: .4byte gUnknown_2023D74 thumb_func_end atk6E_setatktoplayer0 thumb_func_start atk6F_makevisible atk6F_makevisible: @ 8026810 push {r4,r5,lr} ldr r5, _0802683C @ =gUnknown_2023D74 ldr r0, [r5] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r4, _08026840 @ =gActiveBattler strb r0, [r4] movs r0, 0 movs r1, 0 bl EmitSpriteInvisibility ldrb r0, [r4] bl MarkBufferBankForExecution ldr r0, [r5] adds r0, 0x2 str r0, [r5] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0802683C: .4byte gUnknown_2023D74 _08026840: .4byte gActiveBattler thumb_func_end atk6F_makevisible thumb_func_start atk70_recordlastability atk70_recordlastability: @ 8026844 push {r4,lr} ldr r4, _0802686C @ =gUnknown_2023D74 ldr r0, [r4] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r1, _08026870 @ =gActiveBattler strb r0, [r1] ldrb r0, [r1] ldr r1, _08026874 @ =gLastUsedAbility ldrb r1, [r1] bl sub_80C71D0 ldr r0, [r4] adds r0, 0x1 str r0, [r4] pop {r4} pop {r0} bx r0 .align 2, 0 _0802686C: .4byte gUnknown_2023D74 _08026870: .4byte gActiveBattler _08026874: .4byte gLastUsedAbility thumb_func_end atk70_recordlastability thumb_func_start BufferMoveToLearnIntoBattleTextBuff2 BufferMoveToLearnIntoBattleTextBuff2: @ 8026878 ldr r2, _08026898 @ =gBattleTextBuff2 movs r0, 0xFD strb r0, [r2] movs r0, 0x2 strb r0, [r2, 0x1] ldr r0, _0802689C @ =gMoveToLearn ldrh r1, [r0] strb r1, [r2, 0x2] movs r0, 0xFF lsls r0, 8 ands r0, r1 lsrs r0, 8 strb r0, [r2, 0x3] movs r0, 0xFF strb r0, [r2, 0x4] bx lr .align 2, 0 _08026898: .4byte gBattleTextBuff2 _0802689C: .4byte gMoveToLearn thumb_func_end BufferMoveToLearnIntoBattleTextBuff2 thumb_func_start atk71_buffermovetolearn atk71_buffermovetolearn: @ 80268A0 push {lr} bl BufferMoveToLearnIntoBattleTextBuff2 ldr r1, _080268B4 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _080268B4: .4byte gUnknown_2023D74 thumb_func_end atk71_buffermovetolearn thumb_func_start atk72_jumpifplayerran atk72_jumpifplayerran: @ 80268B8 push {lr} ldr r0, _080268E4 @ =gUnknown_2023D6D ldrb r0, [r0] bl sub_8016748 lsls r0, 24 cmp r0, 0 beq _080268EC ldr r3, _080268E8 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _080268F4 .align 2, 0 _080268E4: .4byte gUnknown_2023D6D _080268E8: .4byte gUnknown_2023D74 _080268EC: ldr r1, _080268F8 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] _080268F4: pop {r0} bx r0 .align 2, 0 _080268F8: .4byte gUnknown_2023D74 thumb_func_end atk72_jumpifplayerran thumb_func_start atk73_hpthresholds atk73_hpthresholds: @ 80268FC push {r4-r6,lr} ldr r0, _0802694C @ =gBattleTypeFlags ldr r4, [r0] movs r6, 0x1 ands r4, r6 cmp r4, 0 bne _08026992 ldr r0, _08026950 @ =gUnknown_2023D74 ldr r0, [r0] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r1, _08026954 @ =gActiveBattler strb r0, [r1] movs r1, 0x1 eors r0, r1 lsls r0, 24 lsrs r0, 24 ldr r2, _08026958 @ =gBattleMons movs r1, 0x58 muls r1, r0 adds r1, r2 ldrh r5, [r1, 0x28] movs r0, 0x64 muls r0, r5 ldrh r1, [r1, 0x2C] bl __divsi3 cmp r0, 0 bne _0802693A movs r0, 0x1 _0802693A: cmp r0, 0x45 bgt _08026942 cmp r5, 0 bne _08026960 _08026942: ldr r0, _0802695C @ =gBattleStruct ldr r0, [r0] adds r0, 0xAD strb r4, [r0] b _08026992 .align 2, 0 _0802694C: .4byte gBattleTypeFlags _08026950: .4byte gUnknown_2023D74 _08026954: .4byte gActiveBattler _08026958: .4byte gBattleMons _0802695C: .4byte gBattleStruct _08026960: cmp r0, 0x27 ble _08026974 ldr r0, _08026970 @ =gBattleStruct ldr r0, [r0] adds r0, 0xAD strb r6, [r0] b _08026992 .align 2, 0 _08026970: .4byte gBattleStruct _08026974: cmp r0, 0x9 ble _08026988 ldr r0, _08026984 @ =gBattleStruct ldr r0, [r0] adds r0, 0xAD movs r1, 0x2 b _08026990 .align 2, 0 _08026984: .4byte gBattleStruct _08026988: ldr r0, _080269A0 @ =gBattleStruct ldr r0, [r0] adds r0, 0xAD movs r1, 0x3 _08026990: strb r1, [r0] _08026992: ldr r1, _080269A4 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x2 str r0, [r1] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080269A0: .4byte gBattleStruct _080269A4: .4byte gUnknown_2023D74 thumb_func_end atk73_hpthresholds thumb_func_start atk74_hpthresholds2 atk74_hpthresholds2: @ 80269A8 push {r4-r7,lr} mov r7, r8 push {r7} ldr r0, _08026A0C @ =gBattleTypeFlags ldr r7, [r0] movs r0, 0x1 mov r8, r0 ands r7, r0 cmp r7, 0 bne _08026A42 ldr r0, _08026A10 @ =gUnknown_2023D74 ldr r0, [r0] ldrb r0, [r0, 0x1] bl sub_8016E24 adds r4, r0, 0 ldr r0, _08026A14 @ =gActiveBattler strb r4, [r0] movs r0, 0x1 eors r4, r0 lsls r4, 24 lsrs r4, 24 adds r0, r4, 0 bl GetBattlerSide lsls r0, 24 ldr r1, _08026A18 @ =gBattleStruct ldr r6, [r1] lsrs r0, 23 adds r0, r6 adds r0, 0xA8 ldrb r5, [r0] ldr r1, _08026A1C @ =gBattleMons movs r0, 0x58 muls r0, r4 adds r0, r1 ldrh r4, [r0, 0x28] subs r1, r5, r4 movs r0, 0x64 muls r0, r1 adds r1, r5, 0 bl __divsi3 adds r1, r0, 0 cmp r4, r5 bcc _08026A20 adds r0, r6, 0 adds r0, 0xAD strb r7, [r0] b _08026A42 .align 2, 0 _08026A0C: .4byte gBattleTypeFlags _08026A10: .4byte gUnknown_2023D74 _08026A14: .4byte gActiveBattler _08026A18: .4byte gBattleStruct _08026A1C: .4byte gBattleMons _08026A20: cmp r0, 0x1D bgt _08026A2E adds r0, r6, 0 adds r0, 0xAD mov r1, r8 strb r1, [r0] b _08026A42 _08026A2E: cmp r1, 0x45 bgt _08026A3A adds r1, r6, 0 adds r1, 0xAD movs r0, 0x2 b _08026A40 _08026A3A: adds r1, r6, 0 adds r1, 0xAD movs r0, 0x3 _08026A40: strb r0, [r1] _08026A42: ldr r1, _08026A54 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x2 str r0, [r1] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08026A54: .4byte gUnknown_2023D74 thumb_func_end atk74_hpthresholds2 thumb_func_start atk75_useitemonopponent atk75_useitemonopponent: @ 8026A58 push {lr} sub sp, 0x4 ldr r2, _08026A98 @ =gBattlerInMenuId ldr r1, _08026A9C @ =sBattler_AI ldrb r0, [r1] strb r0, [r2] ldr r2, _08026AA0 @ =gBattlerPartyIndexes ldrb r0, [r1] lsls r0, 1 adds r0, r2 ldrh r2, [r0] movs r0, 0x64 muls r0, r2 ldr r1, _08026AA4 @ =gEnemyParty adds r0, r1 ldr r1, _08026AA8 @ =gUnknown_2023D68 ldrh r1, [r1] lsls r2, 24 lsrs r2, 24 movs r3, 0x1 str r3, [sp] movs r3, 0 bl PokemonUseItemEffects ldr r1, _08026AAC @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] add sp, 0x4 pop {r0} bx r0 .align 2, 0 _08026A98: .4byte gBattlerInMenuId _08026A9C: .4byte sBattler_AI _08026AA0: .4byte gBattlerPartyIndexes _08026AA4: .4byte gEnemyParty _08026AA8: .4byte gUnknown_2023D68 _08026AAC: .4byte gUnknown_2023D74 thumb_func_end atk75_useitemonopponent thumb_func_start sub_8026AB0 sub_8026AB0: @ 8026AB0 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x8 ldr r4, _08026ADC @ =gUnknown_2023D74 ldr r0, [r4] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r1, _08026AE0 @ =gActiveBattler strb r0, [r1] ldr r0, [r4] ldrb r0, [r0, 0x2] cmp r0, 0xC bls _08026AD2 b _08026F4E _08026AD2: lsls r0, 2 ldr r1, _08026AE4 @ =_08026AE8 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08026ADC: .4byte gUnknown_2023D74 _08026AE0: .4byte gActiveBattler _08026AE4: .4byte _08026AE8 .align 2, 0 _08026AE8: .4byte _08026B1C .4byte _08026B2C .4byte _08026B8C .4byte _08026B9C .4byte _08026BB4 .4byte _08026BF0 .4byte _08026C28 .4byte _08026CB4 .4byte _08026CF4 .4byte _08026D50 .4byte _08026D64 .4byte _08026DA0 .4byte _08026F44 _08026B1C: ldr r0, _08026B28 @ =gActiveBattler ldrb r0, [r0] bl CancelMultiTurnMoves b _08026F4E .align 2, 0 _08026B28: .4byte gActiveBattler _08026B2C: ldr r1, _08026B68 @ =sBattler_AI ldr r4, _08026B6C @ =gBattlerTarget ldrb r0, [r4] strb r0, [r1] ldrb r0, [r1] bl GetBattlerSide movs r1, 0x1 eors r0, r1 lsls r0, 24 lsrs r0, 24 ldr r2, _08026B70 @ =gSideTimers lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r2, r1, r2 ldrb r0, [r2, 0x8] cmp r0, 0 beq _08026B78 ldr r1, _08026B74 @ =gBattleMons ldrb r2, [r2, 0x9] movs r0, 0x58 muls r0, r2 adds r0, r1 ldrh r0, [r0, 0x28] cmp r0, 0 beq _08026B78 strb r2, [r4] b _08026F4E .align 2, 0 _08026B68: .4byte sBattler_AI _08026B6C: .4byte gBattlerTarget _08026B70: .4byte gSideTimers _08026B74: .4byte gBattleMons _08026B78: ldr r0, _08026B84 @ =gBattlerTarget ldr r1, _08026B88 @ =gActiveBattler ldrb r1, [r1] strb r1, [r0] b _08026F4E .align 2, 0 _08026B84: .4byte gBattlerTarget _08026B88: .4byte gActiveBattler _08026B8C: bl IsRunningFromBattleImpossible ldr r1, _08026B98 @ =gUnknown_2023E82 strb r0, [r1] b _08026F4E .align 2, 0 _08026B98: .4byte gUnknown_2023E82 _08026B9C: ldr r0, _08026BAC @ =gCurrentMove ldrh r0, [r0] movs r1, 0 bl GetMoveTarget ldr r1, _08026BB0 @ =gBattlerTarget strb r0, [r1] b _08026F4E .align 2, 0 _08026BAC: .4byte gCurrentMove _08026BB0: .4byte gBattlerTarget _08026BB4: ldr r2, _08026BD4 @ =gUnknown_2023DD0 ldr r1, _08026BD8 @ =gBitTable ldr r0, _08026BDC @ =gActiveBattler ldrb r0, [r0] lsls r0, 2 adds r0, r1 ldr r0, [r0] lsls r0, 28 ldr r2, [r2] ands r2, r0 cmp r2, 0 beq _08026BE4 ldr r1, _08026BE0 @ =gUnknown_2023E82 movs r0, 0x1 strb r0, [r1] b _08026F4E .align 2, 0 _08026BD4: .4byte gUnknown_2023DD0 _08026BD8: .4byte gBitTable _08026BDC: .4byte gActiveBattler _08026BE0: .4byte gUnknown_2023E82 _08026BE4: ldr r0, _08026BEC @ =gUnknown_2023E82 strb r2, [r0] b _08026F4E .align 2, 0 _08026BEC: .4byte gUnknown_2023E82 _08026BF0: ldr r4, _08026C20 @ =gUnknown_2023ECC ldr r3, _08026C24 @ =gActiveBattler ldrb r0, [r3] lsls r1, r0, 2 adds r1, r0 lsls r1, 2 adds r1, r4 ldrb r2, [r1] movs r0, 0x9 negs r0, r0 ands r0, r2 strb r0, [r1] ldrb r0, [r3] lsls r1, r0, 2 adds r1, r0 lsls r1, 2 adds r1, r4 ldrb r2, [r1] movs r0, 0x11 negs r0, r0 ands r0, r2 strb r0, [r1] b _08026F4E .align 2, 0 _08026C20: .4byte gUnknown_2023ECC _08026C24: .4byte gActiveBattler _08026C28: ldr r4, _08026C4C @ =gBattlerPartyIndexes ldr r1, _08026C50 @ =gBattleStruct ldr r0, [r1] ldrh r3, [r4] ldrb r2, [r0, 0x10] adds r5, r1, 0 cmp r3, r2 beq _08026C44 ldrh r0, [r4, 0x4] cmp r0, r2 beq _08026C40 b _08026F4E _08026C40: cmp r3, r0 bne _08026C58 _08026C44: ldr r1, _08026C54 @ =gActiveBattler movs r0, 0 b _08026C5C .align 2, 0 _08026C4C: .4byte gBattlerPartyIndexes _08026C50: .4byte gBattleStruct _08026C54: .4byte gActiveBattler _08026C58: ldr r1, _08026CAC @ =gActiveBattler movs r0, 0x2 _08026C5C: strb r0, [r1] mov r8, r1 mov r0, r8 ldrb r2, [r0] lsls r0, r2, 1 adds r0, 0xC8 ldr r1, [r5] adds r3, r1, r0 movs r7, 0 ldr r1, _08026CB0 @ =gBattleMons movs r0, 0x58 muls r0, r2 adds r1, 0xC adds r0, r1 ldrh r0, [r0] ldrh r2, [r3] cmp r0, r2 beq _08026C9E mov r5, r8 movs r4, 0x58 adds r2, r1, 0 _08026C86: adds r7, 0x1 cmp r7, 0x3 bgt _08026C9E lsls r1, r7, 1 ldrb r0, [r5] muls r0, r4 adds r1, r0 adds r1, r2 ldrh r0, [r1] ldrh r1, [r3] cmp r0, r1 bne _08026C86 _08026C9E: cmp r7, 0x4 beq _08026CA4 b _08026F4E _08026CA4: movs r0, 0 strh r0, [r3] b _08026F4E .align 2, 0 _08026CAC: .4byte gActiveBattler _08026CB0: .4byte gBattleMons _08026CB4: ldr r0, _08026CE4 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0xB ands r0, r1 cmp r0, 0x8 beq _08026CC2 b _08026F4E _08026CC2: ldr r1, _08026CE8 @ =gBattleMons ldrh r0, [r1, 0x28] cmp r0, 0 bne _08026CCC b _08026F4E _08026CCC: adds r0, r1, 0 adds r0, 0x80 ldrh r0, [r0] cmp r0, 0 bne _08026CD8 b _08026F4E _08026CD8: ldr r0, _08026CEC @ =gUnknown_2023DD0 ldr r1, [r0] ldr r2, _08026CF0 @ =0xffbfffff ands r1, r2 str r1, [r0] b _08026F4E .align 2, 0 _08026CE4: .4byte gBattleTypeFlags _08026CE8: .4byte gBattleMons _08026CEC: .4byte gUnknown_2023DD0 _08026CF0: .4byte 0xffbfffff _08026CF4: movs r7, 0 ldr r2, _08026D3C @ =gUnknown_2023E82 strb r7, [r2, 0x5] ldr r1, _08026D40 @ =gActiveBattler movs r0, 0x1 strb r0, [r1] mov r8, r1 ldr r0, _08026D44 @ =gBattlersCount mov r4, r8 ldrb r5, [r0] ldr r6, _08026D48 @ =gBattleMons ldr r3, _08026D4C @ =gBitTable _08026D0C: ldrb r0, [r4] cmp r0, r5 bcs _08026D2A mov r0, r8 ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r6 ldrh r0, [r0, 0x28] cmp r0, 0 beq _08026D2A ldr r0, [r3] ldrb r1, [r2, 0x5] orrs r0, r1 strb r0, [r2, 0x5] _08026D2A: adds r3, 0x4 ldrb r0, [r4] adds r0, 0x2 strb r0, [r4] lsls r0, 24 lsrs r0, 24 cmp r0, 0x3 bls _08026D0C b _08026F4E .align 2, 0 _08026D3C: .4byte gUnknown_2023E82 _08026D40: .4byte gActiveBattler _08026D44: .4byte gBattlersCount _08026D48: .4byte gBattleMons _08026D4C: .4byte gBitTable _08026D50: ldr r4, _08026D5C @ =gActiveBattler movs r0, 0x1 strb r0, [r4] ldr r0, _08026D60 @ =gBattleMons adds r0, 0x58 b _08026D7C .align 2, 0 _08026D5C: .4byte gActiveBattler _08026D60: .4byte gBattleMons _08026D64: ldr r0, _08026D94 @ =gBattlersCount ldrb r0, [r0] cmp r0, 0x3 bhi _08026D6E b _08026F4E _08026D6E: ldr r4, _08026D98 @ =gActiveBattler movs r0, 0x3 strb r0, [r4] ldr r0, _08026D9C @ =gBattleMons movs r1, 0x84 lsls r1, 1 adds r0, r1 _08026D7C: ldrh r0, [r0, 0x28] cmp r0, 0 bne _08026D84 b _08026F4E _08026D84: movs r0, 0 movs r1, 0 bl EmitReturnMonToBall ldrb r0, [r4] bl MarkBufferBankForExecution b _08026F4E .align 2, 0 _08026D94: .4byte gBattlersCount _08026D98: .4byte gActiveBattler _08026D9C: .4byte gBattleMons _08026DA0: ldr r0, _08026F28 @ =gUnknown_2023E82 movs r1, 0 strb r1, [r0, 0x5] mov r8, r1 movs r7, 0 ldr r0, _08026F2C @ =gBattlersCount mov r12, r0 ldrb r2, [r0] cmp r8, r2 bge _08026DEE ldr r4, _08026F30 @ =gBattleMons adds r3, r4, 0 adds r3, 0x50 adds r6, r4, 0 adds r6, 0x20 movs r5, 0 _08026DC0: ldrb r0, [r6] cmp r0, 0x2B beq _08026DDE adds r2, r4, 0 adds r2, 0x4C adds r2, r5, r2 ldr r0, [r2] movs r1, 0x8 negs r1, r1 ands r0, r1 str r0, [r2] ldr r0, [r3] ldr r1, _08026F34 @ =0xf7ffffff ands r0, r1 str r0, [r3] _08026DDE: adds r3, 0x58 adds r6, 0x58 adds r5, 0x58 adds r7, 0x1 mov r0, r12 ldrb r0, [r0] cmp r7, r0 blt _08026DC0 _08026DEE: movs r7, 0 movs r1, 0xCE lsls r1, 1 mov r9, r1 _08026DF6: movs r0, 0x64 adds r4, r7, 0 muls r4, r0 ldr r0, _08026F38 @ =gPlayerParty adds r4, r0 adds r0, r4, 0 movs r1, 0x41 bl GetMonData lsls r0, 16 lsrs r5, r0, 16 adds r0, r4, 0 movs r1, 0x2E bl GetMonData lsls r0, 24 lsrs r6, r0, 24 adds r0, r4, 0 movs r1, 0x37 bl GetMonData adds r1, r0, 0 str r1, [sp, 0x4] cmp r5, 0 beq _08026E4E cmp r5, r9 beq _08026E4E movs r0, 0x7 ands r0, r1 cmp r0, 0 beq _08026E4E adds r0, r5, 0 adds r1, r6, 0 bl GetAbilityBySpecies lsls r0, 24 lsrs r0, 24 cmp r0, 0x2B beq _08026E4E movs r0, 0x1 lsls r0, r7 mov r2, r8 orrs r2, r0 mov r8, r2 _08026E4E: adds r7, 0x1 cmp r7, 0x5 ble _08026DF6 mov r0, r8 cmp r0, 0 beq _08026E88 movs r0, 0 bl GetBattlerAtPosition ldr r4, _08026F3C @ =gActiveBattler strb r0, [r4] movs r0, 0 str r0, [sp, 0x4] mov r1, r8 lsls r2, r1, 24 lsrs r2, 24 add r0, sp, 0x4 str r0, [sp] movs r0, 0 movs r1, 0x28 movs r3, 0x4 bl EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution ldr r1, _08026F28 @ =gUnknown_2023E82 movs r0, 0x1 strb r0, [r1, 0x5] _08026E88: movs r1, 0 mov r8, r1 movs r7, 0 movs r2, 0xCE lsls r2, 1 mov r9, r2 _08026E94: movs r0, 0x64 adds r4, r7, 0 muls r4, r0 ldr r0, _08026F40 @ =gEnemyParty adds r4, r0 adds r0, r4, 0 movs r1, 0x41 bl GetMonData lsls r0, 16 lsrs r5, r0, 16 adds r0, r4, 0 movs r1, 0x2E bl GetMonData lsls r0, 24 lsrs r6, r0, 24 adds r0, r4, 0 movs r1, 0x37 bl GetMonData adds r1, r0, 0 str r1, [sp, 0x4] cmp r5, 0 beq _08026EEC cmp r5, r9 beq _08026EEC movs r0, 0x7 ands r0, r1 cmp r0, 0 beq _08026EEC adds r0, r5, 0 adds r1, r6, 0 bl GetAbilityBySpecies lsls r0, 24 lsrs r0, 24 cmp r0, 0x2B beq _08026EEC movs r0, 0x1 lsls r0, r7 mov r1, r8 orrs r1, r0 mov r8, r1 _08026EEC: adds r7, 0x1 cmp r7, 0x5 ble _08026E94 mov r2, r8 cmp r2, 0 beq _08026F4E movs r0, 0x1 bl GetBattlerAtPosition ldr r4, _08026F3C @ =gActiveBattler strb r0, [r4] movs r0, 0 str r0, [sp, 0x4] mov r0, r8 lsls r2, r0, 24 lsrs r2, 24 add r1, sp, 0x4 str r1, [sp] movs r0, 0 movs r1, 0x28 movs r3, 0x4 bl EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution ldr r1, _08026F28 @ =gUnknown_2023E82 movs r0, 0x1 strb r0, [r1, 0x5] b _08026F4E .align 2, 0 _08026F28: .4byte gUnknown_2023E82 _08026F2C: .4byte gBattlersCount _08026F30: .4byte gBattleMons _08026F34: .4byte 0xf7ffffff _08026F38: .4byte gPlayerParty _08026F3C: .4byte gActiveBattler _08026F40: .4byte gEnemyParty _08026F44: bl IsFanfareTaskInactive lsls r0, 24 cmp r0, 0 beq _08026F56 _08026F4E: ldr r1, _08026F64 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x3 str r0, [r1] _08026F56: add sp, 0x8 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08026F64: .4byte gUnknown_2023D74 thumb_func_end sub_8026AB0 thumb_func_start atk77_setprotectlike atk77_setprotectlike: @ 8026F68 push {r4-r7,lr} mov r7, r8 push {r7} movs r6, 0x1 ldr r2, _08027034 @ =gUnknown_2023DB0 ldr r1, _08027038 @ =sBattler_AI ldrb r3, [r1] lsls r0, r3, 1 adds r0, r2 ldrh r0, [r0] mov r8, r1 ldr r7, _0802703C @ =gDisableStructs cmp r0, 0xB6 beq _08026F98 cmp r0, 0xC5 beq _08026F98 cmp r0, 0xCB beq _08026F98 lsls r0, r3, 3 subs r0, r3 lsls r0, 2 adds r0, r7 movs r1, 0 strb r1, [r0, 0x8] _08026F98: ldr r0, _08027040 @ =gUnknown_2023BE2 ldrb r1, [r0] ldr r0, _08027044 @ =gBattlersCount ldrb r0, [r0] subs r0, 0x1 cmp r1, r0 bne _08026FA8 movs r6, 0 _08026FA8: ldr r2, _08027048 @ =gUnknown_82507E0 mov r5, r8 ldrb r1, [r5] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r7 ldrb r4, [r0, 0x8] lsls r4, 1 adds r4, r2 bl Random ldrh r1, [r4] lsls r0, 16 lsrs r0, 16 cmp r1, r0 bcc _0802705C cmp r6, 0 beq _0802705C ldr r4, _0802704C @ =gBattleMoves ldr r3, _08027050 @ =gCurrentMove ldrh r0, [r3] lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r4 ldrb r0, [r1] cmp r0, 0x6F bne _08026FF8 ldr r0, _08027054 @ =gUnknown_2023E8C ldrb r1, [r5] lsls r1, 4 adds r1, r0 ldrb r0, [r1] movs r2, 0x1 orrs r0, r2 strb r0, [r1] ldr r1, _08027058 @ =gUnknown_2023E82 movs r0, 0 strb r0, [r1, 0x5] _08026FF8: ldrh r0, [r3] lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r4 ldrb r0, [r1] cmp r0, 0x74 bne _0802701E ldr r0, _08027054 @ =gUnknown_2023E8C ldrb r1, [r5] lsls r1, 4 adds r1, r0 ldrb r0, [r1] movs r2, 0x2 orrs r0, r2 strb r0, [r1] ldr r1, _08027058 @ =gUnknown_2023E82 movs r0, 0x1 strb r0, [r1, 0x5] _0802701E: mov r1, r8 ldrb r0, [r1] lsls r1, r0, 3 subs r1, r0 lsls r1, 2 adds r1, r7 ldrb r0, [r1, 0x8] adds r0, 0x1 strb r0, [r1, 0x8] b _0802707E .align 2, 0 _08027034: .4byte gUnknown_2023DB0 _08027038: .4byte sBattler_AI _0802703C: .4byte gDisableStructs _08027040: .4byte gUnknown_2023BE2 _08027044: .4byte gBattlersCount _08027048: .4byte gUnknown_82507E0 _0802704C: .4byte gBattleMoves _08027050: .4byte gCurrentMove _08027054: .4byte gUnknown_2023E8C _08027058: .4byte gUnknown_2023E82 _0802705C: ldr r2, _08027090 @ =gDisableStructs ldr r0, _08027094 @ =sBattler_AI ldrb r1, [r0] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0 strb r1, [r0, 0x8] ldr r1, _08027098 @ =gUnknown_2023E82 movs r0, 0x2 strb r0, [r1, 0x5] ldr r2, _0802709C @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] _0802707E: ldr r1, _080270A0 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08027090: .4byte gDisableStructs _08027094: .4byte sBattler_AI _08027098: .4byte gUnknown_2023E82 _0802709C: .4byte gMoveResultFlags _080270A0: .4byte gUnknown_2023D74 thumb_func_end atk77_setprotectlike thumb_func_start atk78_faintifabilitynotdamp atk78_faintifabilitynotdamp: @ 80270A4 push {r4-r7,lr} mov r7, r8 push {r7} ldr r0, _08027160 @ =gUnknown_2023BC8 ldr r2, [r0] cmp r2, 0 bne _080271A8 ldr r1, _08027164 @ =gBattlerTarget strb r2, [r1] ldr r0, _08027168 @ =gBattlersCount ldrb r3, [r0] adds r5, r1, 0 mov r8, r0 ldr r6, _0802716C @ =gBattleMons cmp r2, r3 bcs _080270F0 adds r0, r6, 0 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x6 beq _080270F0 adds r2, r3, 0 adds r4, r6, 0 movs r3, 0x58 _080270D4: ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] lsls r0, 24 lsrs r0, 24 cmp r0, r2 bcs _080270F0 ldrb r0, [r5] muls r0, r3 adds r0, r4 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x6 bne _080270D4 _080270F0: ldrb r0, [r5] mov r1, r8 ldrb r1, [r1] cmp r0, r1 bne _0802718C ldr r4, _08027170 @ =gActiveBattler ldr r7, _08027174 @ =sBattler_AI ldrb r0, [r7] strb r0, [r4] ldr r2, _08027178 @ =gBattleMoveDamage ldrb r1, [r4] movs r0, 0x58 muls r0, r1 adds r0, r6 ldrh r0, [r0, 0x28] str r0, [r2] ldr r1, _0802717C @ =0x00007fff movs r0, 0 bl EmitHealthBarUpdate ldrb r0, [r4] bl MarkBufferBankForExecution ldr r1, _08027180 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] movs r0, 0 strb r0, [r5] mov r2, r8 ldrb r0, [r2] cmp r0, 0 beq _080271A8 adds r3, r5, 0 ldrb r5, [r7] ldr r7, _08027184 @ =gBitTable adds r4, r0, 0 ldr r6, _08027188 @ =gAbsentBattlerFlags _0802713C: ldrb r2, [r3] cmp r2, r5 beq _08027152 ldrb r0, [r6] ldrb r1, [r3] lsls r1, 2 adds r1, r7 ldr r1, [r1] ands r0, r1 cmp r0, 0 beq _080271A8 _08027152: adds r0, r2, 0x1 strb r0, [r3] lsls r0, 24 lsrs r0, 24 cmp r0, r4 bcc _0802713C b _080271A8 .align 2, 0 _08027160: .4byte gUnknown_2023BC8 _08027164: .4byte gBattlerTarget _08027168: .4byte gBattlersCount _0802716C: .4byte gBattleMons _08027170: .4byte gActiveBattler _08027174: .4byte sBattler_AI _08027178: .4byte gBattleMoveDamage _0802717C: .4byte 0x00007fff _08027180: .4byte gUnknown_2023D74 _08027184: .4byte gBitTable _08027188: .4byte gAbsentBattlerFlags _0802718C: ldr r1, _080271B4 @ =gLastUsedAbility movs r0, 0x6 strb r0, [r1] ldrb r0, [r5] movs r1, 0x58 muls r1, r0 adds r1, r6 adds r1, 0x20 ldrb r1, [r1] bl sub_80C71D0 ldr r1, _080271B8 @ =gUnknown_2023D74 ldr r0, _080271BC @ =gUnknown_81D93AF str r0, [r1] _080271A8: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080271B4: .4byte gLastUsedAbility _080271B8: .4byte gUnknown_2023D74 _080271BC: .4byte gUnknown_81D93AF thumb_func_end atk78_faintifabilitynotdamp thumb_func_start atk79_setatkhptozero atk79_setatkhptozero: @ 80271C0 push {r4,lr} sub sp, 0x4 ldr r0, _0802720C @ =gUnknown_2023BC8 ldr r3, [r0] cmp r3, 0 bne _08027204 ldr r4, _08027210 @ =gActiveBattler ldr r0, _08027214 @ =sBattler_AI ldrb r0, [r0] strb r0, [r4] ldr r1, _08027218 @ =gBattleMons ldrb r0, [r4] movs r2, 0x58 muls r0, r2 adds r0, r1 strh r3, [r0, 0x28] ldrb r0, [r4] muls r0, r2 adds r1, 0x28 adds r0, r1 str r0, [sp] movs r0, 0 movs r1, 0x2A movs r2, 0 movs r3, 0x2 bl EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution ldr r1, _0802721C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] _08027204: add sp, 0x4 pop {r4} pop {r0} bx r0 .align 2, 0 _0802720C: .4byte gUnknown_2023BC8 _08027210: .4byte gActiveBattler _08027214: .4byte sBattler_AI _08027218: .4byte gBattleMons _0802721C: .4byte gUnknown_2023D74 thumb_func_end atk79_setatkhptozero thumb_func_start atk7A_jumpifnexttargetvalid atk7A_jumpifnexttargetvalid: @ 8027220 push {r4-r7,lr} ldr r3, _08027298 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r4, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r4, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r4, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r4, r0 ldr r0, _0802729C @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 adds r7, r3, 0 cmp r0, 0 beq _080272B8 ldr r0, _080272A0 @ =gBattlerTarget ldrb r1, [r0] adds r1, 0x1 strb r1, [r0] ldr r2, _080272A4 @ =sBattler_AI lsls r1, 24 lsrs r1, 24 adds r3, r0, 0 ldr r6, _080272A8 @ =gAbsentBattlerFlags ldr r5, _080272AC @ =gBitTable ldr r0, _080272B0 @ =gBattlersCount mov r12, r0 ldrb r0, [r2] cmp r1, r0 bne _08027276 _08027266: ldrb r0, [r3] adds r0, 0x1 strb r0, [r3] lsls r0, 24 lsrs r0, 24 ldrb r1, [r2] cmp r0, r1 beq _08027266 _08027276: ldrb r0, [r6] ldrb r1, [r3] lsls r1, 2 adds r1, r5 ldr r1, [r1] ands r0, r1 cmp r0, 0 bne _08027266 ldrb r0, [r3] mov r2, r12 ldrb r2, [r2] cmp r0, r2 bcc _080272B4 ldr r0, [r7] adds r0, 0x5 str r0, [r7] b _080272BC .align 2, 0 _08027298: .4byte gUnknown_2023D74 _0802729C: .4byte gBattleTypeFlags _080272A0: .4byte gBattlerTarget _080272A4: .4byte sBattler_AI _080272A8: .4byte gAbsentBattlerFlags _080272AC: .4byte gBitTable _080272B0: .4byte gBattlersCount _080272B4: str r4, [r7] b _080272BC _080272B8: adds r0, r2, 0x5 str r0, [r3] _080272BC: pop {r4-r7} pop {r0} bx r0 thumb_func_end atk7A_jumpifnexttargetvalid thumb_func_start atk7B_tryhealhalfhealth atk7B_tryhealhalfhealth: @ 80272C4 push {r4-r6,lr} ldr r4, _08027320 @ =gUnknown_2023D74 ldr r1, [r4] ldrb r2, [r1, 0x1] ldrb r0, [r1, 0x2] lsls r0, 8 orrs r2, r0 ldrb r0, [r1, 0x3] lsls r0, 16 orrs r2, r0 ldrb r0, [r1, 0x4] lsls r0, 24 orrs r2, r0 ldrb r0, [r1, 0x5] ldr r3, _08027324 @ =gBattlerTarget cmp r0, 0x1 bne _080272EC ldr r0, _08027328 @ =sBattler_AI ldrb r0, [r0] strb r0, [r3] _080272EC: ldr r1, _0802732C @ =gBattleMoveDamage ldr r6, _08027330 @ =gBattleMons ldrb r0, [r3] movs r5, 0x58 muls r0, r5 adds r0, r6 ldrh r0, [r0, 0x2C] lsrs r0, 1 str r0, [r1] cmp r0, 0 bne _08027306 movs r0, 0x1 str r0, [r1] _08027306: ldr r0, [r1] negs r0, r0 str r0, [r1] ldrb r0, [r3] muls r0, r5 adds r0, r6 ldrh r1, [r0, 0x28] ldrh r0, [r0, 0x2C] cmp r1, r0 bne _08027334 str r2, [r4] b _0802733A .align 2, 0 _08027320: .4byte gUnknown_2023D74 _08027324: .4byte gBattlerTarget _08027328: .4byte sBattler_AI _0802732C: .4byte gBattleMoveDamage _08027330: .4byte gBattleMons _08027334: ldr r0, [r4] adds r0, 0x6 str r0, [r4] _0802733A: pop {r4-r6} pop {r0} bx r0 thumb_func_end atk7B_tryhealhalfhealth thumb_func_start atk7C_trymirrormove atk7C_trymirrormove: @ 8027340 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 ldr r2, _080273E0 @ =gBattlersCount ldr r0, _080273E4 @ =gBattleStruct mov r10, r0 movs r1, 0 add r0, sp, 0x4 _08027356: strh r1, [r0] subs r0, 0x2 cmp r0, sp bge _08027356 movs r1, 0 mov r8, r1 movs r5, 0 ldrb r1, [r2] cmp r5, r1 bge _080273AC ldr r0, _080273E8 @ =sBattler_AI ldrb r6, [r0] ldr r2, _080273EC @ =0x0000ffff mov r9, r2 lsls r4, r6, 3 mov r2, sp ldr r0, _080273E4 @ =gBattleStruct mov r12, r0 adds r7, r1, 0 _0802737C: cmp r5, r6 beq _080273A4 mov r1, r12 ldr r0, [r1] adds r0, r4, r0 adds r1, r0, 0 adds r1, 0xE0 ldrb r3, [r1] adds r0, 0xE1 ldrb r0, [r0] lsls r0, 8 orrs r3, r0 cmp r3, 0 beq _080273A4 cmp r3, r9 beq _080273A4 strh r3, [r2] adds r2, 0x2 movs r0, 0x1 add r8, r0 _080273A4: adds r4, 0x2 adds r5, 0x1 cmp r5, r7 blt _0802737C _080273AC: ldr r1, _080273E8 @ =sBattler_AI ldrb r0, [r1] mov r2, r10 ldr r1, [r2] lsls r0, 1 adds r0, r1 adds r1, r0, 0 adds r1, 0x98 ldrb r3, [r1] adds r0, 0x99 ldrb r0, [r0] lsls r0, 8 orrs r3, r0 cmp r3, 0 beq _080273FC ldr r0, _080273EC @ =0x0000ffff cmp r3, r0 beq _080273FC ldr r2, _080273F0 @ =gUnknown_2023DD0 ldr r0, [r2] ldr r1, _080273F4 @ =0xfffffbff ands r0, r1 str r0, [r2] ldr r4, _080273F8 @ =gCurrentMove strh r3, [r4] b _08027426 .align 2, 0 _080273E0: .4byte gBattlersCount _080273E4: .4byte gBattleStruct _080273E8: .4byte sBattler_AI _080273EC: .4byte 0x0000ffff _080273F0: .4byte gUnknown_2023DD0 _080273F4: .4byte 0xfffffbff _080273F8: .4byte gCurrentMove _080273FC: mov r0, r8 cmp r0, 0 beq _0802746C ldr r2, _08027450 @ =gUnknown_2023DD0 ldr r0, [r2] ldr r1, _08027454 @ =0xfffffbff ands r0, r1 str r0, [r2] bl Random lsls r0, 16 lsrs r0, 16 mov r1, r8 bl __modsi3 adds r5, r0, 0 ldr r4, _08027458 @ =gCurrentMove lsls r0, r5, 1 add r0, sp ldrh r0, [r0] strh r0, [r4] _08027426: ldrh r0, [r4] movs r1, 0 bl GetMoveTarget ldr r1, _0802745C @ =gBattlerTarget strb r0, [r1] ldr r5, _08027460 @ =gUnknown_2023D74 ldr r3, _08027464 @ =gUnknown_81D65A8 ldr r2, _08027468 @ =gBattleMoves ldrh r1, [r4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0] lsls r0, 2 adds r0, r3 ldr r0, [r0] str r0, [r5] b _0802748A .align 2, 0 _08027450: .4byte gUnknown_2023DD0 _08027454: .4byte 0xfffffbff _08027458: .4byte gCurrentMove _0802745C: .4byte gBattlerTarget _08027460: .4byte gUnknown_2023D74 _08027464: .4byte gUnknown_81D65A8 _08027468: .4byte gBattleMoves _0802746C: ldr r2, _0802749C @ =gUnknown_2023ECC ldr r0, _080274A0 @ =sBattler_AI ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r2, 0x20 orrs r1, r2 strb r1, [r0] ldr r1, _080274A4 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] _0802748A: add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802749C: .4byte gUnknown_2023ECC _080274A0: .4byte sBattler_AI _080274A4: .4byte gUnknown_2023D74 thumb_func_end atk7C_trymirrormove thumb_func_start atk7D_setrain atk7D_setrain: @ 80274A8 push {lr} ldr r2, _080274C8 @ =gBattleWeather ldrh r0, [r2] movs r1, 0x7 ands r1, r0 cmp r1, 0 beq _080274D4 ldr r2, _080274CC @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r1, _080274D0 @ =gUnknown_2023E82 movs r0, 0x2 strb r0, [r1, 0x5] b _080274E4 .align 2, 0 _080274C8: .4byte gBattleWeather _080274CC: .4byte gMoveResultFlags _080274D0: .4byte gUnknown_2023E82 _080274D4: movs r0, 0x1 strh r0, [r2] ldr r0, _080274F0 @ =gUnknown_2023E82 strb r1, [r0, 0x5] ldr r0, _080274F4 @ =gUnknown_2023F20 adds r0, 0x28 movs r1, 0x5 strb r1, [r0] _080274E4: ldr r1, _080274F8 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _080274F0: .4byte gUnknown_2023E82 _080274F4: .4byte gUnknown_2023F20 _080274F8: .4byte gUnknown_2023D74 thumb_func_end atk7D_setrain thumb_func_start atk7E_setreflect atk7E_setreflect: @ 80274FC push {r4-r6,lr} ldr r6, _0802752C @ =sBattler_AI ldrb r0, [r6] bl GetBattlerPosition ldr r4, _08027530 @ =gSideAffecting movs r5, 0x1 adds r1, r5, 0 ands r1, r0 lsls r1, 1 adds r1, r4 ldrh r1, [r1] adds r0, r5, 0 ands r0, r1 cmp r0, 0 beq _0802753C ldr r2, _08027534 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r1, _08027538 @ =gUnknown_2023E82 movs r0, 0 b _080275B0 .align 2, 0 _0802752C: .4byte sBattler_AI _08027530: .4byte gSideAffecting _08027534: .4byte gMoveResultFlags _08027538: .4byte gUnknown_2023E82 _0802753C: ldrb r0, [r6] bl GetBattlerPosition adds r1, r5, 0 ands r1, r0 lsls r1, 1 adds r1, r4 ldrh r0, [r1] movs r2, 0x1 orrs r0, r2 strh r0, [r1] ldrb r0, [r6] bl GetBattlerPosition ldr r4, _080275A0 @ =gSideTimers adds r1, r5, 0 ands r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r4 movs r1, 0x5 strb r1, [r0] ldrb r0, [r6] bl GetBattlerPosition adds r1, r5, 0 ands r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r4 ldrb r1, [r6] strb r1, [r0, 0x1] ldr r0, _080275A4 @ =gBattleTypeFlags ldr r0, [r0] ands r0, r5 cmp r0, 0 beq _080275AC movs r0, 0x1 bl CountAliveMonsInBattle lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x2 bne _080275AC ldr r0, _080275A8 @ =gUnknown_2023E82 strb r1, [r0, 0x5] b _080275B2 .align 2, 0 _080275A0: .4byte gSideTimers _080275A4: .4byte gBattleTypeFlags _080275A8: .4byte gUnknown_2023E82 _080275AC: ldr r1, _080275C0 @ =gUnknown_2023E82 movs r0, 0x1 _080275B0: strb r0, [r1, 0x5] _080275B2: ldr r1, _080275C4 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080275C0: .4byte gUnknown_2023E82 _080275C4: .4byte gUnknown_2023D74 thumb_func_end atk7E_setreflect thumb_func_start atk7F_setseeded atk7F_setseeded: @ 80275C8 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} ldr r7, _08027608 @ =gMoveResultFlags ldrb r5, [r7] movs r0, 0x29 ands r0, r5 cmp r0, 0 bne _080275FA ldr r0, _0802760C @ =gStatuses3 mov r9, r0 ldr r1, _08027610 @ =gBattlerTarget mov r8, r1 ldrb r4, [r1] lsls r0, r4, 2 mov r2, r9 adds r6, r0, r2 ldr r2, [r6] movs r0, 0x4 mov r12, r0 adds r3, r2, 0 ands r3, r0 cmp r3, 0 beq _08027618 _080275FA: movs r0, 0x1 orrs r0, r5 strb r0, [r7] ldr r1, _08027614 @ =gUnknown_2023E82 movs r0, 0x1 strb r0, [r1, 0x5] b _08027668 .align 2, 0 _08027608: .4byte gMoveResultFlags _0802760C: .4byte gStatuses3 _08027610: .4byte gBattlerTarget _08027614: .4byte gUnknown_2023E82 _08027618: ldr r1, _08027644 @ =gBattleMons movs r0, 0x58 muls r0, r4 adds r1, r0, r1 adds r0, r1, 0 adds r0, 0x21 ldrb r0, [r0] cmp r0, 0xC beq _08027634 adds r0, r1, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0xC bne _0802764C _08027634: movs r0, 0x1 orrs r0, r5 strb r0, [r7] ldr r1, _08027648 @ =gUnknown_2023E82 movs r0, 0x2 strb r0, [r1, 0x5] b _08027668 .align 2, 0 _08027644: .4byte gBattleMons _08027648: .4byte gUnknown_2023E82 _0802764C: ldr r0, _0802767C @ =sBattler_AI ldrb r0, [r0] orrs r2, r0 str r2, [r6] mov r2, r8 ldrb r1, [r2] lsls r1, 2 add r1, r9 ldr r0, [r1] mov r2, r12 orrs r0, r2 str r0, [r1] ldr r0, _08027680 @ =gUnknown_2023E82 strb r3, [r0, 0x5] _08027668: ldr r1, _08027684 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802767C: .4byte sBattler_AI _08027680: .4byte gUnknown_2023E82 _08027684: .4byte gUnknown_2023D74 thumb_func_end atk7F_setseeded thumb_func_start atk80_manipulatedamage atk80_manipulatedamage: @ 8027688 push {r4,lr} ldr r1, _080276A0 @ =gUnknown_2023D74 ldr r0, [r1] ldrb r2, [r0, 0x1] adds r4, r1, 0 cmp r2, 0x1 beq _080276B8 cmp r2, 0x1 bgt _080276A4 cmp r2, 0 beq _080276AA b _080276F8 .align 2, 0 _080276A0: .4byte gUnknown_2023D74 _080276A4: cmp r2, 0x2 beq _080276F0 b _080276F8 _080276AA: ldr r1, _080276B4 @ =gBattleMoveDamage ldr r0, [r1] negs r0, r0 b _080276F6 .align 2, 0 _080276B4: .4byte gBattleMoveDamage _080276B8: ldr r3, _080276E4 @ =gBattleMoveDamage ldr r0, [r3] lsrs r1, r0, 31 adds r0, r1 asrs r0, 1 str r0, [r3] cmp r0, 0 bne _080276CA str r2, [r3] _080276CA: ldr r2, _080276E8 @ =gBattleMons ldr r0, _080276EC @ =gBattlerTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r0, [r0, 0x2C] lsrs r1, r0, 1 ldr r0, [r3] cmp r1, r0 bge _080276F8 str r1, [r3] b _080276F8 .align 2, 0 _080276E4: .4byte gBattleMoveDamage _080276E8: .4byte gBattleMons _080276EC: .4byte gBattlerTarget _080276F0: ldr r1, _08027704 @ =gBattleMoveDamage ldr r0, [r1] lsls r0, 1 _080276F6: str r0, [r1] _080276F8: ldr r0, [r4] adds r0, 0x2 str r0, [r4] pop {r4} pop {r0} bx r0 .align 2, 0 _08027704: .4byte gBattleMoveDamage thumb_func_end atk80_manipulatedamage thumb_func_start atk81_trysetrest atk81_trysetrest: @ 8027708 push {r4-r7,lr} sub sp, 0x4 ldr r0, _08027760 @ =gUnknown_2023D74 mov r12, r0 ldr r1, [r0] ldrb r6, [r1, 0x1] ldrb r0, [r1, 0x2] lsls r0, 8 orrs r6, r0 ldrb r0, [r1, 0x3] lsls r0, 16 orrs r6, r0 ldrb r0, [r1, 0x4] lsls r0, 24 orrs r6, r0 ldr r5, _08027764 @ =gActiveBattler ldr r2, _08027768 @ =gBattlerTarget ldr r0, _0802776C @ =sBattler_AI ldrb r0, [r0] strb r0, [r2] strb r0, [r5] ldr r4, _08027770 @ =gBattleMoveDamage ldr r1, _08027774 @ =gBattleMons ldrb r0, [r2] movs r3, 0x58 muls r0, r3 adds r0, r1 ldrh r0, [r0, 0x2C] negs r0, r0 str r0, [r4] ldrb r0, [r2] adds r4, r0, 0 muls r4, r3 adds r0, r4, r1 ldrh r3, [r0, 0x28] adds r7, r5, 0 adds r5, r2, 0 adds r2, r1, 0 ldrh r0, [r0, 0x2C] cmp r3, r0 bne _08027778 mov r0, r12 str r6, [r0] b _080277C8 .align 2, 0 _08027760: .4byte gUnknown_2023D74 _08027764: .4byte gActiveBattler _08027768: .4byte gBattlerTarget _0802776C: .4byte sBattler_AI _08027770: .4byte gBattleMoveDamage _08027774: .4byte gBattleMons _08027778: adds r0, r2, 0 adds r0, 0x4C adds r0, r4, r0 ldr r1, [r0] movs r0, 0xF8 ands r1, r0 cmp r1, 0 beq _08027794 ldr r1, _08027790 @ =gUnknown_2023E82 movs r0, 0x1 strb r0, [r1, 0x5] b _08027798 .align 2, 0 _08027790: .4byte gUnknown_2023E82 _08027794: ldr r0, _080277D0 @ =gUnknown_2023E82 strb r1, [r0, 0x5] _08027798: ldrb r0, [r5] movs r3, 0x58 muls r0, r3 adds r2, 0x4C adds r0, r2 movs r1, 0x3 str r1, [r0] ldrb r0, [r7] muls r0, r3 adds r0, r2 str r0, [sp] movs r0, 0 movs r1, 0x28 movs r2, 0 movs r3, 0x4 bl EmitSetMonData ldrb r0, [r7] bl MarkBufferBankForExecution ldr r1, _080277D4 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] _080277C8: add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080277D0: .4byte gUnknown_2023E82 _080277D4: .4byte gUnknown_2023D74 thumb_func_end atk81_trysetrest thumb_func_start atk82_jumpifnotfirstturn atk82_jumpifnotfirstturn: @ 80277D8 push {r4,r5,lr} ldr r5, _0802780C @ =gUnknown_2023D74 ldr r4, [r5] ldrb r3, [r4, 0x1] ldrb r0, [r4, 0x2] lsls r0, 8 orrs r3, r0 ldrb r0, [r4, 0x3] lsls r0, 16 orrs r3, r0 ldrb r0, [r4, 0x4] lsls r0, 24 orrs r3, r0 ldr r2, _08027810 @ =gDisableStructs ldr r0, _08027814 @ =sBattler_AI ldrb r1, [r0] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x16] cmp r0, 0 beq _08027818 adds r0, r4, 0x5 str r0, [r5] b _0802781A .align 2, 0 _0802780C: .4byte gUnknown_2023D74 _08027810: .4byte gDisableStructs _08027814: .4byte sBattler_AI _08027818: str r3, [r5] _0802781A: pop {r4,r5} pop {r0} bx r0 thumb_func_end atk82_jumpifnotfirstturn thumb_func_start atk83_nop atk83_nop: @ 8027820 ldr r1, _0802782C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] bx lr .align 2, 0 _0802782C: .4byte gUnknown_2023D74 thumb_func_end atk83_nop thumb_func_start UproarWakeUpCheck UproarWakeUpCheck: @ 8027830 push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 24 lsrs r3, r0, 24 movs r2, 0 ldr r0, _08027888 @ =gBattlersCount ldrb r1, [r0] mov r8, r0 cmp r2, r1 bge _080278A4 ldr r0, _0802788C @ =gBattleMons mov r12, r0 movs r0, 0x58 muls r0, r3 add r0, r12 adds r5, r0, 0 adds r5, 0x20 adds r4, r1, 0 movs r3, 0 ldr r6, _08027890 @ =gBattleScripting ldr r7, _08027894 @ =gUnknown_2023E82 _0802785C: mov r0, r12 adds r0, 0x50 adds r0, r3, r0 ldr r0, [r0] movs r1, 0x70 ands r0, r1 cmp r0, 0 beq _0802789C ldrb r0, [r5] cmp r0, 0x2B beq _0802789C movs r3, 0 strb r2, [r6, 0x17] ldr r1, _08027898 @ =gBattlerTarget ldrb r0, [r1] cmp r0, 0xFF beq _080278BC cmp r0, r2 beq _080278B0 movs r0, 0x1 strb r0, [r7, 0x5] b _080278A4 .align 2, 0 _08027888: .4byte gBattlersCount _0802788C: .4byte gBattleMons _08027890: .4byte gBattleScripting _08027894: .4byte gUnknown_2023E82 _08027898: .4byte gBattlerTarget _0802789C: adds r3, 0x58 adds r2, 0x1 cmp r2, r4 blt _0802785C _080278A4: mov r1, r8 ldrb r1, [r1] cmp r2, r1 beq _080278C0 movs r0, 0x1 b _080278C2 _080278B0: ldr r0, _080278B8 @ =gUnknown_2023E82 strb r3, [r0, 0x5] b _080278A4 .align 2, 0 _080278B8: .4byte gUnknown_2023E82 _080278BC: strb r2, [r1] b _080278A4 _080278C0: movs r0, 0 _080278C2: pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 thumb_func_end UproarWakeUpCheck thumb_func_start atk84_jumpifcantmakeasleep atk84_jumpifcantmakeasleep: @ 80278CC push {r4-r6,lr} ldr r5, _080278F8 @ =gUnknown_2023D74 ldr r1, [r5] ldrb r4, [r1, 0x1] ldrb r0, [r1, 0x2] lsls r0, 8 orrs r4, r0 ldrb r0, [r1, 0x3] lsls r0, 16 orrs r4, r0 ldrb r0, [r1, 0x4] lsls r0, 24 orrs r4, r0 ldr r6, _080278FC @ =gBattlerTarget ldrb r0, [r6] bl UproarWakeUpCheck lsls r0, 24 cmp r0, 0 beq _08027900 str r4, [r5] b _08027942 .align 2, 0 _080278F8: .4byte gUnknown_2023D74 _080278FC: .4byte gBattlerTarget _08027900: ldr r1, _08027930 @ =gBattleMons ldrb r3, [r6] movs r0, 0x58 muls r0, r3 adds r0, r1 adds r0, 0x20 ldrb r0, [r0] adds r1, r0, 0 cmp r1, 0xF beq _08027918 cmp r1, 0x48 bne _0802793C _08027918: ldr r2, _08027934 @ =gLastUsedAbility strb r0, [r2] ldr r1, _08027938 @ =gUnknown_2023E82 movs r0, 0x2 strb r0, [r1, 0x5] str r4, [r5] ldrb r1, [r2] adds r0, r3, 0 bl sub_80C71D0 b _08027942 .align 2, 0 _08027930: .4byte gBattleMons _08027934: .4byte gLastUsedAbility _08027938: .4byte gUnknown_2023E82 _0802793C: ldr r0, [r5] adds r0, 0x5 str r0, [r5] _08027942: pop {r4-r6} pop {r0} bx r0 thumb_func_end atk84_jumpifcantmakeasleep thumb_func_start atk85_stockpile atk85_stockpile: @ 8027948 push {r4,r5,lr} ldr r5, _08027970 @ =gDisableStructs ldr r4, _08027974 @ =sBattler_AI ldrb r1, [r4] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r1, r0, r5 ldrb r0, [r1, 0x9] cmp r0, 0x3 bne _08027980 ldr r2, _08027978 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r1, _0802797C @ =gUnknown_2023E82 movs r0, 0x1 strb r0, [r1, 0x5] b _080279AA .align 2, 0 _08027970: .4byte gDisableStructs _08027974: .4byte sBattler_AI _08027978: .4byte gMoveResultFlags _0802797C: .4byte gUnknown_2023E82 _08027980: adds r0, 0x1 movs r3, 0 strb r0, [r1, 0x9] ldr r2, _080279B8 @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r2] movs r0, 0x1 strb r0, [r2, 0x1] strb r0, [r2, 0x2] strb r0, [r2, 0x3] ldrb r1, [r4] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r5 ldrb r0, [r0, 0x9] strb r0, [r2, 0x4] movs r0, 0xFF strb r0, [r2, 0x5] ldr r0, _080279BC @ =gUnknown_2023E82 strb r3, [r0, 0x5] _080279AA: ldr r1, _080279C0 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080279B8: .4byte gBattleTextBuff1 _080279BC: .4byte gUnknown_2023E82 _080279C0: .4byte gUnknown_2023D74 thumb_func_end atk85_stockpile thumb_func_start atk86_stockpiletobasedamage atk86_stockpiletobasedamage: @ 80279C4 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x10 ldr r3, _080279FC @ =gUnknown_2023D74 ldr r1, [r3] ldrb r2, [r1, 0x1] ldrb r0, [r1, 0x2] lsls r0, 8 orrs r2, r0 ldrb r0, [r1, 0x3] lsls r0, 16 orrs r2, r0 ldrb r0, [r1, 0x4] lsls r0, 24 orrs r2, r0 ldr r7, _08027A00 @ =gDisableStructs ldr r6, _08027A04 @ =sBattler_AI ldrb r1, [r6] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r7 ldrb r0, [r0, 0x9] cmp r0, 0 bne _08027A08 str r2, [r3] b _08027AAA .align 2, 0 _080279FC: .4byte gUnknown_2023D74 _08027A00: .4byte gDisableStructs _08027A04: .4byte sBattler_AI _08027A08: ldr r0, _08027AB8 @ =gUnknown_2023E82 ldrb r0, [r0, 0x6] cmp r0, 0x1 beq _08027A90 ldr r0, _08027ABC @ =gBattleMoveDamage mov r8, r0 ldr r4, _08027AC0 @ =gSideAffecting ldr r5, _08027AC4 @ =gBattlerTarget ldrb r0, [r5] bl GetBattlerPosition movs r1, 0x1 ands r1, r0 lsls r1, 1 adds r1, r4 ldrh r3, [r1] ldrb r0, [r6] movs r4, 0x58 muls r0, r4 ldr r2, _08027AC8 @ =gBattleMons adds r0, r2 ldrb r1, [r5] muls r1, r4 adds r1, r2 ldr r2, _08027ACC @ =gCurrentMove ldrh r2, [r2] movs r4, 0 str r4, [sp] str r4, [sp, 0x4] ldrb r4, [r6] str r4, [sp, 0x8] ldrb r4, [r5] str r4, [sp, 0xC] bl CalculateBaseDamage ldrb r2, [r6] lsls r1, r2, 3 subs r1, r2 lsls r1, 2 adds r1, r7 ldrb r1, [r1, 0x9] adds r3, r0, 0 muls r3, r1 mov r1, r8 str r3, [r1] ldr r2, _08027AD0 @ =gBattleScripting ldrb r1, [r6] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r7 ldrb r0, [r0, 0x9] strb r0, [r2, 0x18] ldr r1, _08027AD4 @ =gUnknown_2023E8C ldrb r0, [r6] lsls r0, 4 adds r0, r1 ldrb r0, [r0] lsls r0, 28 cmp r0, 0 bge _08027A90 lsls r0, r3, 4 subs r0, r3 movs r1, 0xA bl __divsi3 mov r1, r8 str r0, [r1] _08027A90: ldr r2, _08027AD8 @ =gDisableStructs ldr r0, _08027ADC @ =sBattler_AI ldrb r1, [r0] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0 strb r1, [r0, 0x9] ldr r1, _08027AE0 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] _08027AAA: add sp, 0x10 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08027AB8: .4byte gUnknown_2023E82 _08027ABC: .4byte gBattleMoveDamage _08027AC0: .4byte gSideAffecting _08027AC4: .4byte gBattlerTarget _08027AC8: .4byte gBattleMons _08027ACC: .4byte gCurrentMove _08027AD0: .4byte gBattleScripting _08027AD4: .4byte gUnknown_2023E8C _08027AD8: .4byte gDisableStructs _08027ADC: .4byte sBattler_AI _08027AE0: .4byte gUnknown_2023D74 thumb_func_end atk86_stockpiletobasedamage thumb_func_start atk87_stockpiletohpheal atk87_stockpiletohpheal: @ 8027AE4 push {r4-r7,lr} mov r7, r8 push {r7} ldr r7, _08027B24 @ =gUnknown_2023D74 ldr r1, [r7] ldrb r2, [r1, 0x1] ldrb r0, [r1, 0x2] lsls r0, 8 orrs r2, r0 ldrb r0, [r1, 0x3] lsls r0, 16 orrs r2, r0 ldrb r0, [r1, 0x4] lsls r0, 24 orrs r2, r0 ldr r0, _08027B28 @ =gDisableStructs mov r8, r0 ldr r6, _08027B2C @ =sBattler_AI ldrb r3, [r6] lsls r0, r3, 3 subs r0, r3 lsls r0, 2 mov r1, r8 adds r4, r0, r1 ldrb r1, [r4, 0x9] cmp r1, 0 bne _08027B34 str r2, [r7] ldr r0, _08027B30 @ =gUnknown_2023E82 strb r1, [r0, 0x5] b _08027BB0 .align 2, 0 _08027B24: .4byte gUnknown_2023D74 _08027B28: .4byte gDisableStructs _08027B2C: .4byte sBattler_AI _08027B30: .4byte gUnknown_2023E82 _08027B34: ldr r1, _08027B58 @ =gBattleMons movs r0, 0x58 muls r0, r3 adds r1, r0, r1 ldrh r0, [r1, 0x2C] ldrh r3, [r1, 0x28] cmp r0, r3 bne _08027B64 movs r0, 0 strb r0, [r4, 0x9] str r2, [r7] ldr r1, _08027B5C @ =gBattlerTarget ldrb r0, [r6] strb r0, [r1] ldr r1, _08027B60 @ =gUnknown_2023E82 movs r0, 0x1 strb r0, [r1, 0x5] b _08027BB0 .align 2, 0 _08027B58: .4byte gBattleMons _08027B5C: .4byte gBattlerTarget _08027B60: .4byte gUnknown_2023E82 _08027B64: ldr r5, _08027BBC @ =gBattleMoveDamage ldrh r0, [r1, 0x2C] ldrb r1, [r4, 0x9] movs r2, 0x3 subs r2, r1 movs r4, 0x1 adds r1, r4, 0 lsls r1, r2 bl __divsi3 str r0, [r5] cmp r0, 0 bne _08027B80 str r4, [r5] _08027B80: ldr r0, [r5] negs r0, r0 str r0, [r5] ldr r3, _08027BC0 @ =gBattleScripting ldrb r1, [r6] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 add r0, r8 ldrb r0, [r0, 0x9] movs r2, 0 strb r0, [r3, 0x18] ldrb r1, [r6] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 add r0, r8 strb r2, [r0, 0x9] ldr r0, [r7] adds r0, 0x5 str r0, [r7] ldr r1, _08027BC4 @ =gBattlerTarget ldrb r0, [r6] strb r0, [r1] _08027BB0: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08027BBC: .4byte gBattleMoveDamage _08027BC0: .4byte gBattleScripting _08027BC4: .4byte gBattlerTarget thumb_func_end atk87_stockpiletohpheal thumb_func_start atk88_negativedamage atk88_negativedamage: @ 8027BC8 push {lr} ldr r2, _08027BF0 @ =gBattleMoveDamage ldr r0, _08027BF4 @ =gUnknown_2023D54 ldr r0, [r0] lsrs r1, r0, 31 adds r0, r1 asrs r0, 1 negs r0, r0 str r0, [r2] cmp r0, 0 bne _08027BE4 movs r0, 0x1 negs r0, r0 str r0, [r2] _08027BE4: ldr r1, _08027BF8 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _08027BF0: .4byte gBattleMoveDamage _08027BF4: .4byte gUnknown_2023D54 _08027BF8: .4byte gUnknown_2023D74 thumb_func_end atk88_negativedamage thumb_func_start ChangeStatBuffs ChangeStatBuffs: @ 8027BFC push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} mov r8, r3 lsls r0, 24 lsrs r6, r0, 24 lsls r1, 24 lsrs r7, r1, 24 lsls r2, 24 lsrs r5, r2, 24 movs r0, 0 mov r9, r0 mov r10, r0 movs r0, 0x40 ands r0, r5 cmp r0, 0 beq _08027C30 ldr r0, _08027C28 @ =gActiveBattler ldr r1, _08027C2C @ =sBattler_AI b _08027C34 .align 2, 0 _08027C28: .4byte gActiveBattler _08027C2C: .4byte sBattler_AI _08027C30: ldr r0, _08027CD4 @ =gActiveBattler ldr r1, _08027CD8 @ =gBattlerTarget _08027C34: ldrb r1, [r1] strb r1, [r0] movs r0, 0xBF ands r5, r0 movs r0, 0x80 ands r0, r5 cmp r0, 0 beq _08027C4E mov r0, r9 adds r0, 0x1 lsls r0, 24 lsrs r0, 24 mov r9, r0 _08027C4E: movs r0, 0x7F ands r5, r0 movs r0, 0x20 ands r0, r5 cmp r0, 0 beq _08027C64 mov r0, r10 adds r0, 0x1 lsls r0, 24 lsrs r0, 24 mov r10, r0 _08027C64: movs r0, 0xDF ands r5, r0 ldr r1, _08027CDC @ =gBattleTextBuff1 movs r4, 0 movs r2, 0xFD strb r2, [r1] movs r0, 0x5 strb r0, [r1, 0x1] strb r7, [r1, 0x2] movs r3, 0x1 negs r3, r3 mov r12, r3 movs r0, 0xFF strb r0, [r1, 0x3] lsls r0, r6, 24 cmp r0, 0 blt _08027C88 b _08027F6C _08027C88: ldr r4, _08027CE0 @ =gSideTimers ldr r1, _08027CD4 @ =gActiveBattler ldrb r0, [r1] bl GetBattlerPosition movs r1, 0x1 ands r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r4 ldrb r0, [r0, 0x4] cmp r0, 0 beq _08027D28 mov r2, r9 cmp r2, 0 bne _08027D28 ldr r0, _08027CE4 @ =gCurrentMove ldrh r0, [r0] cmp r0, 0xAE beq _08027D58 cmp r5, 0x1 bne _08027D48 ldr r4, _08027CE8 @ =gUnknown_2023ECC ldr r3, _08027CD4 @ =gActiveBattler ldrb r0, [r3] lsls r1, r0, 2 adds r1, r0 lsls r1, 2 adds r1, r4 ldrb r0, [r1] lsls r0, 31 cmp r0, 0 beq _08027CF0 ldr r0, _08027CEC @ =gUnknown_2023D74 mov r4, r8 str r4, [r0] b _08027D48 .align 2, 0 _08027CD4: .4byte gActiveBattler _08027CD8: .4byte gBattlerTarget _08027CDC: .4byte gBattleTextBuff1 _08027CE0: .4byte gSideTimers _08027CE4: .4byte gCurrentMove _08027CE8: .4byte gUnknown_2023ECC _08027CEC: .4byte gUnknown_2023D74 _08027CF0: mov r0, r8 bl BattleScriptPush ldr r1, _08027D18 @ =gBattleScripting ldr r6, _08027D1C @ =gActiveBattler ldrb r0, [r6] strb r0, [r1, 0x17] ldr r1, _08027D20 @ =gUnknown_2023D74 ldr r0, _08027D24 @ =gUnknown_81D8C3E str r0, [r1] ldrb r1, [r6] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r4 ldrb r1, [r0] movs r2, 0x1 orrs r1, r2 strb r1, [r0] b _08027D48 .align 2, 0 _08027D18: .4byte gBattleScripting _08027D1C: .4byte gActiveBattler _08027D20: .4byte gUnknown_2023D74 _08027D24: .4byte gUnknown_81D8C3E _08027D28: ldr r0, _08027D4C @ =gCurrentMove ldrh r0, [r0] cmp r0, 0xAE beq _08027D58 mov r0, r10 cmp r0, 0x1 beq _08027D58 movs r0, 0 bl JumpIfMoveAffectedByProtect lsls r0, 24 cmp r0, 0 beq _08027D58 ldr r1, _08027D50 @ =gUnknown_2023D74 ldr r0, _08027D54 @ =gUnknown_81D7DF2 str r0, [r1] _08027D48: movs r0, 0x1 b _08028060 .align 2, 0 _08027D4C: .4byte gCurrentMove _08027D50: .4byte gUnknown_2023D74 _08027D54: .4byte gUnknown_81D7DF2 _08027D58: ldr r2, _08027DA0 @ =gBattleMons ldr r1, _08027DA4 @ =gActiveBattler ldrb r3, [r1] movs r4, 0x58 adds r0, r3, 0 muls r0, r4 adds r0, r2 adds r0, 0x20 ldrb r0, [r0] mov r10, r2 cmp r0, 0x1D beq _08027D74 cmp r0, 0x49 bne _08027E0C _08027D74: mov r0, r9 cmp r0, 0 bne _08027E0C ldr r0, _08027DA8 @ =gCurrentMove ldrh r0, [r0] cmp r0, 0xAE beq _08027E0C cmp r5, 0x1 bne _08027D48 ldr r4, _08027DAC @ =gUnknown_2023ECC lsls r0, r3, 2 adds r0, r3 lsls r0, 2 adds r0, r4 ldrb r0, [r0] lsls r0, 31 cmp r0, 0 beq _08027DB4 ldr r0, _08027DB0 @ =gUnknown_2023D74 mov r1, r8 str r1, [r0] b _08027D48 .align 2, 0 _08027DA0: .4byte gBattleMons _08027DA4: .4byte gActiveBattler _08027DA8: .4byte gCurrentMove _08027DAC: .4byte gUnknown_2023ECC _08027DB0: .4byte gUnknown_2023D74 _08027DB4: mov r0, r8 bl BattleScriptPush ldr r1, _08027DF8 @ =gBattleScripting ldr r2, _08027DFC @ =gActiveBattler ldrb r0, [r2] strb r0, [r1, 0x17] ldr r1, _08027E00 @ =gUnknown_2023D74 ldr r0, _08027E04 @ =gUnknown_81D9416 str r0, [r1] ldr r1, _08027E08 @ =gLastUsedAbility ldrb r0, [r2] movs r3, 0x58 muls r0, r3 add r0, r10 adds r0, 0x20 ldrb r0, [r0] strb r0, [r1] ldrb r0, [r2] ldrb r1, [r1] bl sub_80C71D0 ldr r6, _08027DFC @ =gActiveBattler ldrb r1, [r6] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r4 ldrb r1, [r0] movs r2, 0x1 orrs r1, r2 strb r1, [r0] b _08027D48 .align 2, 0 _08027DF8: .4byte gBattleScripting _08027DFC: .4byte gActiveBattler _08027E00: .4byte gUnknown_2023D74 _08027E04: .4byte gUnknown_81D9416 _08027E08: .4byte gLastUsedAbility _08027E0C: ldr r1, _08027E58 @ =gActiveBattler ldrb r0, [r1] movs r4, 0x58 muls r0, r4 add r0, r10 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x33 bne _08027E6C mov r2, r9 cmp r2, 0 bne _08027E6C cmp r7, 0x6 bne _08027E6C cmp r5, 0x1 bne _08027D48 mov r0, r8 bl BattleScriptPush ldr r1, _08027E5C @ =gBattleScripting ldr r3, _08027E58 @ =gActiveBattler ldrb r0, [r3] strb r0, [r1, 0x17] ldr r1, _08027E60 @ =gUnknown_2023D74 ldr r0, _08027E64 @ =gUnknown_81D947E str r0, [r1] ldr r1, _08027E68 @ =gLastUsedAbility ldrb r0, [r3] muls r0, r4 add r0, r10 adds r0, 0x20 ldrb r0, [r0] strb r0, [r1] ldrb r0, [r3] ldrb r1, [r1] bl sub_80C71D0 b _08027D48 .align 2, 0 _08027E58: .4byte gActiveBattler _08027E5C: .4byte gBattleScripting _08027E60: .4byte gUnknown_2023D74 _08027E64: .4byte gUnknown_81D947E _08027E68: .4byte gLastUsedAbility _08027E6C: ldr r4, _08027EBC @ =gActiveBattler ldrb r0, [r4] movs r4, 0x58 muls r0, r4 add r0, r10 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x34 bne _08027ED0 mov r0, r9 cmp r0, 0 bne _08027ED0 cmp r7, 0x1 bne _08027ED0 cmp r5, 0x1 beq _08027E8E b _08027D48 _08027E8E: mov r0, r8 bl BattleScriptPush ldr r1, _08027EC0 @ =gBattleScripting ldr r2, _08027EBC @ =gActiveBattler ldrb r0, [r2] strb r0, [r1, 0x17] ldr r1, _08027EC4 @ =gUnknown_2023D74 ldr r0, _08027EC8 @ =gUnknown_81D947E str r0, [r1] ldr r1, _08027ECC @ =gLastUsedAbility ldrb r0, [r2] muls r0, r4 add r0, r10 adds r0, 0x20 ldrb r0, [r0] strb r0, [r1] ldrb r0, [r2] ldrb r1, [r1] bl sub_80C71D0 b _08027D48 .align 2, 0 _08027EBC: .4byte gActiveBattler _08027EC0: .4byte gBattleScripting _08027EC4: .4byte gUnknown_2023D74 _08027EC8: .4byte gUnknown_81D947E _08027ECC: .4byte gLastUsedAbility _08027ED0: ldr r3, _08027F5C @ =gActiveBattler ldrb r1, [r3] movs r0, 0x58 muls r0, r1 add r0, r10 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x13 bne _08027EE8 cmp r5, 0 bne _08027EE8 b _08027D48 _08027EE8: lsls r0, r6, 24 asrs r0, 28 movs r1, 0x7 ands r0, r1 negs r0, r0 lsls r0, 24 ldr r3, _08027F60 @ =gBattleTextBuff2 movs r4, 0 movs r1, 0xFD strb r1, [r3] movs r2, 0x1 lsrs r6, r0, 24 asrs r0, 24 subs r1, 0xFF cmp r0, r1 bne _08027F12 strb r4, [r3, 0x1] movs r0, 0xD3 strb r0, [r3, 0x2] strb r4, [r3, 0x3] movs r2, 0x4 _08027F12: adds r0, r2, r3 strb r4, [r0] adds r2, 0x1 adds r1, r2, r3 movs r0, 0xD4 strb r0, [r1] adds r2, 0x1 adds r0, r2, r3 strb r4, [r0] adds r2, 0x1 adds r1, r2, r3 movs r0, 0xFF strb r0, [r1] ldr r4, _08027F5C @ =gActiveBattler ldrb r2, [r4] movs r0, 0x58 muls r0, r2 adds r0, r7, r0 mov r1, r10 adds r1, 0x18 adds r0, r1 ldrb r0, [r0] lsls r0, 24 asrs r0, 24 cmp r0, 0 beq _08027FC2 movs r1, 0 ldr r0, _08027F64 @ =gBattlerTarget ldrb r0, [r0] ldr r3, _08027F68 @ =gUnknown_2023E82 mov r8, r3 cmp r0, r2 bne _08027F56 movs r1, 0x1 _08027F56: mov r4, r8 strb r1, [r4, 0x5] b _08027FF0 .align 2, 0 _08027F5C: .4byte gActiveBattler _08027F60: .4byte gBattleTextBuff2 _08027F64: .4byte gBattlerTarget _08027F68: .4byte gUnknown_2023E82 _08027F6C: asrs r6, r0, 28 movs r0, 0x7 ands r6, r0 ldr r3, _08027FCC @ =gBattleTextBuff2 strb r2, [r3] movs r2, 0x1 cmp r6, 0x2 bne _08027F86 strb r4, [r3, 0x1] movs r0, 0xD1 strb r0, [r3, 0x2] strb r4, [r3, 0x3] movs r2, 0x4 _08027F86: adds r0, r2, r3 strb r4, [r0] adds r2, 0x1 adds r1, r2, r3 movs r0, 0xD2 strb r0, [r1] adds r2, 0x1 adds r0, r2, r3 strb r4, [r0] adds r2, 0x1 adds r1, r2, r3 ldrb r0, [r1] mov r2, r12 orrs r0, r2 strb r0, [r1] ldr r2, _08027FD0 @ =gBattleMons ldr r4, _08027FD4 @ =gActiveBattler ldrb r3, [r4] movs r0, 0x58 muls r0, r3 adds r0, r7, r0 adds r1, r2, 0 adds r1, 0x18 adds r0, r1 ldrb r0, [r0] lsls r0, 24 asrs r0, 24 mov r10, r2 cmp r0, 0xC bne _08027FDC _08027FC2: ldr r1, _08027FD8 @ =gUnknown_2023E82 movs r0, 0x2 strb r0, [r1, 0x5] mov r8, r1 b _08027FF0 .align 2, 0 _08027FCC: .4byte gBattleTextBuff2 _08027FD0: .4byte gBattleMons _08027FD4: .4byte gActiveBattler _08027FD8: .4byte gUnknown_2023E82 _08027FDC: movs r1, 0 ldr r0, _08028070 @ =gBattlerTarget ldrb r0, [r0] ldr r2, _08028074 @ =gUnknown_2023E82 mov r8, r2 cmp r0, r3 bne _08027FEC movs r1, 0x1 _08027FEC: mov r3, r8 strb r1, [r3, 0x5] _08027FF0: ldr r2, _08028078 @ =gActiveBattler ldrb r0, [r2] movs r4, 0x58 adds r1, r0, 0 muls r1, r4 adds r1, r7, r1 mov r3, r10 adds r3, 0x18 adds r1, r3 lsls r0, r6, 24 asrs r0, 24 ldrb r6, [r1] adds r0, r6 strb r0, [r1] ldrb r0, [r2] muls r0, r4 adds r0, r7, r0 adds r1, r0, r3 movs r0, 0 ldrsb r0, [r1, r0] cmp r0, 0 bge _08028020 movs r0, 0 strb r0, [r1] _08028020: ldr r1, _08028078 @ =gActiveBattler ldrb r0, [r1] muls r0, r4 adds r0, r7, r0 adds r1, r0, r3 movs r0, 0 ldrsb r0, [r1, r0] cmp r0, 0xC ble _08028036 movs r0, 0xC strb r0, [r1] _08028036: mov r2, r8 ldrb r0, [r2, 0x5] cmp r0, 0x2 bne _0802805E movs r3, 0x1 ands r3, r5 cmp r3, 0 beq _08028050 ldr r0, _0802807C @ =gMoveResultFlags ldrb r1, [r0] movs r2, 0x1 orrs r1, r2 strb r1, [r0] _08028050: mov r4, r8 ldrb r0, [r4, 0x5] cmp r0, 0x2 bne _0802805E cmp r3, 0 bne _0802805E b _08027D48 _0802805E: movs r0, 0 _08028060: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _08028070: .4byte gBattlerTarget _08028074: .4byte gUnknown_2023E82 _08028078: .4byte gActiveBattler _0802807C: .4byte gMoveResultFlags thumb_func_end ChangeStatBuffs thumb_func_start atk89_statbuffchange atk89_statbuffchange: @ 8028080 push {r4,r5,lr} ldr r5, _080280C4 @ =gUnknown_2023D74 ldr r2, [r5] ldrb r3, [r2, 0x2] ldrb r0, [r2, 0x3] lsls r0, 8 orrs r3, r0 ldrb r0, [r2, 0x4] lsls r0, 16 orrs r3, r0 ldrb r0, [r2, 0x5] lsls r0, 24 orrs r3, r0 ldr r0, _080280C8 @ =gBattleScripting ldrb r4, [r0, 0x1A] movs r0, 0xF0 ands r0, r4 lsls r0, 24 asrs r0, 24 movs r1, 0xF ands r1, r4 ldrb r2, [r2, 0x1] bl ChangeStatBuffs lsls r0, 24 cmp r0, 0 bne _080280BC ldr r0, [r5] adds r0, 0x6 str r0, [r5] _080280BC: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080280C4: .4byte gUnknown_2023D74 _080280C8: .4byte gBattleScripting thumb_func_end atk89_statbuffchange thumb_func_start atk8A_normalisebuffs atk8A_normalisebuffs: @ 80280CC push {r4-r7,lr} movs r2, 0 ldr r0, _08028114 @ =gBattlersCount ldrb r1, [r0] ldr r0, _08028118 @ =gUnknown_2023D74 mov r12, r0 cmp r2, r1 bge _08028104 ldr r0, _0802811C @ =gBattleMons movs r4, 0x6 adds r5, r1, 0 movs r7, 0x58 adds r6, r0, 0 adds r6, 0x18 _080280E8: adds r3, r2, 0x1 movs r1, 0x7 adds r0, r2, 0 muls r0, r7 adds r0, r6 adds r0, 0x7 _080280F4: strb r4, [r0] subs r0, 0x1 subs r1, 0x1 cmp r1, 0 bge _080280F4 adds r2, r3, 0 cmp r2, r5 blt _080280E8 _08028104: mov r1, r12 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08028114: .4byte gBattlersCount _08028118: .4byte gUnknown_2023D74 _0802811C: .4byte gBattleMons thumb_func_end atk8A_normalisebuffs thumb_func_start atk8B_setbide atk8B_setbide: @ 8028120 push {r4,r5,lr} ldr r4, _08028178 @ =gBattleMons ldr r3, _0802817C @ =sBattler_AI ldrb r0, [r3] movs r5, 0x58 adds r2, r0, 0 muls r2, r5 adds r4, 0x50 adds r2, r4 ldr r0, [r2] movs r1, 0x80 lsls r1, 5 orrs r0, r1 str r0, [r2] ldr r1, _08028180 @ =gUnknown_2023DB8 ldrb r0, [r3] lsls r0, 1 adds r0, r1 ldr r1, _08028184 @ =gCurrentMove ldrh r1, [r1] movs r2, 0 strh r1, [r0] ldr r1, _08028188 @ =gUnknown_2023D58 ldrb r0, [r3] lsls r0, 2 adds r0, r1 str r2, [r0] ldrb r0, [r3] adds r1, r0, 0 muls r1, r5 adds r1, r4 ldr r0, [r1] movs r2, 0x80 lsls r2, 2 orrs r0, r2 str r0, [r1] ldr r1, _0802818C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08028178: .4byte gBattleMons _0802817C: .4byte sBattler_AI _08028180: .4byte gUnknown_2023DB8 _08028184: .4byte gCurrentMove _08028188: .4byte gUnknown_2023D58 _0802818C: .4byte gUnknown_2023D74 thumb_func_end atk8B_setbide thumb_func_start atk8C_confuseifrepeatingattackends atk8C_confuseifrepeatingattackends: @ 8028190 push {lr} ldr r1, _080281C0 @ =gBattleMons ldr r0, _080281C4 @ =sBattler_AI ldrb r2, [r0] movs r0, 0x58 muls r0, r2 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0xC0 lsls r1, 4 ands r0, r1 cmp r0, 0 bne _080281B2 ldr r1, _080281C8 @ =gUnknown_2023E82 movs r0, 0x75 strb r0, [r1, 0x3] _080281B2: ldr r1, _080281CC @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _080281C0: .4byte gBattleMons _080281C4: .4byte sBattler_AI _080281C8: .4byte gUnknown_2023E82 _080281CC: .4byte gUnknown_2023D74 thumb_func_end atk8C_confuseifrepeatingattackends thumb_func_start atk8D_setmultihitcounter atk8D_setmultihitcounter: @ 80281D0 push {r4,r5,lr} ldr r0, _080281E4 @ =gUnknown_2023D74 ldr r0, [r0] ldrb r1, [r0, 0x1] cmp r1, 0 beq _080281EC ldr r0, _080281E8 @ =gUnknown_2023D72 strb r1, [r0] b _08028206 .align 2, 0 _080281E4: .4byte gUnknown_2023D74 _080281E8: .4byte gUnknown_2023D72 _080281EC: ldr r4, _08028214 @ =gUnknown_2023D72 bl Random movs r5, 0x3 ands r0, r5 strb r0, [r4] cmp r0, 0x1 bls _08028202 bl Random ands r0, r5 _08028202: adds r0, 0x2 strb r0, [r4] _08028206: ldr r1, _08028218 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x2 str r0, [r1] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08028214: .4byte gUnknown_2023D72 _08028218: .4byte gUnknown_2023D74 thumb_func_end atk8D_setmultihitcounter thumb_func_start atk8E_initmultihitstring atk8E_initmultihitstring: @ 802821C ldr r1, _0802823C @ =gBattleScripting movs r2, 0 movs r0, 0xFD strb r0, [r1, 0x8] movs r0, 0x1 strb r0, [r1, 0x9] strb r0, [r1, 0xA] strb r0, [r1, 0xB] strb r2, [r1, 0xC] movs r0, 0xFF strb r0, [r1, 0xD] ldr r1, _08028240 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] bx lr .align 2, 0 _0802823C: .4byte gBattleScripting _08028240: .4byte gUnknown_2023D74 thumb_func_end atk8E_initmultihitstring thumb_func_start TryDoForceSwitchOut TryDoForceSwitchOut: @ 8028244 push {r4-r7,lr} ldr r6, _08028278 @ =gBattleMons ldr r7, _0802827C @ =sBattler_AI ldrb r0, [r7] movs r5, 0x58 adds r1, r0, 0 muls r1, r5 adds r1, r6 adds r1, 0x2A ldr r4, _08028280 @ =gBattlerTarget ldrb r3, [r4] adds r0, r3, 0 muls r0, r5 adds r0, r6 adds r0, 0x2A ldrb r1, [r1] ldrb r0, [r0] cmp r1, r0 bcc _0802828C ldr r0, _08028284 @ =gBattleStruct ldr r1, [r0] adds r1, r3, r1 adds r1, 0x58 ldr r2, _08028288 @ =gBattlerPartyIndexes lsls r0, r3, 1 b _080282E8 .align 2, 0 _08028278: .4byte gBattleMons _0802827C: .4byte sBattler_AI _08028280: .4byte gBattlerTarget _08028284: .4byte gBattleStruct _08028288: .4byte gBattlerPartyIndexes _0802828C: bl Random movs r3, 0xFF ands r3, r0 ldrb r0, [r7] muls r0, r5 adds r0, r6 adds r0, 0x2A ldrb r2, [r0] ldrb r4, [r4] adds r0, r4, 0 muls r0, r5 adds r0, r6 adds r0, 0x2A ldrb r1, [r0] adds r2, r1 adds r0, r3, 0 muls r0, r2 asrs r0, 8 adds r0, 0x1 lsrs r1, 2 cmp r0, r1 bhi _080282DC ldr r3, _080282D8 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] movs r0, 0 b _080282F6 .align 2, 0 _080282D8: .4byte gUnknown_2023D74 _080282DC: ldr r0, _080282FC @ =gBattleStruct ldr r1, [r0] adds r1, r4, r1 adds r1, 0x58 ldr r2, _08028300 @ =gBattlerPartyIndexes lsls r0, r4, 1 _080282E8: adds r0, r2 ldrh r0, [r0] strb r0, [r1] ldr r1, _08028304 @ =gUnknown_2023D74 ldr r0, _08028308 @ =gUnknown_81D8C10 str r0, [r1] movs r0, 0x1 _080282F6: pop {r4-r7} pop {r1} bx r1 .align 2, 0 _080282FC: .4byte gBattleStruct _08028300: .4byte gBattlerPartyIndexes _08028304: .4byte gUnknown_2023D74 _08028308: .4byte gUnknown_81D8C10 thumb_func_end TryDoForceSwitchOut thumb_func_start sub_802830C sub_802830C: @ 802830C push {r4-r7,lr} mov r7, r8 push {r7} ldr r4, _080283A4 @ =gBattleTypeFlags ldr r0, [r4] movs r1, 0x8 ands r0, r1 cmp r0, 0 bne _08028320 b _080285F4 _08028320: ldr r5, _080283A8 @ =gBattlerTarget ldrb r0, [r5] bl GetBattlerSide lsls r0, 24 ldr r1, _080283AC @ =gEnemyParty mov r8, r1 cmp r0, 0 bne _08028336 ldr r0, _080283B0 @ =gPlayerParty mov r8, r0 _08028336: ldr r0, [r4] movs r1, 0x40 ands r0, r1 cmp r0, 0 beq _080283B4 movs r7, 0 movs r6, 0 ldrb r0, [r5] bl GetBankMultiplayerId lsls r0, 24 lsrs r0, 24 bl GetLinkTrainerFlankId lsls r0, 16 lsrs r0, 16 cmp r0, 0x1 bne _0802835C movs r6, 0x3 _0802835C: adds r5, r6, 0 adds r0, r5, 0x3 cmp r5, r0 bge _080283F4 _08028364: movs r0, 0x64 muls r0, r5 mov r1, r8 adds r4, r1, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _08028396 adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 bne _08028396 adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _08028396 adds r0, r7, 0x1 lsls r0, 24 lsrs r7, r0, 24 _08028396: adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 adds r0, r6, 0x3 cmp r5, r0 blt _08028364 b _080283F4 .align 2, 0 _080283A4: .4byte gBattleTypeFlags _080283A8: .4byte gBattlerTarget _080283AC: .4byte gEnemyParty _080283B0: .4byte gPlayerParty _080283B4: movs r7, 0 movs r5, 0 _080283B8: movs r0, 0x64 muls r0, r5 mov r1, r8 adds r4, r1, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _080283EA adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0 bne _080283EA adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _080283EA adds r0, r7, 0x1 lsls r0, 24 lsrs r7, r0, 24 _080283EA: adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x5 bls _080283B8 _080283F4: cmp r7, 0x1 bhi _08028404 ldr r0, _08028438 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x41 ands r0, r1 cmp r0, 0x1 bne _0802841C _08028404: cmp r7, 0x2 bhi _08028440 ldr r0, _08028438 @ =gBattleTypeFlags ldr r1, [r0] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _08028440 movs r0, 0x40 ands r1, r0 cmp r1, 0 bne _08028440 _0802841C: ldr r3, _0802843C @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _080285F8 .align 2, 0 _08028438: .4byte gBattleTypeFlags _0802843C: .4byte gUnknown_2023D74 _08028440: bl TryDoForceSwitchOut lsls r0, 24 cmp r0, 0 bne _0802844C b _080285F8 _0802844C: ldr r0, _0802848C @ =gBattleTypeFlags ldr r1, [r0] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _080284F0 _08028458: bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x3 bl __umodsi3 lsls r0, 24 lsrs r6, r0, 24 ldr r0, _08028490 @ =gBattlerTarget ldrb r0, [r0] bl GetBankMultiplayerId lsls r0, 24 lsrs r0, 24 bl GetLinkTrainerFlankId lsls r0, 16 lsrs r0, 16 cmp r0, 0x1 bne _08028494 adds r0, r6, 0x3 lsls r0, 24 lsrs r5, r0, 24 b _08028496 .align 2, 0 _0802848C: .4byte gBattleTypeFlags _08028490: .4byte gBattlerTarget _08028494: adds r5, r6, 0 _08028496: ldr r4, _080284E8 @ =gBattlerPartyIndexes ldr r0, _080284EC @ =gBattlerTarget ldrb r2, [r0] lsls r1, r2, 1 adds r1, r4 lsls r0, r5, 16 lsrs r3, r0, 16 ldrh r1, [r1] cmp r3, r1 beq _08028458 movs r0, 0x2 eors r2, r0 lsls r0, r2, 1 adds r0, r4 ldrh r0, [r0] cmp r3, r0 beq _08028458 movs r0, 0x64 muls r0, r5 mov r1, r8 adds r4, r1, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _08028458 adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0x1 beq _08028458 adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _08028458 b _080285AE .align 2, 0 _080284E8: .4byte gBattlerPartyIndexes _080284EC: .4byte gBattlerTarget _080284F0: movs r0, 0x1 ands r1, r0 cmp r1, 0 beq _08028560 ldr r6, _08028558 @ =gBattlerPartyIndexes _080284FA: bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x6 bl __umodsi3 lsls r0, 24 lsrs r5, r0, 24 ldr r0, _0802855C @ =gBattlerTarget ldrb r1, [r0] lsls r0, r1, 1 adds r0, r6 adds r2, r5, 0 ldrh r0, [r0] cmp r2, r0 beq _080284FA movs r0, 0x2 eors r1, r0 lsls r0, r1, 1 adds r0, r6 ldrh r0, [r0] cmp r2, r0 beq _080284FA movs r0, 0x64 muls r0, r5 mov r1, r8 adds r4, r1, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _080284FA adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0x1 beq _080284FA adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _080284FA b _080285AE .align 2, 0 _08028558: .4byte gBattlerPartyIndexes _0802855C: .4byte gBattlerTarget _08028560: ldr r6, _080285E8 @ =gBattlerPartyIndexes _08028562: bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x6 bl __umodsi3 lsls r0, 24 lsrs r5, r0, 24 ldr r0, _080285EC @ =gBattlerTarget ldrb r0, [r0] lsls r0, 1 adds r0, r6 ldrh r0, [r0] cmp r5, r0 beq _08028562 movs r0, 0x64 muls r0, r5 mov r1, r8 adds r4, r1, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData cmp r0, 0 beq _08028562 adds r0, r4, 0 movs r1, 0x2D bl GetMonData cmp r0, 0x1 beq _08028562 adds r0, r4, 0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _08028562 _080285AE: ldr r4, _080285EC @ =gBattlerTarget ldrb r0, [r4] ldr r1, _080285F0 @ =gBattleStruct ldr r1, [r1] adds r0, r1 adds r0, 0x5C strb r5, [r0] bl sub_811FA20 lsls r0, 24 cmp r0, 0 bne _080285CC ldrb r0, [r4] bl sub_8013F6C _080285CC: ldrb r0, [r4] adds r1, r5, 0 movs r2, 0 bl sub_8127EC4 ldrb r1, [r4] movs r0, 0x2 eors r0, r1 adds r1, r5, 0 movs r2, 0x1 bl sub_8127EC4 b _080285F8 .align 2, 0 _080285E8: .4byte gBattlerPartyIndexes _080285EC: .4byte gBattlerTarget _080285F0: .4byte gBattleStruct _080285F4: bl TryDoForceSwitchOut _080285F8: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_802830C thumb_func_start atk90_tryconversiontypechange atk90_tryconversiontypechange: @ 8028604 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} movs r6, 0 ldr r2, _08028698 @ =gBattleMons ldr r3, _0802869C @ =sBattler_AI ldrb r1, [r3] movs r0, 0x58 muls r0, r1 adds r1, r2, 0 adds r1, 0xC adds r0, r1 ldrh r0, [r0] mov r8, r2 cmp r0, 0 beq _08028646 movs r5, 0x58 adds r2, r1, 0 _0802862C: adds r0, r6, 0x1 lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0x3 bhi _08028646 lsls r1, r6, 1 ldrb r0, [r3] muls r0, r5 adds r1, r0 adds r1, r2 ldrh r0, [r1] cmp r0, 0 bne _0802862C _08028646: movs r3, 0 cmp r3, r6 bcs _080286C8 ldr r0, _080286A0 @ =gBattleMoves mov r10, r0 ldr r5, _08028698 @ =gBattleMons mov r12, r5 ldr r7, _0802869C @ =sBattler_AI ldrb r0, [r7] movs r4, 0x58 adds r5, r0, 0 muls r5, r4 movs r0, 0xC add r0, r12 mov r9, r0 _08028664: lsls r0, r3, 1 adds r0, r5 add r0, r9 ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 add r0, r10 ldrb r2, [r0, 0x2] cmp r2, 0x9 bne _080286A6 mov r0, r8 adds r1, r5, r0 adds r0, r1, 0 adds r0, 0x21 ldrb r0, [r0] cmp r0, 0x7 beq _08028692 adds r0, r1, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0x7 bne _080286A4 _08028692: movs r2, 0x7 b _080286A6 .align 2, 0 _08028698: .4byte gBattleMons _0802869C: .4byte sBattler_AI _080286A0: .4byte gBattleMoves _080286A4: movs r2, 0 _080286A6: ldrb r0, [r7] muls r0, r4 add r0, r12 adds r1, r0, 0 adds r1, 0x21 ldrb r1, [r1] cmp r2, r1 beq _080286BE adds r0, 0x22 ldrb r0, [r0] cmp r2, r0 bne _080286C8 _080286BE: adds r0, r3, 0x1 lsls r0, 24 lsrs r3, r0, 24 cmp r3, r6 bcc _08028664 _080286C8: cmp r3, r6 bne _080286EC ldr r3, _080286E8 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _08028790 .align 2, 0 _080286E8: .4byte gUnknown_2023D74 _080286EC: movs r7, 0x3 ldr r5, _08028744 @ =gBattleMoves mov r9, r5 _080286F2: bl Random adds r3, r0, 0 ands r3, r7 cmp r3, r6 bcs _080286F2 ldr r4, _08028748 @ =gBattleMons lsls r1, r3, 1 ldr r3, _0802874C @ =sBattler_AI ldrb r2, [r3] movs r0, 0x58 adds r5, r2, 0 muls r5, r0 adds r1, r5 adds r0, r4, 0 adds r0, 0xC adds r1, r0 ldrh r1, [r1] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 add r0, r9 ldrb r2, [r0, 0x2] mov r8, r4 adds r4, r3, 0 cmp r2, 0x9 bne _08028752 mov r0, r8 adds r2, r5, r0 adds r0, r2, 0 adds r0, 0x21 ldrb r0, [r0] cmp r0, 0x7 beq _08028740 adds r0, r2, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0x7 bne _08028750 _08028740: movs r2, 0x7 b _08028752 .align 2, 0 _08028744: .4byte gBattleMoves _08028748: .4byte gBattleMons _0802874C: .4byte sBattler_AI _08028750: movs r2, 0 _08028752: ldrb r0, [r4] movs r3, 0x58 muls r0, r3 add r0, r8 adds r1, r0, 0 adds r1, 0x21 ldrb r5, [r1] cmp r2, r5 beq _080286F2 adds r0, 0x22 ldrb r0, [r0] cmp r2, r0 beq _080286F2 strb r2, [r1] ldrb r0, [r4] muls r0, r3 add r0, r8 adds r0, 0x22 strb r2, [r0] ldr r1, _080287A0 @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x3 strb r0, [r1, 0x1] strb r2, [r1, 0x2] movs r0, 0xFF strb r0, [r1, 0x3] ldr r1, _080287A4 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] _08028790: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080287A0: .4byte gBattleTextBuff1 _080287A4: .4byte gUnknown_2023D74 thumb_func_end atk90_tryconversiontypechange thumb_func_start atk91_givepaydaymoney atk91_givepaydaymoney: @ 80287A8 push {r4,r5,lr} ldr r0, _0802880C @ =gBattleTypeFlags ldr r0, [r0] movs r5, 0x2 ands r0, r5 cmp r0, 0 bne _08028828 ldr r1, _08028810 @ =gUnknown_2023E7E ldrh r0, [r1] cmp r0, 0 beq _08028828 adds r1, r0, 0 ldr r0, _08028814 @ =gBattleStruct ldr r0, [r0] adds r0, 0x4A ldrb r0, [r0] adds r4, r1, 0 muls r4, r0 ldr r0, _08028818 @ =gSaveBlock1Ptr ldr r0, [r0] movs r1, 0xA4 lsls r1, 2 adds r0, r1 adds r1, r4, 0 bl AddMoney ldr r1, _0802881C @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x1 strb r0, [r1, 0x1] strb r5, [r1, 0x2] movs r0, 0x5 strb r0, [r1, 0x3] strb r4, [r1, 0x4] movs r0, 0xFF lsls r0, 8 ands r4, r0 lsrs r4, 8 strb r4, [r1, 0x5] movs r0, 0xFF strb r0, [r1, 0x6] ldr r4, _08028820 @ =gUnknown_2023D74 ldr r0, [r4] adds r0, 0x1 bl BattleScriptPush ldr r0, _08028824 @ =gUnknown_81D911D str r0, [r4] b _08028830 .align 2, 0 _0802880C: .4byte gBattleTypeFlags _08028810: .4byte gUnknown_2023E7E _08028814: .4byte gBattleStruct _08028818: .4byte gSaveBlock1Ptr _0802881C: .4byte gBattleTextBuff1 _08028820: .4byte gUnknown_2023D74 _08028824: .4byte gUnknown_81D911D _08028828: ldr r1, _08028838 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] _08028830: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08028838: .4byte gUnknown_2023D74 thumb_func_end atk91_givepaydaymoney thumb_func_start atk92_setlightscreen atk92_setlightscreen: @ 802883C push {r4-r6,lr} ldr r5, _0802886C @ =sBattler_AI ldrb r0, [r5] bl GetBattlerPosition ldr r4, _08028870 @ =gSideAffecting movs r6, 0x1 adds r1, r6, 0 ands r1, r0 lsls r1, 1 adds r1, r4 ldrh r1, [r1] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0802887C ldr r2, _08028874 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r1, _08028878 @ =gUnknown_2023E82 movs r0, 0 b _080288F0 .align 2, 0 _0802886C: .4byte sBattler_AI _08028870: .4byte gSideAffecting _08028874: .4byte gMoveResultFlags _08028878: .4byte gUnknown_2023E82 _0802887C: ldrb r0, [r5] bl GetBattlerPosition adds r1, r6, 0 ands r1, r0 lsls r1, 1 adds r1, r4 ldrh r0, [r1] movs r2, 0x2 orrs r0, r2 strh r0, [r1] ldrb r0, [r5] bl GetBattlerPosition ldr r4, _080288E0 @ =gSideTimers adds r1, r6, 0 ands r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r4 movs r1, 0x5 strb r1, [r0, 0x2] ldrb r0, [r5] bl GetBattlerPosition adds r1, r6, 0 ands r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r4 ldrb r1, [r5] strb r1, [r0, 0x3] ldr r0, _080288E4 @ =gBattleTypeFlags ldr r0, [r0] ands r0, r6 cmp r0, 0 beq _080288EC movs r0, 0x1 bl CountAliveMonsInBattle lsls r0, 24 lsrs r0, 24 cmp r0, 0x2 bne _080288EC ldr r1, _080288E8 @ =gUnknown_2023E82 movs r0, 0x4 b _080288F0 .align 2, 0 _080288E0: .4byte gSideTimers _080288E4: .4byte gBattleTypeFlags _080288E8: .4byte gUnknown_2023E82 _080288EC: ldr r1, _08028900 @ =gUnknown_2023E82 movs r0, 0x3 _080288F0: strb r0, [r1, 0x5] ldr r1, _08028904 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08028900: .4byte gUnknown_2023E82 _08028904: .4byte gUnknown_2023D74 thumb_func_end atk92_setlightscreen thumb_func_start atk93_tryKO atk93_tryKO: @ 8028908 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} ldr r7, _08028934 @ =gBattleMons ldr r6, _08028938 @ =gBattlerTarget ldrb r2, [r6] movs r5, 0x58 adds r0, r2, 0 muls r0, r5 adds r1, r0, r7 ldrh r0, [r1, 0x2E] cmp r0, 0xAF bne _08028940 ldr r1, _0802893C @ =gEnigmaBerries lsls r0, r2, 3 subs r0, r2 lsls r0, 2 adds r0, r1 ldrb r4, [r0, 0x7] ldrb r6, [r0, 0x1A] b _0802895A .align 2, 0 _08028934: .4byte gBattleMons _08028938: .4byte gBattlerTarget _0802893C: .4byte gEnigmaBerries _08028940: ldrh r0, [r1, 0x2E] bl ItemId_GetHoldEffect lsls r0, 24 lsrs r4, r0, 24 ldrb r0, [r6] muls r0, r5 adds r0, r7 ldrh r0, [r0, 0x2E] bl ItemId_GetHoldEffectParam lsls r0, 24 lsrs r6, r0, 24 _0802895A: ldr r1, _080289D4 @ =gPotentialItemEffectBattler ldr r5, _080289D8 @ =gBattlerTarget ldrb r0, [r5] strb r0, [r1] cmp r4, 0x27 bne _08028998 bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x64 bl __umodsi3 lsls r0, 16 lsrs r0, 16 cmp r0, r6 bcs _08028998 ldrb r0, [r5] movs r1, 0x27 bl sub_80C7208 ldr r2, _080289DC @ =gUnknown_2023ECC ldrb r1, [r5] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r2, 0x80 orrs r1, r2 strb r1, [r0] _08028998: ldr r1, _080289E0 @ =gBattleMons ldr r2, _080289D8 @ =gBattlerTarget ldrb r3, [r2] movs r6, 0x58 adds r0, r3, 0 muls r0, r6 adds r5, r0, r1 adds r0, r5, 0 adds r0, 0x20 ldrb r4, [r0] mov r8, r1 mov r9, r2 cmp r4, 0x5 bne _080289F4 ldr r2, _080289E4 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r0, _080289E8 @ =gLastUsedAbility strb r4, [r0] ldr r1, _080289EC @ =gUnknown_2023D74 ldr r0, _080289F0 @ =gUnknown_81D93A1 str r0, [r1] mov r1, r9 ldrb r0, [r1] movs r1, 0x5 bl sub_80C71D0 b _08028C48 .align 2, 0 _080289D4: .4byte gPotentialItemEffectBattler _080289D8: .4byte gBattlerTarget _080289DC: .4byte gUnknown_2023ECC _080289E0: .4byte gBattleMons _080289E4: .4byte gMoveResultFlags _080289E8: .4byte gLastUsedAbility _080289EC: .4byte gUnknown_2023D74 _080289F0: .4byte gUnknown_81D93A1 _080289F4: ldr r1, _08028A68 @ =gStatuses3 lsls r0, r3, 2 adds r0, r1 ldr r0, [r0] movs r1, 0x18 ands r0, r1 cmp r0, 0 bne _08028A78 ldr r1, _08028A6C @ =gBattleMoves ldr r0, _08028A70 @ =gCurrentMove ldrh r0, [r0] lsls r2, r0, 1 adds r2, r0 lsls r2, 2 adds r2, r1 ldr r7, _08028A74 @ =sBattler_AI ldrb r0, [r7] muls r0, r6 add r0, r8 adds r0, 0x2A ldrb r0, [r0] adds r1, r5, 0 adds r1, 0x2A ldrb r1, [r1] subs r0, r1 ldrb r2, [r2, 0x3] adds r0, r2 lsls r0, 16 lsrs r4, r0, 16 bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x64 bl __umodsi3 lsls r0, 16 lsrs r0, 16 adds r0, 0x1 cmp r0, r4 blt _08028A48 b _08028BE0 _08028A48: ldrb r0, [r7] adds r1, r0, 0 muls r1, r6 add r1, r8 adds r1, 0x2A mov r2, r9 ldrb r0, [r2] muls r0, r6 add r0, r8 adds r0, 0x2A ldrb r1, [r1] movs r4, 0x1 ldrb r0, [r0] cmp r1, r0 bcs _08028B0E b _08028BE0 .align 2, 0 _08028A68: .4byte gStatuses3 _08028A6C: .4byte gBattleMoves _08028A70: .4byte gCurrentMove _08028A74: .4byte sBattler_AI _08028A78: ldr r1, _08028B44 @ =gDisableStructs lsls r0, r3, 3 subs r0, r3 lsls r0, 2 adds r0, r1 ldr r1, _08028B48 @ =sBattler_AI ldrb r0, [r0, 0x15] adds r7, r1, 0 ldrb r3, [r7] cmp r0, r3 bne _08028AA2 ldrb r0, [r7] muls r0, r6 add r0, r8 adds r0, 0x2A adds r1, r5, 0 adds r1, 0x2A ldrb r0, [r0] ldrb r1, [r1] cmp r0, r1 bcs _08028B1A _08028AA2: ldr r1, _08028B4C @ =gBattleMoves ldr r0, _08028B50 @ =gCurrentMove ldrh r0, [r0] lsls r2, r0, 1 adds r2, r0 lsls r2, 2 adds r2, r1 ldr r6, _08028B54 @ =gBattleMons ldrb r0, [r7] movs r5, 0x58 muls r0, r5 adds r0, r6 adds r0, 0x2A ldrb r1, [r0] ldr r0, _08028B58 @ =gBattlerTarget mov r8, r0 ldrb r0, [r0] muls r0, r5 adds r0, r6 adds r0, 0x2A ldrb r0, [r0] subs r1, r0 ldrb r2, [r2, 0x3] adds r1, r2 lsls r1, 16 lsrs r4, r1, 16 bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x64 bl __umodsi3 lsls r0, 16 lsrs r0, 16 adds r0, 0x1 cmp r0, r4 bge _08028B0C ldrb r0, [r7] adds r1, r0, 0 muls r1, r5 adds r1, r6 adds r1, 0x2A mov r2, r8 ldrb r0, [r2] muls r0, r5 adds r0, r6 adds r0, 0x2A ldrb r1, [r1] movs r4, 0x1 ldrb r0, [r0] cmp r1, r0 bcs _08028B0E _08028B0C: movs r4, 0 _08028B0E: ldr r3, _08028B54 @ =gBattleMons mov r8, r3 ldr r0, _08028B58 @ =gBattlerTarget mov r9, r0 cmp r4, 0 beq _08028BE0 _08028B1A: ldr r0, _08028B5C @ =gUnknown_2023E8C mov r1, r9 ldrb r2, [r1] lsls r1, r2, 4 adds r1, r0 ldrb r0, [r1] lsls r0, 30 cmp r0, 0 bge _08028B68 ldr r1, _08028B60 @ =gBattleMoveDamage movs r0, 0x58 muls r0, r2 add r0, r8 ldrh r0, [r0, 0x28] subs r0, 0x1 str r0, [r1] ldr r2, _08028B64 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x40 b _08028BC6 .align 2, 0 _08028B44: .4byte gDisableStructs _08028B48: .4byte sBattler_AI _08028B4C: .4byte gBattleMoves _08028B50: .4byte gCurrentMove _08028B54: .4byte gBattleMons _08028B58: .4byte gBattlerTarget _08028B5C: .4byte gUnknown_2023E8C _08028B60: .4byte gBattleMoveDamage _08028B64: .4byte gMoveResultFlags _08028B68: ldr r0, _08028BA4 @ =gUnknown_2023ECC lsls r1, r2, 2 adds r1, r2 lsls r1, 2 adds r1, r0 ldrb r0, [r1] lsrs r0, 7 cmp r0, 0 beq _08028BB4 ldr r1, _08028BA8 @ =gBattleMoveDamage movs r3, 0x58 adds r0, r2, 0 muls r0, r3 add r0, r8 ldrh r0, [r0, 0x28] subs r0, 0x1 str r0, [r1] ldr r2, _08028BAC @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x80 orrs r0, r1 strb r0, [r2] ldr r1, _08028BB0 @ =gUnknown_2023D68 mov r2, r9 ldrb r0, [r2] muls r0, r3 add r0, r8 ldrh r0, [r0, 0x2E] strh r0, [r1] b _08028BCA .align 2, 0 _08028BA4: .4byte gUnknown_2023ECC _08028BA8: .4byte gBattleMoveDamage _08028BAC: .4byte gMoveResultFlags _08028BB0: .4byte gUnknown_2023D68 _08028BB4: ldr r1, _08028BD4 @ =gBattleMoveDamage movs r0, 0x58 muls r0, r2 add r0, r8 ldrh r0, [r0, 0x28] str r0, [r1] ldr r2, _08028BD8 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x10 _08028BC6: orrs r0, r1 strb r0, [r2] _08028BCA: ldr r1, _08028BDC @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08028C48 .align 2, 0 _08028BD4: .4byte gBattleMoveDamage _08028BD8: .4byte gMoveResultFlags _08028BDC: .4byte gUnknown_2023D74 _08028BE0: ldr r2, _08028C14 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r3, _08028C18 @ =gBattleMons ldr r0, _08028C1C @ =sBattler_AI ldrb r0, [r0] movs r2, 0x58 adds r1, r0, 0 muls r1, r2 adds r1, r3 adds r1, 0x2A ldr r0, _08028C20 @ =gBattlerTarget ldrb r0, [r0] muls r0, r2 adds r0, r3 adds r0, 0x2A ldrb r1, [r1] ldrb r0, [r0] cmp r1, r0 bcc _08028C28 ldr r1, _08028C24 @ =gUnknown_2023E82 movs r0, 0 b _08028C2C .align 2, 0 _08028C14: .4byte gMoveResultFlags _08028C18: .4byte gBattleMons _08028C1C: .4byte sBattler_AI _08028C20: .4byte gBattlerTarget _08028C24: .4byte gUnknown_2023E82 _08028C28: ldr r1, _08028C54 @ =gUnknown_2023E82 movs r0, 0x1 _08028C2C: strb r0, [r1, 0x5] ldr r3, _08028C58 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08028C48: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08028C54: .4byte gUnknown_2023E82 _08028C58: .4byte gUnknown_2023D74 thumb_func_end atk93_tryKO thumb_func_start atk94_damagetohalftargethp atk94_damagetohalftargethp: @ 8028C5C push {lr} ldr r3, _08028C88 @ =gBattleMoveDamage ldr r2, _08028C8C @ =gBattleMons ldr r0, _08028C90 @ =gBattlerTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r0, [r0, 0x28] lsrs r0, 1 str r0, [r3] cmp r0, 0 bne _08028C7A movs r0, 0x1 str r0, [r3] _08028C7A: ldr r1, _08028C94 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _08028C88: .4byte gBattleMoveDamage _08028C8C: .4byte gBattleMons _08028C90: .4byte gBattlerTarget _08028C94: .4byte gUnknown_2023D74 thumb_func_end atk94_damagetohalftargethp thumb_func_start atk95_setsandstorm atk95_setsandstorm: @ 8028C98 push {lr} ldr r2, _08028CB8 @ =gBattleWeather ldrh r1, [r2] movs r0, 0x18 ands r0, r1 cmp r0, 0 beq _08028CC4 ldr r2, _08028CBC @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r1, _08028CC0 @ =gUnknown_2023E82 movs r0, 0x2 strb r0, [r1, 0x5] b _08028CD6 .align 2, 0 _08028CB8: .4byte gBattleWeather _08028CBC: .4byte gMoveResultFlags _08028CC0: .4byte gUnknown_2023E82 _08028CC4: movs r0, 0x8 strh r0, [r2] ldr r1, _08028CE4 @ =gUnknown_2023E82 movs r0, 0x3 strb r0, [r1, 0x5] ldr r0, _08028CE8 @ =gUnknown_2023F20 adds r0, 0x28 movs r1, 0x5 strb r1, [r0] _08028CD6: ldr r1, _08028CEC @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _08028CE4: .4byte gUnknown_2023E82 _08028CE8: .4byte gUnknown_2023F20 _08028CEC: .4byte gUnknown_2023D74 thumb_func_end atk95_setsandstorm thumb_func_start sub_8028CF0 sub_8028CF0: @ 8028CF0 push {r4,r5,lr} sub sp, 0x4 ldr r0, _08028DBC @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0xA0 lsls r1, 8 ands r0, r1 movs r1, 0x80 lsls r1, 8 cmp r0, r1 bne _08028D18 ldr r0, _08028DC0 @ =sBattler_AI ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _08028D18 b _08028E64 _08028D18: movs r0, 0 str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0xD movs r3, 0 bl AbilityBattleEffects lsls r0, 24 lsrs r0, 24 cmp r0, 0 beq _08028D32 b _08028E48 _08028D32: str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0x4D movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 beq _08028D48 b _08028E48 _08028D48: ldr r2, _08028DC4 @ =gBattleWeather ldrh r1, [r2] movs r0, 0x18 ands r0, r1 ldr r5, _08028DC0 @ =sBattler_AI adds r4, r2, 0 cmp r0, 0 beq _08028DDA ldr r0, _08028DC8 @ =gBattleMons ldrb r2, [r5] movs r1, 0x58 muls r1, r2 adds r3, r1, r0 adds r0, r3, 0 adds r0, 0x21 ldrb r0, [r0] cmp r0, 0x5 beq _08028DD4 cmp r0, 0x8 beq _08028DD4 cmp r0, 0x4 beq _08028DD4 adds r0, r3, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0x5 beq _08028DD4 cmp r0, 0x8 beq _08028DD4 cmp r0, 0x4 beq _08028DD4 adds r0, r3, 0 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x8 beq _08028DD4 ldr r0, _08028DCC @ =gStatuses3 lsls r1, r2, 2 adds r1, r0 ldr r1, [r1] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _08028DD4 movs r0, 0x80 lsls r0, 11 ands r1, r0 cmp r1, 0 bne _08028DD4 ldr r1, _08028DD0 @ =gBattleMoveDamage ldrh r0, [r3, 0x2C] lsrs r0, 4 str r0, [r1] cmp r0, 0 bne _08028DDA movs r0, 0x1 b _08028DD8 .align 2, 0 _08028DBC: .4byte gBattleTypeFlags _08028DC0: .4byte sBattler_AI _08028DC4: .4byte gBattleWeather _08028DC8: .4byte gBattleMons _08028DCC: .4byte gStatuses3 _08028DD0: .4byte gBattleMoveDamage _08028DD4: ldr r1, _08028E30 @ =gBattleMoveDamage movs r0, 0 _08028DD8: str r0, [r1] _08028DDA: ldrh r1, [r4] movs r4, 0x80 adds r0, r4, 0 ands r0, r1 cmp r0, 0 beq _08028E50 ldr r1, _08028E34 @ =gBattleMons ldrb r3, [r5] movs r0, 0x58 muls r0, r3 adds r2, r0, r1 adds r0, r2, 0 adds r0, 0x21 ldrb r0, [r0] cmp r0, 0xF beq _08028E3C adds r0, r2, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, 0xF beq _08028E3C ldr r0, _08028E38 @ =gStatuses3 lsls r1, r3, 2 adds r1, r0 ldr r1, [r1] adds r0, r1, 0 ands r0, r4 cmp r0, 0 bne _08028E3C movs r0, 0x80 lsls r0, 11 ands r1, r0 cmp r1, 0 bne _08028E3C ldr r1, _08028E30 @ =gBattleMoveDamage ldrh r0, [r2, 0x2C] lsrs r0, 4 str r0, [r1] cmp r0, 0 bne _08028E50 movs r0, 0x1 str r0, [r1] b _08028E50 .align 2, 0 _08028E30: .4byte gBattleMoveDamage _08028E34: .4byte gBattleMons _08028E38: .4byte gStatuses3 _08028E3C: ldr r1, _08028E44 @ =gBattleMoveDamage movs r0, 0 str r0, [r1] b _08028E50 .align 2, 0 _08028E44: .4byte gBattleMoveDamage _08028E48: ldr r1, _08028E7C @ =gBattleMoveDamage movs r0, 0 str r0, [r1] ldr r5, _08028E80 @ =sBattler_AI _08028E50: ldr r0, _08028E84 @ =gAbsentBattlerFlags ldrb r1, [r0] ldr r2, _08028E88 @ =gBitTable ldrb r0, [r5] lsls r0, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 beq _08028E6A _08028E64: ldr r1, _08028E7C @ =gBattleMoveDamage movs r0, 0 str r0, [r1] _08028E6A: ldr r1, _08028E8C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08028E7C: .4byte gBattleMoveDamage _08028E80: .4byte sBattler_AI _08028E84: .4byte gAbsentBattlerFlags _08028E88: .4byte gBitTable _08028E8C: .4byte gUnknown_2023D74 thumb_func_end sub_8028CF0 thumb_func_start sub_8028E90 sub_8028E90: @ 8028E90 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} ldr r4, _08028EBC @ =sBattler_AI ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _08028EC8 ldr r1, _08028EC0 @ =gBattlerPartyIndexes ldrb r0, [r4] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r1, r0 ldr r0, _08028EC4 @ =gPlayerParty b _08028ED8 .align 2, 0 _08028EBC: .4byte sBattler_AI _08028EC0: .4byte gBattlerPartyIndexes _08028EC4: .4byte gPlayerParty _08028EC8: ldr r1, _08028EFC @ =gBattlerPartyIndexes ldrb r0, [r4] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r1, r0 ldr r0, _08028F00 @ =gEnemyParty _08028ED8: adds r5, r1, r0 ldr r4, _08028F04 @ =gBattlerTarget ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _08028F0C ldr r1, _08028EFC @ =gBattlerPartyIndexes ldrb r0, [r4] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r1, r0 ldr r0, _08028F08 @ =gPlayerParty b _08028F1C .align 2, 0 _08028EFC: .4byte gBattlerPartyIndexes _08028F00: .4byte gEnemyParty _08028F04: .4byte gBattlerTarget _08028F08: .4byte gPlayerParty _08028F0C: ldr r1, _08028F78 @ =gBattlerPartyIndexes ldrb r0, [r4] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r1, r0 ldr r0, _08028F7C @ =gEnemyParty _08028F1C: adds r4, r1, r0 adds r0, r5, 0 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r0, 16 mov r10, r0 adds r0, r5, 0 movs r1, 0 bl GetMonData mov r9, r0 adds r0, r4, 0 movs r1, 0xB bl GetMonData lsls r0, 16 lsrs r0, 16 mov r8, r0 adds r0, r4, 0 movs r1, 0 bl GetMonData adds r7, r0, 0 ldr r5, _08028F80 @ =gBattlerTarget ldrb r0, [r5] movs r6, 0x58 muls r0, r6 ldr r1, _08028F84 @ =gBattleMons adds r0, r1 adds r0, 0x20 ldrb r2, [r0] cmp r2, 0xC bne _08028F94 ldr r1, _08028F88 @ =gUnknown_2023D74 ldr r0, _08028F8C @ =gUnknown_81D9444 str r0, [r1] ldr r0, _08028F90 @ =gLastUsedAbility strb r2, [r0] ldrb r0, [r5] movs r1, 0xC bl sub_80C71D0 b _0802902C .align 2, 0 _08028F78: .4byte gBattlerPartyIndexes _08028F7C: .4byte gEnemyParty _08028F80: .4byte gBattlerTarget _08028F84: .4byte gBattleMons _08028F88: .4byte gUnknown_2023D74 _08028F8C: .4byte gUnknown_81D9444 _08028F90: .4byte gLastUsedAbility _08028F94: mov r0, r10 mov r1, r9 bl GetGenderFromSpeciesAndPersonality adds r4, r0, 0 mov r0, r8 adds r1, r7, 0 bl GetGenderFromSpeciesAndPersonality lsls r4, 24 lsls r0, 24 cmp r4, r0 beq _08028FE4 ldrb r0, [r5] muls r0, r6 ldr r4, _08029000 @ =gBattleMons adds r4, 0x50 adds r0, r4 ldr r0, [r0] movs r1, 0xF0 lsls r1, 12 ands r0, r1 cmp r0, 0 bne _08028FE4 mov r0, r10 mov r1, r9 bl GetGenderFromSpeciesAndPersonality lsls r0, 24 lsrs r0, 24 cmp r0, 0xFF beq _08028FE4 mov r0, r8 adds r1, r7, 0 bl GetGenderFromSpeciesAndPersonality lsls r0, 24 lsrs r0, 24 cmp r0, 0xFF bne _08029008 _08028FE4: ldr r3, _08029004 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802902C .align 2, 0 _08029000: .4byte gBattleMons _08029004: .4byte gUnknown_2023D74 _08029008: ldrb r0, [r5] adds r2, r0, 0 muls r2, r6 adds r2, r4 ldr r1, _0802903C @ =gBitTable ldr r0, _08029040 @ =sBattler_AI ldrb r0, [r0] lsls r0, 2 adds r0, r1 ldr r1, [r0] lsls r1, 16 ldr r0, [r2] orrs r0, r1 str r0, [r2] ldr r1, _08029044 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802902C: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802903C: .4byte gBitTable _08029040: .4byte sBattler_AI _08029044: .4byte gUnknown_2023D74 thumb_func_end sub_8028E90 thumb_func_start sub_8029048 sub_8029048: @ 8029048 push {r4-r7,lr} ldr r0, _080290B8 @ =gUnknown_2023BC8 ldr r1, [r0] cmp r1, 0 beq _08029054 b _080291C0 _08029054: ldr r5, _080290BC @ =gUnknown_2023D74 ldr r2, [r5] ldrb r0, [r2, 0x1] cmp r0, 0xD bne _080290D4 ldr r2, _080290C0 @ =gActiveBattler strb r1, [r2] ldr r0, _080290C4 @ =gBattlersCount ldrb r0, [r0] cmp r1, r0 bcs _08029164 ldr r7, _080290C8 @ =gBitTable adds r4, r2, 0 ldr r5, _080290CC @ =gBattleMons adds r6, r5, 0 adds r6, 0x50 _08029074: ldr r0, _080290D0 @ =gAbsentBattlerFlags ldrb r1, [r0] ldrb r2, [r4] lsls r0, r2, 2 adds r0, r7 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _080290A2 movs r0, 0x58 muls r2, r0 adds r0, r5, 0 adds r0, 0x4C adds r0, r2, r0 ldr r1, [r0] adds r2, r6 ldr r2, [r2] movs r0, 0 bl EmitStatusIconUpdate ldrb r0, [r4] bl MarkBufferBankForExecution _080290A2: ldrb r0, [r4] adds r0, 0x1 strb r0, [r4] ldr r1, _080290C4 @ =gBattlersCount lsls r0, 24 lsrs r0, 24 ldrb r1, [r1] cmp r0, r1 bcc _08029074 b _08029164 .align 2, 0 _080290B8: .4byte gUnknown_2023BC8 _080290BC: .4byte gUnknown_2023D74 _080290C0: .4byte gActiveBattler _080290C4: .4byte gBattlersCount _080290C8: .4byte gBitTable _080290CC: .4byte gBattleMons _080290D0: .4byte gAbsentBattlerFlags _080290D4: cmp r0, 0x4 bne _0802918C ldr r4, _08029170 @ =gActiveBattler ldr r5, _08029174 @ =sBattler_AI ldrb r0, [r5] strb r0, [r4] ldr r6, _08029178 @ =gAbsentBattlerFlags ldrb r1, [r6] ldr r7, _0802917C @ =gBitTable ldrb r2, [r4] lsls r0, r2, 2 adds r0, r7 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _08029114 ldr r3, _08029180 @ =gBattleMons movs r0, 0x58 muls r2, r0 adds r0, r3, 0 adds r0, 0x4C adds r0, r2, r0 ldr r1, [r0] adds r3, 0x50 adds r2, r3 ldr r2, [r2] movs r0, 0 bl EmitStatusIconUpdate ldrb r0, [r4] bl MarkBufferBankForExecution _08029114: ldr r0, _08029184 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _08029164 ldrb r0, [r5] bl GetBattlerPosition movs r1, 0x2 eors r0, r1 lsls r0, 24 lsrs r0, 24 bl GetBattlerAtPosition strb r0, [r4] ldrb r1, [r6] ldrb r2, [r4] lsls r0, r2, 2 adds r0, r7 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _08029164 ldr r3, _08029180 @ =gBattleMons movs r0, 0x58 muls r2, r0 adds r0, r3, 0 adds r0, 0x4C adds r0, r2, r0 ldr r1, [r0] adds r3, 0x50 adds r2, r3 ldr r2, [r2] movs r0, 0 bl EmitStatusIconUpdate ldrb r0, [r4] bl MarkBufferBankForExecution _08029164: ldr r1, _08029188 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x2 str r0, [r1] b _080291C0 .align 2, 0 _08029170: .4byte gActiveBattler _08029174: .4byte sBattler_AI _08029178: .4byte gAbsentBattlerFlags _0802917C: .4byte gBitTable _08029180: .4byte gBattleMons _08029184: .4byte gBattleTypeFlags _08029188: .4byte gUnknown_2023D74 _0802918C: ldrb r0, [r2, 0x1] bl sub_8016E24 ldr r4, _080291C8 @ =gActiveBattler strb r0, [r4] ldr r3, _080291CC @ =gBattleMons ldrb r1, [r4] movs r0, 0x58 adds r2, r1, 0 muls r2, r0 adds r0, r3, 0 adds r0, 0x4C adds r0, r2, r0 ldr r1, [r0] adds r3, 0x50 adds r2, r3 ldr r2, [r2] movs r0, 0 bl EmitStatusIconUpdate ldrb r0, [r4] bl MarkBufferBankForExecution ldr r0, [r5] adds r0, 0x2 str r0, [r5] _080291C0: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080291C8: .4byte gActiveBattler _080291CC: .4byte gBattleMons thumb_func_end sub_8029048 thumb_func_start atk99_setmist atk99_setmist: @ 80291D0 push {r4-r6,lr} ldr r6, _08029200 @ =gSideTimers ldr r4, _08029204 @ =sBattler_AI ldrb r0, [r4] bl GetBattlerPosition movs r5, 0x1 adds r1, r5, 0 ands r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r6 ldrb r0, [r0, 0x4] cmp r0, 0 beq _08029210 ldr r2, _08029208 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x20 orrs r0, r1 strb r0, [r2] ldr r0, _0802920C @ =gUnknown_2023E82 strb r5, [r0, 0x5] b _0802925E .align 2, 0 _08029200: .4byte gSideTimers _08029204: .4byte sBattler_AI _08029208: .4byte gMoveResultFlags _0802920C: .4byte gUnknown_2023E82 _08029210: ldrb r0, [r4] bl GetBattlerPosition adds r1, r5, 0 ands r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r6 movs r1, 0x5 strb r1, [r0, 0x4] ldrb r0, [r4] bl GetBattlerPosition adds r1, r5, 0 ands r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r6 ldrb r1, [r4] strb r1, [r0, 0x5] ldrb r0, [r4] bl GetBattlerPosition ldr r2, _0802926C @ =gSideAffecting adds r1, r5, 0 ands r1, r0 lsls r1, 1 adds r1, r2 ldrh r2, [r1] movs r3, 0x80 lsls r3, 1 adds r0, r3, 0 movs r3, 0 orrs r0, r2 strh r0, [r1] ldr r0, _08029270 @ =gUnknown_2023E82 strb r3, [r0, 0x5] _0802925E: ldr r1, _08029274 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0802926C: .4byte gSideAffecting _08029270: .4byte gUnknown_2023E82 _08029274: .4byte gUnknown_2023D74 thumb_func_end atk99_setmist thumb_func_start atk9A_setfocusenergy atk9A_setfocusenergy: @ 8029278 push {lr} ldr r1, _080292A8 @ =gBattleMons ldr r0, _080292AC @ =sBattler_AI ldrb r2, [r0] movs r0, 0x58 muls r0, r2 adds r1, 0x50 adds r0, r1 ldr r1, [r0] movs r3, 0x80 lsls r3, 13 adds r2, r1, 0 ands r2, r3 cmp r2, 0 beq _080292B8 ldr r2, _080292B0 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x20 orrs r0, r1 strb r0, [r2] ldr r1, _080292B4 @ =gUnknown_2023E82 movs r0, 0x1 strb r0, [r1, 0x5] b _080292C0 .align 2, 0 _080292A8: .4byte gBattleMons _080292AC: .4byte sBattler_AI _080292B0: .4byte gMoveResultFlags _080292B4: .4byte gUnknown_2023E82 _080292B8: orrs r1, r3 str r1, [r0] ldr r0, _080292CC @ =gUnknown_2023E82 strb r2, [r0, 0x5] _080292C0: ldr r1, _080292D0 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _080292CC: .4byte gUnknown_2023E82 _080292D0: .4byte gUnknown_2023D74 thumb_func_end atk9A_setfocusenergy thumb_func_start atk9B_transformdataexecution atk9B_transformdataexecution: @ 80292D4 push {r4-r7,lr} mov r7, r8 push {r7} ldr r1, _0802932C @ =gUnknown_2023D4C ldr r2, _08029330 @ =0x0000ffff adds r0, r2, 0 strh r0, [r1] ldr r1, _08029334 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] ldr r7, _08029338 @ =gBattleMons ldr r0, _0802933C @ =gBattlerTarget mov r12, r0 ldrb r1, [r0] movs r6, 0x58 adds r0, r1, 0 muls r0, r6 adds r5, r7, 0 adds r5, 0x50 adds r0, r5 ldr r0, [r0] movs r4, 0x80 lsls r4, 14 ands r0, r4 cmp r0, 0 bne _0802931A ldr r0, _08029340 @ =gStatuses3 lsls r1, 2 adds r1, r0 ldr r2, [r1] ldr r0, _08029344 @ =0x000400c0 ands r2, r0 cmp r2, 0 beq _08029350 _0802931A: ldr r2, _08029348 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x20 orrs r0, r1 strb r0, [r2] ldr r1, _0802934C @ =gUnknown_2023E82 movs r0, 0x1 b _08029464 .align 2, 0 _0802932C: .4byte gUnknown_2023D4C _08029330: .4byte 0x0000ffff _08029334: .4byte gUnknown_2023D74 _08029338: .4byte gBattleMons _0802933C: .4byte gBattlerTarget _08029340: .4byte gStatuses3 _08029344: .4byte 0x000400c0 _08029348: .4byte gMoveResultFlags _0802934C: .4byte gUnknown_2023E82 _08029350: ldr r3, _08029424 @ =sBattler_AI ldrb r0, [r3] adds r1, r0, 0 muls r1, r6 adds r1, r5 ldr r0, [r1] orrs r0, r4 str r0, [r1] ldr r4, _08029428 @ =gDisableStructs ldrb r1, [r3] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r4 strh r2, [r0, 0x4] ldrb r0, [r3] lsls r1, r0, 3 subs r1, r0 lsls r1, 2 adds r1, r4 ldrb r2, [r1, 0xB] movs r0, 0x10 negs r0, r0 ands r0, r2 strb r0, [r1, 0xB] ldrb r1, [r3] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r4 mov r2, r12 ldrb r1, [r2] muls r1, r6 adds r2, r7, 0 adds r2, 0x48 adds r1, r2 ldr r1, [r1] str r1, [r0] ldrb r0, [r3] lsls r1, r0, 3 subs r1, r0 lsls r1, 2 adds r1, r4 ldrb r2, [r1, 0x18] movs r0, 0xF ands r0, r2 strb r0, [r1, 0x18] ldr r1, _0802942C @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x6 strb r0, [r1, 0x1] mov r2, r12 ldrb r0, [r2] muls r0, r6 adds r0, r7 ldrh r0, [r0] strb r0, [r1, 0x2] ldrb r0, [r2] muls r0, r6 adds r0, r7 ldrh r0, [r0] lsrs r0, 8 strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldrb r0, [r3] muls r0, r6 adds r5, r0, r7 ldrb r0, [r2] muls r0, r6 adds r2, r0, r7 movs r4, 0 adds r6, r3, 0 ldr r0, _08029430 @ =gActiveBattler mov r8, r0 _080293E8: adds r0, r5, r4 adds r1, r2, r4 ldrb r1, [r1] strb r1, [r0] adds r4, 0x1 cmp r4, 0x23 bls _080293E8 movs r4, 0 ldr r7, _08029434 @ =gBattleMoves ldr r3, _08029438 @ =gUnknown_2023BF0 adds r5, r3, 0 adds r5, 0x18 _08029400: lsls r1, r4, 1 ldrb r2, [r6] movs r0, 0x58 muls r2, r0 adds r1, r2 adds r1, r3 ldrh r1, [r1] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r7 ldrb r1, [r0, 0x4] cmp r1, 0x4 bhi _0802943C adds r0, r4, r2 adds r0, r5 b _08029442 .align 2, 0 _08029424: .4byte sBattler_AI _08029428: .4byte gDisableStructs _0802942C: .4byte gBattleTextBuff1 _08029430: .4byte gActiveBattler _08029434: .4byte gBattleMoves _08029438: .4byte gUnknown_2023BF0 _0802943C: adds r0, r4, r2 adds r0, r5 movs r1, 0x5 _08029442: strb r1, [r0] adds r4, 0x1 cmp r4, 0x3 ble _08029400 ldrb r0, [r6] mov r1, r8 strb r0, [r1] movs r0, 0 movs r1, 0x2 bl EmitResetActionMoveSelection mov r2, r8 ldrb r0, [r2] bl MarkBufferBankForExecution ldr r1, _08029470 @ =gUnknown_2023E82 movs r0, 0 _08029464: strb r0, [r1, 0x5] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08029470: .4byte gUnknown_2023E82 thumb_func_end atk9B_transformdataexecution thumb_func_start atk9C_setsubstitute atk9C_setsubstitute: @ 8029474 push {r4-r7,lr} ldr r7, _080294A4 @ =gBattleMons ldr r6, _080294A8 @ =sBattler_AI ldrb r0, [r6] movs r5, 0x58 muls r0, r5 adds r3, r0, r7 ldrh r0, [r3, 0x2C] lsrs r1, r0, 2 adds r2, r1, 0 cmp r1, 0 bne _0802948E movs r2, 0x1 _0802948E: ldrh r0, [r3, 0x28] cmp r0, r2 bhi _080294B4 ldr r1, _080294AC @ =gBattleMoveDamage movs r0, 0 str r0, [r1] ldr r1, _080294B0 @ =gUnknown_2023E82 movs r0, 0x1 strb r0, [r1, 0x5] b _08029508 .align 2, 0 _080294A4: .4byte gBattleMons _080294A8: .4byte sBattler_AI _080294AC: .4byte gBattleMoveDamage _080294B0: .4byte gUnknown_2023E82 _080294B4: ldr r4, _08029518 @ =gBattleMoveDamage str r1, [r4] cmp r1, 0 bne _080294C0 movs r0, 0x1 str r0, [r4] _080294C0: ldrb r0, [r6] adds r2, r0, 0 muls r2, r5 adds r3, r7, 0 adds r3, 0x50 adds r2, r3 ldr r0, [r2] movs r1, 0x80 lsls r1, 17 orrs r0, r1 str r0, [r2] ldrb r0, [r6] adds r1, r0, 0 muls r1, r5 adds r1, r3 ldr r0, [r1] ldr r2, _0802951C @ =0xffff1fff ands r0, r2 str r0, [r1] ldr r2, _08029520 @ =gDisableStructs ldrb r1, [r6] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r2 ldr r1, [r4] movs r2, 0 strb r1, [r0, 0xA] ldr r0, _08029524 @ =gUnknown_2023E82 strb r2, [r0, 0x5] ldr r2, _08029528 @ =gUnknown_2023DD0 ldr r0, [r2] movs r1, 0x80 lsls r1, 1 orrs r0, r1 str r0, [r2] _08029508: ldr r1, _0802952C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08029518: .4byte gBattleMoveDamage _0802951C: .4byte 0xffff1fff _08029520: .4byte gDisableStructs _08029524: .4byte gUnknown_2023E82 _08029528: .4byte gUnknown_2023DD0 _0802952C: .4byte gUnknown_2023D74 thumb_func_end atk9C_setsubstitute thumb_func_start IsMoveUncopyableByMimic IsMoveUncopyableByMimic: @ 8029530 push {r4,r5,lr} lsls r0, 16 lsrs r2, r0, 16 movs r3, 0 ldr r0, _08029570 @ =gUnknown_82507E8 ldrh r1, [r0] ldr r4, _08029574 @ =0x0000fffe adds r5, r0, 0 cmp r1, r4 beq _08029558 cmp r1, r2 beq _08029558 adds r1, r5, 0 _0802954A: adds r1, 0x2 adds r3, 0x1 ldrh r0, [r1] cmp r0, r4 beq _08029558 cmp r0, r2 bne _0802954A _08029558: lsls r0, r3, 1 adds r0, r5 ldrh r1, [r0] ldr r0, _08029574 @ =0x0000fffe eors r1, r0 negs r0, r1 orrs r0, r1 lsrs r0, 31 pop {r4,r5} pop {r1} bx r1 .align 2, 0 _08029570: .4byte gUnknown_82507E8 _08029574: .4byte 0x0000fffe thumb_func_end IsMoveUncopyableByMimic thumb_func_start atk9D_mimicattackcopy atk9D_mimicattackcopy: @ 8029578 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} ldr r0, _080295F0 @ =gUnknown_2023D4C ldr r1, _080295F4 @ =0x0000ffff adds r7, r1, 0 strh r7, [r0] ldr r5, _080295F8 @ =gLastUsedMove ldr r6, _080295FC @ =gBattlerTarget ldrb r0, [r6] lsls r0, 1 adds r0, r5 ldrh r0, [r0] bl IsMoveUncopyableByMimic lsls r0, 24 cmp r0, 0 bne _080295D2 ldr r3, _08029600 @ =gBattleMons ldr r2, _08029604 @ =sBattler_AI ldrb r1, [r2] movs r0, 0x58 adds r4, r1, 0 muls r4, r0 adds r0, r3, 0 adds r0, 0x50 adds r0, r4, r0 ldr r1, [r0] movs r0, 0x80 lsls r0, 14 ands r1, r0 mov r12, r3 mov r9, r2 cmp r1, 0 bne _080295D2 ldrb r0, [r6] lsls r0, 1 adds r0, r5 ldrh r1, [r0] cmp r1, 0 beq _080295D2 cmp r1, r7 bne _0802960C _080295D2: ldr r3, _08029608 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _08029744 .align 2, 0 _080295F0: .4byte gUnknown_2023D4C _080295F4: .4byte 0x0000ffff _080295F8: .4byte gLastUsedMove _080295FC: .4byte gBattlerTarget _08029600: .4byte gBattleMons _08029604: .4byte sBattler_AI _08029608: .4byte gUnknown_2023D74 _0802960C: movs r2, 0 mov r3, r12 adds r3, 0xC adds r0, r4, r3 ldrh r0, [r0] ldr r4, _0802969C @ =gUnknown_2023D74 mov r10, r4 cmp r0, r1 beq _08029646 mov r8, r3 adds r7, r5, 0 adds r5, r6, 0 mov r4, r9 movs r3, 0x58 _08029628: adds r2, 0x1 cmp r2, 0x3 bgt _08029646 lsls r1, r2, 1 ldrb r0, [r4] muls r0, r3 adds r1, r0 add r1, r8 ldrb r0, [r5] lsls r0, 1 adds r0, r7 ldrh r1, [r1] ldrh r0, [r0] cmp r1, r0 bne _08029628 _08029646: cmp r2, 0x4 bne _08029728 ldr r5, _080296A0 @ =gUnknown_2023D48 ldrb r1, [r5] lsls r1, 1 mov r2, r9 ldrb r0, [r2] movs r6, 0x58 muls r0, r6 adds r1, r0 mov r0, r12 adds r0, 0xC adds r1, r0 ldr r2, _080296A4 @ =gLastUsedMove ldr r3, _080296A8 @ =gBattlerTarget ldrb r0, [r3] lsls r0, 1 adds r0, r2 ldrh r0, [r0] strh r0, [r1] ldr r4, _080296AC @ =gBattleMoves ldrb r0, [r3] lsls r0, 1 adds r0, r2 ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r4 ldrb r4, [r0, 0x4] cmp r4, 0x4 bhi _080296B0 mov r1, r9 ldrb r0, [r1] muls r0, r6 ldrb r1, [r5] adds r0, r1 mov r1, r12 adds r1, 0x24 adds r0, r1 strb r4, [r0] b _080296C4 .align 2, 0 _0802969C: .4byte gUnknown_2023D74 _080296A0: .4byte gUnknown_2023D48 _080296A4: .4byte gLastUsedMove _080296A8: .4byte gBattlerTarget _080296AC: .4byte gBattleMoves _080296B0: mov r4, r9 ldrb r0, [r4] muls r0, r6 ldrb r1, [r5] adds r0, r1 mov r1, r12 adds r1, 0x24 adds r0, r1 movs r1, 0x5 strb r1, [r0] _080296C4: ldr r1, _0802971C @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x2 strb r0, [r1, 0x1] ldrb r0, [r3] lsls r0, 1 adds r0, r2 ldrh r0, [r0] strb r0, [r1, 0x2] ldrb r0, [r3] lsls r0, 1 adds r0, r2 ldrh r0, [r0] lsrs r0, 8 strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldr r1, _08029720 @ =gDisableStructs mov r2, r9 ldrb r0, [r2] lsls r2, r0, 3 subs r2, r0 lsls r2, 2 adds r2, r1 ldrb r4, [r2, 0x18] lsrs r3, r4, 4 ldr r1, _08029724 @ =gBitTable ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldr r1, [r0] orrs r1, r3 lsls r1, 4 movs r0, 0xF ands r0, r4 orrs r0, r1 strb r0, [r2, 0x18] mov r4, r10 ldr r0, [r4] adds r0, 0x5 str r0, [r4] b _08029744 .align 2, 0 _0802971C: .4byte gBattleTextBuff1 _08029720: .4byte gDisableStructs _08029724: .4byte gBitTable _08029728: mov r0, r10 ldr r2, [r0] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 mov r2, r10 str r1, [r2] _08029744: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 thumb_func_end atk9D_mimicattackcopy thumb_func_start atk9E_metronome atk9E_metronome: @ 8029754 push {r4-r7,lr} mov r7, r8 push {r7} ldr r7, _080297D4 @ =gCurrentMove movs r6, 0xB1 lsls r6, 1 ldr r5, _080297D8 @ =gUnknown_82507E8 ldr r0, _080297DC @ =gUnknown_2023D74 mov r8, r0 _08029766: bl Random ldr r2, _080297E0 @ =0x000001ff adds r1, r2, 0 ands r0, r1 adds r0, 0x1 strh r0, [r7] cmp r0, r6 bhi _08029766 movs r0, 0x3 _0802977A: subs r0, 0x1 cmp r0, 0 bge _0802977A ldr r4, _080297D4 @ =gCurrentMove ldrh r2, [r4] ldr r3, _080297E4 @ =0x0000ffff subs r0, r5, 0x2 _08029788: adds r0, 0x2 ldrh r1, [r0] cmp r1, r2 beq _08029794 cmp r1, r3 bne _08029788 _08029794: ldr r0, _080297E4 @ =0x0000ffff cmp r1, r0 bne _08029766 ldr r2, _080297E8 @ =gUnknown_2023DD0 ldr r0, [r2] ldr r1, _080297EC @ =0xfffffbff ands r0, r1 str r0, [r2] ldr r3, _080297F0 @ =gUnknown_81D65A8 ldr r2, _080297F4 @ =gBattleMoves ldrh r1, [r4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0] lsls r0, 2 adds r0, r3 ldr r0, [r0] mov r1, r8 str r0, [r1] ldrh r0, [r4] movs r1, 0 bl GetMoveTarget ldr r1, _080297F8 @ =gBattlerTarget strb r0, [r1] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080297D4: .4byte gCurrentMove _080297D8: .4byte gUnknown_82507E8 _080297DC: .4byte gUnknown_2023D74 _080297E0: .4byte 0x000001ff _080297E4: .4byte 0x0000ffff _080297E8: .4byte gUnknown_2023DD0 _080297EC: .4byte 0xfffffbff _080297F0: .4byte gUnknown_81D65A8 _080297F4: .4byte gBattleMoves _080297F8: .4byte gBattlerTarget thumb_func_end atk9E_metronome thumb_func_start atk9F_dmgtolevel atk9F_dmgtolevel: @ 80297FC ldr r3, _0802981C @ =gBattleMoveDamage ldr r2, _08029820 @ =gBattleMons ldr r0, _08029824 @ =sBattler_AI ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x2A ldrb r0, [r0] str r0, [r3] ldr r1, _08029828 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] bx lr .align 2, 0 _0802981C: .4byte gBattleMoveDamage _08029820: .4byte gBattleMons _08029824: .4byte sBattler_AI _08029828: .4byte gUnknown_2023D74 thumb_func_end atk9F_dmgtolevel thumb_func_start atkA0_psywavedamageeffect atkA0_psywavedamageeffect: @ 802982C push {r4,lr} movs r4, 0xF _08029830: bl Random adds r3, r4, 0 ands r3, r0 cmp r3, 0xA bgt _08029830 lsls r0, r3, 2 adds r0, r3 lsls r3, r0, 1 ldr r4, _08029870 @ =gBattleMoveDamage ldr r2, _08029874 @ =gBattleMons ldr r0, _08029878 @ =sBattler_AI ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x2A ldrb r1, [r0] adds r0, r3, 0 adds r0, 0x32 muls r0, r1 movs r1, 0x64 bl __divsi3 str r0, [r4] ldr r1, _0802987C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _08029870: .4byte gBattleMoveDamage _08029874: .4byte gBattleMons _08029878: .4byte sBattler_AI _0802987C: .4byte gUnknown_2023D74 thumb_func_end atkA0_psywavedamageeffect thumb_func_start atkA1_counterdamagecalculator atkA1_counterdamagecalculator: @ 8029880 push {r4-r6,lr} ldr r4, _080298F0 @ =sBattler_AI ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 lsrs r6, r0, 24 ldr r5, _080298F4 @ =gUnknown_2023E8C ldrb r0, [r4] lsls r0, 4 adds r0, r5 ldrb r0, [r0, 0xC] bl GetBattlerSide lsls r0, 24 lsrs r2, r0, 24 ldrb r0, [r4] lsls r1, r0, 4 adds r0, r5, 0x4 adds r0, r1, r0 ldr r3, [r0] cmp r3, 0 beq _08029934 cmp r6, r2 beq _08029934 ldr r6, _080298F8 @ =gBattleMons adds r0, r1, r5 ldrb r0, [r0, 0xC] movs r4, 0x58 muls r0, r4 adds r0, r6 ldrh r0, [r0, 0x28] cmp r0, 0 beq _08029934 ldr r1, _080298FC @ =gBattleMoveDamage lsls r0, r3, 1 str r0, [r1] ldr r1, _08029900 @ =gSideTimers lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r1, r0, r1 ldrb r0, [r1, 0x8] cmp r0, 0 beq _08029908 ldrb r1, [r1, 0x9] adds r0, r1, 0 muls r0, r4 adds r0, r6 ldrh r0, [r0, 0x28] cmp r0, 0 beq _08029908 ldr r0, _08029904 @ =gBattlerTarget strb r1, [r0] b _08029918 .align 2, 0 _080298F0: .4byte sBattler_AI _080298F4: .4byte gUnknown_2023E8C _080298F8: .4byte gBattleMons _080298FC: .4byte gBattleMoveDamage _08029900: .4byte gSideTimers _08029904: .4byte gBattlerTarget _08029908: ldr r2, _08029924 @ =gBattlerTarget ldr r1, _08029928 @ =gUnknown_2023E8C ldr r0, _0802992C @ =sBattler_AI ldrb r0, [r0] lsls r0, 4 adds r0, r1 ldrb r0, [r0, 0xC] strb r0, [r2] _08029918: ldr r1, _08029930 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08029964 .align 2, 0 _08029924: .4byte gBattlerTarget _08029928: .4byte gUnknown_2023E8C _0802992C: .4byte sBattler_AI _08029930: .4byte gUnknown_2023D74 _08029934: ldr r2, _0802996C @ =gUnknown_2023ECC ldr r0, _08029970 @ =sBattler_AI ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r2, 0x20 orrs r1, r2 strb r1, [r0] ldr r3, _08029974 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08029964: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0802996C: .4byte gUnknown_2023ECC _08029970: .4byte sBattler_AI _08029974: .4byte gUnknown_2023D74 thumb_func_end atkA1_counterdamagecalculator thumb_func_start atkA2_mirrorcoatdamagecalculator atkA2_mirrorcoatdamagecalculator: @ 8029978 push {r4-r6,lr} ldr r4, _080299E8 @ =sBattler_AI ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 lsrs r6, r0, 24 ldr r5, _080299EC @ =gUnknown_2023E8C ldrb r0, [r4] lsls r0, 4 adds r0, r5 ldrb r0, [r0, 0xD] bl GetBattlerSide lsls r0, 24 lsrs r2, r0, 24 ldrb r0, [r4] lsls r1, r0, 4 adds r0, r5, 0 adds r0, 0x8 adds r0, r1, r0 ldr r3, [r0] cmp r3, 0 beq _08029A2C cmp r6, r2 beq _08029A2C ldr r6, _080299F0 @ =gBattleMons adds r0, r1, r5 ldrb r0, [r0, 0xD] movs r4, 0x58 muls r0, r4 adds r0, r6 ldrh r0, [r0, 0x28] cmp r0, 0 beq _08029A2C ldr r1, _080299F4 @ =gBattleMoveDamage lsls r0, r3, 1 str r0, [r1] ldr r1, _080299F8 @ =gSideTimers lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r1, r0, r1 ldrb r0, [r1, 0x8] cmp r0, 0 beq _08029A00 ldrb r1, [r1, 0x9] adds r0, r1, 0 muls r0, r4 adds r0, r6 ldrh r0, [r0, 0x28] cmp r0, 0 beq _08029A00 ldr r0, _080299FC @ =gBattlerTarget strb r1, [r0] b _08029A10 .align 2, 0 _080299E8: .4byte sBattler_AI _080299EC: .4byte gUnknown_2023E8C _080299F0: .4byte gBattleMons _080299F4: .4byte gBattleMoveDamage _080299F8: .4byte gSideTimers _080299FC: .4byte gBattlerTarget _08029A00: ldr r2, _08029A1C @ =gBattlerTarget ldr r1, _08029A20 @ =gUnknown_2023E8C ldr r0, _08029A24 @ =sBattler_AI ldrb r0, [r0] lsls r0, 4 adds r0, r1 ldrb r0, [r0, 0xD] strb r0, [r2] _08029A10: ldr r1, _08029A28 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08029A5C .align 2, 0 _08029A1C: .4byte gBattlerTarget _08029A20: .4byte gUnknown_2023E8C _08029A24: .4byte sBattler_AI _08029A28: .4byte gUnknown_2023D74 _08029A2C: ldr r2, _08029A64 @ =gUnknown_2023ECC ldr r0, _08029A68 @ =sBattler_AI ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r2, 0x20 orrs r1, r2 strb r1, [r0] ldr r3, _08029A6C @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08029A5C: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08029A64: .4byte gUnknown_2023ECC _08029A68: .4byte sBattler_AI _08029A6C: .4byte gUnknown_2023D74 thumb_func_end atkA2_mirrorcoatdamagecalculator thumb_func_start atkA3_disablelastusedattack atkA3_disablelastusedattack: @ 8029A70 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} movs r4, 0 ldr r2, _08029B70 @ =gBattleMons ldr r3, _08029B74 @ =gBattlerTarget ldrb r1, [r3] movs r0, 0x58 muls r0, r1 adds r7, r2, 0 adds r7, 0xC adds r0, r7 ldr r5, _08029B78 @ =gLastUsedMove lsls r1, 1 adds r1, r5 ldrh r0, [r0] mov r9, r2 adds r6, r3, 0 ldr r2, _08029B7C @ =gDisableStructs mov r8, r2 ldrh r1, [r1] cmp r0, r1 beq _08029AC4 mov r12, r6 movs r3, 0x58 _08029AA4: adds r4, 0x1 cmp r4, 0x3 bgt _08029AC4 lsls r2, r4, 1 mov r0, r12 ldrb r1, [r0] adds r0, r1, 0 muls r0, r3 adds r2, r0 adds r2, r7 lsls r1, 1 adds r1, r5 ldrh r0, [r2] ldrh r1, [r1] cmp r0, r1 bne _08029AA4 _08029AC4: ldrb r1, [r6] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 add r0, r8 ldrh r0, [r0, 0x4] cmp r0, 0 bne _08029B88 cmp r4, 0x4 beq _08029B88 movs r5, 0x58 adds r0, r1, 0 muls r0, r5 adds r0, r4, r0 mov r1, r9 adds r1, 0x24 adds r0, r1 ldrb r0, [r0] cmp r0, 0 beq _08029B88 ldr r1, _08029B80 @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x2 strb r0, [r1, 0x1] lsls r2, r4, 1 ldrb r0, [r6] muls r0, r5 adds r0, r2, r0 mov r3, r9 adds r3, 0xC adds r0, r3 ldrh r0, [r0] strb r0, [r1, 0x2] ldrb r0, [r6] muls r0, r5 adds r0, r2, r0 adds r0, r3 ldrh r0, [r0] lsrs r0, 8 strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldrb r1, [r6] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 add r0, r8 muls r1, r5 adds r2, r1 adds r2, r3 ldrh r1, [r2] strh r1, [r0, 0x4] bl Random ldrb r2, [r6] lsls r1, r2, 3 subs r1, r2 lsls r1, 2 add r1, r8 movs r2, 0x3 ands r2, r0 adds r2, 0x2 ldrb r3, [r1, 0xB] movs r0, 0x10 negs r0, r0 ands r0, r3 orrs r0, r2 strb r0, [r1, 0xB] ldrb r0, [r6] lsls r1, r0, 3 subs r1, r0 lsls r1, 2 add r1, r8 ldrb r3, [r1, 0xB] lsls r2, r3, 28 lsrs r2, 24 movs r0, 0xF ands r0, r3 orrs r0, r2 strb r0, [r1, 0xB] ldr r1, _08029B84 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08029BA2 .align 2, 0 _08029B70: .4byte gBattleMons _08029B74: .4byte gBattlerTarget _08029B78: .4byte gLastUsedMove _08029B7C: .4byte gDisableStructs _08029B80: .4byte gBattleTextBuff1 _08029B84: .4byte gUnknown_2023D74 _08029B88: ldr r3, _08029BB0 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08029BA2: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08029BB0: .4byte gUnknown_2023D74 thumb_func_end atkA3_disablelastusedattack thumb_func_start atkA4_trysetencore atkA4_trysetencore: @ 8029BB4 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} movs r5, 0 ldr r3, _08029CA8 @ =gBattleMons ldr r4, _08029CAC @ =gBattlerTarget ldrb r1, [r4] movs r0, 0x58 muls r0, r1 adds r6, r3, 0 adds r6, 0xC adds r0, r6 ldr r2, _08029CB0 @ =gLastUsedMove lsls r1, 1 adds r1, r2 ldrh r0, [r0] mov r10, r3 mov r8, r2 ldr r2, _08029CB4 @ =gDisableStructs mov r9, r2 ldrh r1, [r1] cmp r0, r1 beq _08029C0E mov r12, r4 adds r7, r6, 0 mov r6, r8 movs r3, 0x58 _08029BEE: adds r5, 0x1 cmp r5, 0x3 bgt _08029C0E lsls r2, r5, 1 mov r0, r12 ldrb r1, [r0] adds r0, r1, 0 muls r0, r3 adds r2, r0 adds r2, r7 lsls r1, 1 adds r1, r6 ldrh r0, [r2] ldrh r1, [r1] cmp r0, r1 bne _08029BEE _08029C0E: ldrb r0, [r4] lsls r0, 1 add r0, r8 ldrh r2, [r0] cmp r2, 0xA5 beq _08029C22 cmp r2, 0xE3 beq _08029C22 cmp r2, 0x77 bne _08029C24 _08029C22: movs r5, 0x4 _08029C24: ldrb r1, [r4] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 mov r2, r9 adds r3, r0, r2 ldrh r0, [r3, 0x6] cmp r0, 0 bne _08029CBC cmp r5, 0x4 beq _08029CBC movs r0, 0x58 adds r2, r1, 0 muls r2, r0 adds r0, r5, r2 mov r1, r10 adds r1, 0x24 adds r0, r1 ldrb r0, [r0] cmp r0, 0 beq _08029CBC lsls r0, r5, 1 adds r0, r2 subs r1, 0x18 adds r0, r1 ldrh r0, [r0] strh r0, [r3, 0x6] ldrb r1, [r4] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 add r0, r9 strb r5, [r0, 0xC] bl Random ldrb r2, [r4] lsls r1, r2, 3 subs r1, r2 lsls r1, 2 add r1, r9 movs r2, 0x3 ands r2, r0 adds r2, 0x3 ldrb r3, [r1, 0xE] movs r0, 0x10 negs r0, r0 ands r0, r3 orrs r0, r2 strb r0, [r1, 0xE] ldrb r0, [r4] lsls r1, r0, 3 subs r1, r0 lsls r1, 2 add r1, r9 ldrb r3, [r1, 0xE] lsls r2, r3, 28 lsrs r2, 24 movs r0, 0xF ands r0, r3 orrs r0, r2 strb r0, [r1, 0xE] ldr r1, _08029CB8 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08029CD6 .align 2, 0 _08029CA8: .4byte gBattleMons _08029CAC: .4byte gBattlerTarget _08029CB0: .4byte gLastUsedMove _08029CB4: .4byte gDisableStructs _08029CB8: .4byte gUnknown_2023D74 _08029CBC: ldr r3, _08029CE4 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08029CD6: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08029CE4: .4byte gUnknown_2023D74 thumb_func_end atkA4_trysetencore thumb_func_start atkA5_painsplitdmgcalc atkA5_painsplitdmgcalc: @ 8029CE8 push {r4-r7,lr} ldr r6, _08029D68 @ =gBattleMons ldr r0, _08029D6C @ =gBattlerTarget mov r12, r0 ldrb r0, [r0] movs r7, 0x58 adds r2, r0, 0 muls r2, r7 adds r0, r6, 0 adds r0, 0x50 adds r0, r2, r0 ldr r0, [r0] movs r1, 0x80 lsls r1, 17 ands r0, r1 cmp r0, 0 bne _08029D88 ldr r5, _08029D70 @ =sBattler_AI ldrb r0, [r5] muls r0, r7 adds r0, r6 ldrh r3, [r0, 0x28] adds r0, r2, r6 ldrh r1, [r0, 0x28] adds r3, r1 asrs r3, 1 ldr r4, _08029D74 @ =gBattleMoveDamage subs r1, r3 str r1, [r4] ldr r2, _08029D78 @ =gBattleScripting strb r1, [r2] movs r0, 0xFF lsls r0, 8 ands r0, r1 asrs r0, 8 strb r0, [r2, 0x1] movs r0, 0xFF lsls r0, 16 ands r0, r1 asrs r0, 16 strb r0, [r2, 0x2] lsrs r1, 24 strb r1, [r2, 0x3] ldrb r0, [r5] muls r0, r7 adds r0, r6 ldrh r0, [r0, 0x28] subs r0, r3 str r0, [r4] ldr r2, _08029D7C @ =gUnknown_2023ECC mov r0, r12 ldrb r1, [r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r2, 0x4 adds r0, r2 ldr r1, _08029D80 @ =0x0000ffff str r1, [r0] ldr r1, _08029D84 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08029DA2 .align 2, 0 _08029D68: .4byte gBattleMons _08029D6C: .4byte gBattlerTarget _08029D70: .4byte sBattler_AI _08029D74: .4byte gBattleMoveDamage _08029D78: .4byte gBattleScripting _08029D7C: .4byte gUnknown_2023ECC _08029D80: .4byte 0x0000ffff _08029D84: .4byte gUnknown_2023D74 _08029D88: ldr r3, _08029DA8 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _08029DA2: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08029DA8: .4byte gUnknown_2023D74 thumb_func_end atkA5_painsplitdmgcalc thumb_func_start atkA6_settypetorandomresistance atkA6_settypetorandomresistance: @ 8029DAC push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} ldr r1, _08029E14 @ =gUnknown_2023DA0 ldr r4, _08029E18 @ =sBattler_AI ldrb r0, [r4] lsls r0, 1 adds r2, r0, r1 ldrh r1, [r2] cmp r1, 0 beq _08029DF6 ldr r0, _08029E1C @ =0x0000ffff cmp r1, r0 beq _08029DF6 ldrh r0, [r2] bl IsTwoTurnsMove lsls r0, 24 cmp r0, 0 beq _08029E94 ldr r1, _08029E20 @ =gBattleMons ldr r2, _08029E24 @ =gUnknown_2023DC0 ldrb r0, [r4] adds r0, r2 ldrb r2, [r0] movs r0, 0x58 muls r0, r2 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 5 ands r0, r1 cmp r0, 0 beq _08029E94 _08029DF6: ldr r3, _08029E28 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _08029F80 .align 2, 0 _08029E14: .4byte gUnknown_2023DA0 _08029E18: .4byte sBattler_AI _08029E1C: .4byte 0x0000ffff _08029E20: .4byte gBattleMons _08029E24: .4byte gUnknown_2023DC0 _08029E28: .4byte gUnknown_2023D74 _08029E2C: mov r0, r12 strb r5, [r0] mov r1, r10 ldrb r0, [r1] muls r0, r2 adds r0, r7 adds r0, 0x22 strb r5, [r0] ldr r1, _08029E50 @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x3 strb r0, [r1, 0x1] strb r5, [r1, 0x2] movs r0, 0xFF strb r0, [r1, 0x3] ldr r1, _08029E54 @ =gUnknown_2023D74 b _08029E82 .align 2, 0 _08029E50: .4byte gBattleTextBuff1 _08029E54: .4byte gUnknown_2023D74 _08029E58: mov r0, r8 adds r0, 0x1 adds r0, r3 ldrb r2, [r0] strb r2, [r4] mov r4, r10 ldrb r0, [r4] muls r0, r6 ldr r7, _08029E8C @ =gBattleMons adds r0, r7 adds r0, 0x22 strb r2, [r0] ldr r1, _08029E90 @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x3 strb r0, [r1, 0x1] strb r2, [r1, 0x2] movs r0, 0xFF strb r0, [r1, 0x3] mov r1, r12 _08029E82: ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _08029F80 .align 2, 0 _08029E8C: .4byte gBattleMons _08029E90: .4byte gBattleTextBuff1 _08029E94: movs r4, 0 mov r8, r4 movs r7, 0x7F mov r9, r7 _08029E9C: bl Random mov r4, r9 ands r4, r0 cmp r4, 0x70 bhi _08029E9C lsls r0, r4, 1 adds r4, r0, r4 ldr r6, _08029F90 @ =gUnknown_824F050 adds r3, r4, r6 ldr r1, _08029F94 @ =gUnknown_2023DA8 ldr r2, _08029F98 @ =sBattler_AI ldrb r5, [r2] lsls r0, r5, 1 adds r0, r1 ldrb r1, [r3] mov r10, r2 ldrh r0, [r0] cmp r1, r0 bne _08029EF8 adds r0, r4, 0x2 adds r0, r6 ldrb r0, [r0] cmp r0, 0x5 bhi _08029EF8 ldr r7, _08029F9C @ =gBattleMons movs r2, 0x58 adds r0, r5, 0 muls r0, r2 adds r3, r0, r7 movs r0, 0x21 adds r0, r3 mov r12, r0 adds r0, r4, 0x1 adds r0, r6 ldrb r5, [r0] mov r1, r12 ldrb r0, [r1] adds r1, r5, 0 cmp r0, r1 beq _08029EF8 adds r0, r3, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, r1 bne _08029E2C _08029EF8: movs r7, 0x1 add r8, r7 ldr r0, _08029FA0 @ =0x000003e7 cmp r8, r0 ble _08029E9C movs r0, 0 mov r8, r0 ldr r1, _08029FA4 @ =gUnknown_2023D74 mov r12, r1 ldr r3, _08029F90 @ =gUnknown_824F050 adds r0, r4, 0x1 adds r0, r3 mov r9, r0 adds r5, r3, 0 _08029F14: ldrb r1, [r5] cmp r1, 0xFF bgt _08029F1E cmp r1, 0xFE bge _08029F58 _08029F1E: mov r4, r10 ldrb r2, [r4] lsls r0, r2, 1 ldr r7, _08029F94 @ =gUnknown_2023DA8 adds r0, r7 ldrh r0, [r0] cmp r1, r0 bne _08029F58 ldrb r0, [r5, 0x2] cmp r0, 0x5 bhi _08029F58 movs r6, 0x58 adds r0, r2, 0 muls r0, r6 ldr r1, _08029F9C @ =gBattleMons adds r2, r0, r1 adds r4, r2, 0 adds r4, 0x21 ldrb r0, [r4] mov r7, r9 ldrb r1, [r7] cmp r0, r1 beq _08029F58 adds r0, r2, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, r1 beq _08029F58 b _08029E58 _08029F58: adds r5, 0x3 movs r0, 0x3 add r8, r0 ldr r0, _08029FA8 @ =0x0000014f cmp r8, r0 bls _08029F14 mov r1, r12 ldr r2, [r1] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 mov r4, r12 str r1, [r4] _08029F80: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08029F90: .4byte gUnknown_824F050 _08029F94: .4byte gUnknown_2023DA8 _08029F98: .4byte sBattler_AI _08029F9C: .4byte gBattleMons _08029FA0: .4byte 0x000003e7 _08029FA4: .4byte gUnknown_2023D74 _08029FA8: .4byte 0x0000014f thumb_func_end atkA6_settypetorandomresistance thumb_func_start atkA7_setalwayshitflag atkA7_setalwayshitflag: @ 8029FAC push {r4,lr} ldr r4, _08029FF0 @ =gStatuses3 ldr r3, _08029FF4 @ =gBattlerTarget ldrb r1, [r3] lsls r1, 2 adds r1, r4 ldr r0, [r1] movs r2, 0x19 negs r2, r2 ands r0, r2 str r0, [r1] ldrb r1, [r3] lsls r1, 2 adds r1, r4 ldr r0, [r1] movs r2, 0x10 orrs r0, r2 str r0, [r1] ldr r2, _08029FF8 @ =gDisableStructs ldrb r1, [r3] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r2 ldr r1, _08029FFC @ =sBattler_AI ldrb r1, [r1] strb r1, [r0, 0x15] ldr r1, _0802A000 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _08029FF0: .4byte gStatuses3 _08029FF4: .4byte gBattlerTarget _08029FF8: .4byte gDisableStructs _08029FFC: .4byte sBattler_AI _0802A000: .4byte gUnknown_2023D74 thumb_func_end atkA7_setalwayshitflag thumb_func_start atkA8_copymovepermanently atkA8_copymovepermanently: @ 802A004 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x14 ldr r0, _0802A164 @ =gUnknown_2023D4C ldr r1, _0802A168 @ =0x0000ffff adds r5, r1, 0 strh r5, [r0] ldr r3, _0802A16C @ =gBattleMons ldr r2, _0802A170 @ =sBattler_AI ldrb r1, [r2] movs r0, 0x58 adds r4, r1, 0 muls r4, r0 adds r0, r3, 0 adds r0, 0x50 adds r0, r4, r0 ldr r1, [r0] movs r0, 0x80 lsls r0, 14 ands r1, r0 mov r12, r3 mov r10, r2 cmp r1, 0 beq _0802A03C b _0802A190 _0802A03C: ldr r0, _0802A174 @ =gUnknown_2023D90 ldr r2, _0802A178 @ =gBattlerTarget ldrb r1, [r2] lsls r1, 1 adds r1, r0 ldrh r1, [r1] mov r9, r0 mov r8, r2 cmp r1, 0xA5 bne _0802A052 b _0802A190 _0802A052: cmp r1, 0 bne _0802A058 b _0802A190 _0802A058: cmp r1, r5 bne _0802A05E b _0802A190 _0802A05E: cmp r1, 0xA6 bne _0802A064 b _0802A190 _0802A064: movs r7, 0 mov r5, r9 mov r0, r12 adds r0, 0xC adds r1, r4, r0 mov r3, r8 _0802A070: ldrh r2, [r1] cmp r2, 0xA6 beq _0802A082 ldrb r0, [r3] lsls r0, 1 adds r0, r5 ldrh r0, [r0] cmp r2, r0 beq _0802A08A _0802A082: adds r1, 0x2 adds r7, 0x1 cmp r7, 0x3 ble _0802A070 _0802A08A: cmp r7, 0x4 beq _0802A090 b _0802A190 _0802A090: ldr r4, _0802A17C @ =gUnknown_2023D48 ldrb r1, [r4] lsls r1, 1 mov r2, r10 ldrb r0, [r2] movs r3, 0x58 muls r0, r3 adds r1, r0 mov r6, r12 adds r6, 0xC adds r1, r6 mov r2, r8 ldrb r0, [r2] lsls r0, 1 add r0, r9 ldrh r0, [r0] strh r0, [r1] mov r1, r10 ldrb r0, [r1] adds r2, r0, 0 muls r2, r3 ldrb r4, [r4] adds r2, r4 mov r5, r12 adds r5, 0x24 adds r2, r5 ldr r4, _0802A180 @ =gBattleMoves mov r1, r8 ldrb r0, [r1] lsls r0, 1 add r0, r9 ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r4 ldrb r0, [r0, 0x4] strb r0, [r2] ldr r1, _0802A184 @ =gActiveBattler mov r2, r10 ldrb r0, [r2] strb r0, [r1] movs r7, 0 ldrb r0, [r2] muls r0, r3 adds r4, r0, r5 adds r3, r0, 0 add r2, sp, 0x4 add r5, sp, 0xC _0802A0F2: adds r0, r3, r6 ldrh r0, [r0] strh r0, [r2] adds r1, r5, r7 ldrb r0, [r4] strb r0, [r1] adds r4, 0x1 adds r3, 0x2 adds r2, 0x2 adds r7, 0x1 cmp r7, 0x3 ble _0802A0F2 add r2, sp, 0x4 mov r0, r10 ldrb r1, [r0] movs r0, 0x58 muls r0, r1 add r0, r12 adds r0, 0x3B ldrb r0, [r0] strb r0, [r2, 0xC] str r2, [sp] movs r0, 0 movs r1, 0x3 movs r2, 0 movs r3, 0x10 bl EmitSetMonData ldr r0, _0802A184 @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution ldr r1, _0802A188 @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x2 strb r0, [r1, 0x1] ldr r3, _0802A174 @ =gUnknown_2023D90 ldr r2, _0802A178 @ =gBattlerTarget ldrb r0, [r2] lsls r0, 1 adds r0, r3 ldrh r0, [r0] strb r0, [r1, 0x2] ldrb r0, [r2] lsls r0, 1 adds r0, r3 ldrh r0, [r0] lsrs r0, 8 strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldr r1, _0802A18C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802A1AA .align 2, 0 _0802A164: .4byte gUnknown_2023D4C _0802A168: .4byte 0x0000ffff _0802A16C: .4byte gBattleMons _0802A170: .4byte sBattler_AI _0802A174: .4byte gUnknown_2023D90 _0802A178: .4byte gBattlerTarget _0802A17C: .4byte gUnknown_2023D48 _0802A180: .4byte gBattleMoves _0802A184: .4byte gActiveBattler _0802A188: .4byte gBattleTextBuff1 _0802A18C: .4byte gUnknown_2023D74 _0802A190: ldr r3, _0802A1BC @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802A1AA: add sp, 0x14 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802A1BC: .4byte gUnknown_2023D74 thumb_func_end atkA8_copymovepermanently thumb_func_start IsTwoTurnsMove IsTwoTurnsMove: @ 802A1C0 push {lr} lsls r0, 16 lsrs r0, 16 ldr r2, _0802A1F0 @ =gBattleMoves lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r2 ldrb r0, [r1] cmp r0, 0x91 beq _0802A1EA cmp r0, 0x27 beq _0802A1EA cmp r0, 0x4B beq _0802A1EA cmp r0, 0x97 beq _0802A1EA cmp r0, 0x9B beq _0802A1EA cmp r0, 0x1A bne _0802A1F4 _0802A1EA: movs r0, 0x1 b _0802A1F6 .align 2, 0 _0802A1F0: .4byte gBattleMoves _0802A1F4: movs r0, 0 _0802A1F6: pop {r1} bx r1 thumb_func_end IsTwoTurnsMove thumb_func_start IsInvalidForSleepTalkOrAssist IsInvalidForSleepTalkOrAssist: @ 802A1FC push {lr} lsls r0, 16 lsrs r1, r0, 16 cmp r1, 0 beq _0802A21A cmp r1, 0xD6 beq _0802A21A movs r0, 0x89 lsls r0, 1 cmp r1, r0 beq _0802A21A cmp r1, 0x77 beq _0802A21A cmp r1, 0x76 bne _0802A21E _0802A21A: movs r0, 0x1 b _0802A220 _0802A21E: movs r0, 0 _0802A220: pop {r1} bx r1 thumb_func_end IsInvalidForSleepTalkOrAssist thumb_func_start AttacksThisTurn AttacksThisTurn: @ 802A224 push {lr} lsls r1, 16 lsrs r2, r1, 16 ldr r1, _0802A27C @ =gBattleMoves lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r1 ldrb r0, [r0] adds r3, r1, 0 cmp r0, 0x97 bne _0802A248 ldr r0, _0802A280 @ =gBattleWeather ldrh r1, [r0] movs r0, 0x60 ands r0, r1 cmp r0, 0 bne _0802A288 _0802A248: lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r3 ldrb r0, [r0] cmp r0, 0x91 beq _0802A26A cmp r0, 0x27 beq _0802A26A cmp r0, 0x4B beq _0802A26A cmp r0, 0x97 beq _0802A26A cmp r0, 0x9B beq _0802A26A cmp r0, 0x1A bne _0802A288 _0802A26A: ldr r0, _0802A284 @ =gUnknown_2023DD0 ldr r0, [r0] movs r1, 0x80 lsls r1, 20 ands r0, r1 cmp r0, 0 beq _0802A288 movs r0, 0x1 b _0802A28A .align 2, 0 _0802A27C: .4byte gBattleMoves _0802A280: .4byte gBattleWeather _0802A284: .4byte gUnknown_2023DD0 _0802A288: movs r0, 0x2 _0802A28A: pop {r1} bx r1 thumb_func_end AttacksThisTurn thumb_func_start atkA9_trychoosesleeptalkmove atkA9_trychoosesleeptalkmove: @ 802A290 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} movs r6, 0 movs r5, 0 ldr r0, _0802A320 @ =sBattler_AI mov r9, r0 movs r1, 0x58 mov r8, r1 ldr r7, _0802A324 @ =gUnknown_2023BF0 movs r0, 0x84 lsls r0, 1 mov r10, r0 _0802A2AE: lsls r4, r5, 1 mov r1, r9 ldrb r0, [r1] mov r1, r8 muls r1, r0 adds r0, r1, 0 adds r0, r4, r0 adds r0, r7 ldrh r0, [r0] bl IsInvalidForSleepTalkOrAssist lsls r0, 24 cmp r0, 0 bne _0802A2EE mov r1, r9 ldrb r0, [r1] mov r1, r8 muls r1, r0 adds r0, r1, 0 adds r0, r4, r0 adds r0, r7 ldrh r1, [r0] cmp r1, r10 beq _0802A2EE cmp r1, 0xFD beq _0802A2EE adds r0, r1, 0 bl IsTwoTurnsMove lsls r0, 24 cmp r0, 0 beq _0802A2FC _0802A2EE: ldr r1, _0802A328 @ =gBitTable lsls r0, r5, 2 adds r0, r1 ldr r0, [r0] orrs r6, r0 lsls r0, r6, 24 lsrs r6, r0, 24 _0802A2FC: adds r5, 0x1 cmp r5, 0x3 ble _0802A2AE ldr r0, _0802A320 @ =sBattler_AI ldrb r0, [r0] adds r1, r6, 0 movs r2, 0xFD bl CheckMoveLimitations lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0xF bne _0802A330 ldr r1, _0802A32C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802A394 .align 2, 0 _0802A320: .4byte sBattler_AI _0802A324: .4byte gUnknown_2023BF0 _0802A328: .4byte gBitTable _0802A32C: .4byte gUnknown_2023D74 _0802A330: movs r7, 0x3 ldr r4, _0802A3A4 @ =gBitTable _0802A334: bl Random adds r5, r7, 0 ands r5, r0 lsls r0, r5, 2 adds r0, r4 ldr r0, [r0] ands r0, r6 cmp r0, 0 bne _0802A334 ldr r4, _0802A3A8 @ =gUnknown_2023D4E ldr r2, _0802A3AC @ =gBattleMons lsls r1, r5, 1 ldr r0, _0802A3B0 @ =sBattler_AI ldrb r3, [r0] movs r0, 0x58 muls r0, r3 adds r1, r0 adds r2, 0xC adds r1, r2 ldrh r0, [r1] strh r0, [r4] ldr r0, _0802A3B4 @ =gUnknown_2023D48 strb r5, [r0] ldr r2, _0802A3B8 @ =gUnknown_2023DD0 ldr r0, [r2] ldr r1, _0802A3BC @ =0xfffffbff ands r0, r1 str r0, [r2] ldrh r0, [r4] movs r1, 0 bl GetMoveTarget ldr r1, _0802A3C0 @ =gBattlerTarget strb r0, [r1] ldr r3, _0802A3C4 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802A394: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802A3A4: .4byte gBitTable _0802A3A8: .4byte gUnknown_2023D4E _0802A3AC: .4byte gBattleMons _0802A3B0: .4byte sBattler_AI _0802A3B4: .4byte gUnknown_2023D48 _0802A3B8: .4byte gUnknown_2023DD0 _0802A3BC: .4byte 0xfffffbff _0802A3C0: .4byte gBattlerTarget _0802A3C4: .4byte gUnknown_2023D74 thumb_func_end atkA9_trychoosesleeptalkmove thumb_func_start atkAA_setdestinybond atkAA_setdestinybond: @ 802A3C8 ldr r1, _0802A3EC @ =gBattleMons ldr r0, _0802A3F0 @ =sBattler_AI ldrb r2, [r0] movs r0, 0x58 muls r2, r0 adds r1, 0x50 adds r2, r1 ldr r0, [r2] movs r1, 0x80 lsls r1, 18 orrs r0, r1 str r0, [r2] ldr r1, _0802A3F4 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] bx lr .align 2, 0 _0802A3EC: .4byte gBattleMons _0802A3F0: .4byte sBattler_AI _0802A3F4: .4byte gUnknown_2023D74 thumb_func_end atkAA_setdestinybond thumb_func_start TrySetDestinyBondToHappen TrySetDestinyBondToHappen: @ 802A3F8 push {r4,r5,lr} ldr r0, _0802A448 @ =sBattler_AI ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 lsrs r5, r0, 24 ldr r4, _0802A44C @ =gBattlerTarget ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 lsrs r3, r0, 24 ldr r1, _0802A450 @ =gBattleMons ldrb r2, [r4] movs r0, 0x58 muls r0, r2 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 18 ands r0, r1 cmp r0, 0 beq _0802A442 cmp r5, r3 beq _0802A442 ldr r2, _0802A454 @ =gUnknown_2023DD0 ldr r1, [r2] movs r0, 0x80 lsls r0, 17 ands r0, r1 cmp r0, 0 bne _0802A442 movs r0, 0x40 orrs r1, r0 str r1, [r2] _0802A442: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0802A448: .4byte sBattler_AI _0802A44C: .4byte gBattlerTarget _0802A450: .4byte gBattleMons _0802A454: .4byte gUnknown_2023DD0 thumb_func_end TrySetDestinyBondToHappen thumb_func_start atkAB_trysetdestinybondtohappen atkAB_trysetdestinybondtohappen: @ 802A458 push {lr} bl TrySetDestinyBondToHappen ldr r1, _0802A46C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _0802A46C: .4byte gUnknown_2023D74 thumb_func_end atkAB_trysetdestinybondtohappen thumb_func_start atkAC_remaininghptopower atkAC_remaininghptopower: @ 802A470 push {lr} ldr r2, _0802A4C4 @ =gBattleMons ldr r0, _0802A4C8 @ =sBattler_AI ldrb r1, [r0] movs r0, 0x58 muls r1, r0 adds r1, r2 movs r2, 0x28 ldrsh r0, [r1, r2] movs r2, 0x2C ldrsh r1, [r1, r2] movs r2, 0x30 bl GetScaledHPFraction lsls r0, 24 lsrs r1, r0, 24 movs r3, 0 ldr r0, _0802A4CC @ =gUnknown_8250810 ldrb r2, [r0] cmp r1, r2 ble _0802A4AA adds r2, r0, 0 _0802A49C: adds r3, 0x2 cmp r3, 0xB bgt _0802A4AA adds r0, r3, r2 ldrb r0, [r0] cmp r1, r0 bgt _0802A49C _0802A4AA: ldr r2, _0802A4D0 @ =gDynamicBasePower ldr r1, _0802A4CC @ =gUnknown_8250810 adds r0, r3, 0x1 adds r0, r1 ldrb r0, [r0] strh r0, [r2] ldr r1, _0802A4D4 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _0802A4C4: .4byte gBattleMons _0802A4C8: .4byte sBattler_AI _0802A4CC: .4byte gUnknown_8250810 _0802A4D0: .4byte gDynamicBasePower _0802A4D4: .4byte gUnknown_2023D74 thumb_func_end atkAC_remaininghptopower thumb_func_start atkAD_tryspiteppreduce atkAD_tryspiteppreduce: @ 802A4D8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 ldr r4, _0802A658 @ =gLastUsedMove ldr r1, _0802A65C @ =gBattlerTarget ldrb r3, [r1] lsls r0, r3, 1 adds r0, r4 ldrh r2, [r0] mov r8, r1 cmp r2, 0 bne _0802A4F8 b _0802A680 _0802A4F8: ldr r0, _0802A660 @ =0x0000ffff cmp r2, r0 bne _0802A500 b _0802A680 _0802A500: movs r7, 0 ldr r0, _0802A664 @ =gBattleMons movs r1, 0x58 muls r1, r3 adds r3, r0, 0 adds r3, 0xC adds r1, r3 ldrh r1, [r1] cmp r2, r1 beq _0802A538 adds r6, r4, 0 mov r5, r8 adds r4, r3, 0 movs r3, 0x58 _0802A51C: adds r7, 0x1 cmp r7, 0x3 bgt _0802A538 ldrb r0, [r5] lsls r2, r0, 1 adds r2, r6 lsls r1, r7, 1 muls r0, r3 adds r1, r0 adds r1, r4 ldrh r0, [r2] ldrh r1, [r1] cmp r0, r1 bne _0802A51C _0802A538: cmp r7, 0x4 bne _0802A53E b _0802A680 _0802A53E: mov r4, r8 ldrb r0, [r4] movs r1, 0x58 mov r9, r1 mov r3, r9 muls r3, r0 adds r0, r3, 0 adds r0, r7, r0 ldr r1, _0802A664 @ =gBattleMons adds r1, 0x24 mov r10, r1 add r0, r10 ldrb r0, [r0] cmp r0, 0x1 bhi _0802A55E b _0802A680 _0802A55E: bl Random movs r1, 0x3 ands r1, r0 adds r6, r1, 0x2 ldrb r0, [r4] mov r3, r9 muls r3, r0 adds r0, r3, 0 adds r0, r7, r0 add r0, r10 ldrb r0, [r0] cmp r0, r6 bge _0802A57C adds r6, r0, 0 _0802A57C: ldr r1, _0802A668 @ =gBattleTextBuff1 movs r5, 0xFD strb r5, [r1] movs r0, 0x2 strb r0, [r1, 0x1] ldr r2, _0802A658 @ =gLastUsedMove mov r3, r8 ldrb r0, [r3] lsls r0, 1 adds r0, r2 ldrh r0, [r0] strb r0, [r1, 0x2] ldrb r0, [r3] lsls r0, 1 adds r0, r2 ldrh r0, [r0] lsrs r0, 8 strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldr r4, _0802A66C @ =gBattleTextBuff2 adds r0, r4, 0 adds r1, r6, 0 movs r2, 0 movs r3, 0x1 bl ConvertIntToDecimalStringN strb r5, [r4] movs r0, 0x1 strb r0, [r4, 0x1] strb r0, [r4, 0x2] strb r0, [r4, 0x3] strb r6, [r4, 0x4] subs r0, 0x2 strb r0, [r4, 0x5] mov r1, r8 ldrb r0, [r1] mov r1, r9 muls r1, r0 adds r1, r7, r1 add r1, r10 ldrb r0, [r1] subs r0, r6 strb r0, [r1] ldr r4, _0802A670 @ =gActiveBattler mov r3, r8 ldrb r0, [r3] strb r0, [r4] ldr r1, _0802A674 @ =gDisableStructs ldrb r3, [r4] lsls r0, r3, 3 subs r0, r3 lsls r0, 2 adds r0, r1 ldrb r1, [r0, 0x18] lsrs r1, 4 ldr r2, _0802A678 @ =gBitTable lsls r0, r7, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _0802A630 mov r2, r9 muls r2, r3 ldr r0, _0802A664 @ =gBattleMons adds r0, 0x50 adds r0, r2, r0 ldr r0, [r0] movs r1, 0x80 lsls r1, 14 ands r0, r1 cmp r0, 0 bne _0802A630 adds r1, r7, 0 adds r1, 0x9 lsls r1, 24 lsrs r1, 24 mov r3, r10 adds r0, r2, r3 adds r0, r7 str r0, [sp] movs r0, 0 movs r2, 0 movs r3, 0x1 bl EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution _0802A630: ldr r1, _0802A67C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] ldr r1, _0802A664 @ =gBattleMons ldr r0, _0802A65C @ =gBattlerTarget ldrb r2, [r0] movs r0, 0x58 muls r0, r2 adds r0, r7, r0 adds r1, 0x24 adds r0, r1 ldrb r0, [r0] cmp r0, 0 bne _0802A69A adds r0, r2, 0 bl CancelMultiTurnMoves b _0802A69A .align 2, 0 _0802A658: .4byte gLastUsedMove _0802A65C: .4byte gBattlerTarget _0802A660: .4byte 0x0000ffff _0802A664: .4byte gBattleMons _0802A668: .4byte gBattleTextBuff1 _0802A66C: .4byte gBattleTextBuff2 _0802A670: .4byte gActiveBattler _0802A674: .4byte gDisableStructs _0802A678: .4byte gBitTable _0802A67C: .4byte gUnknown_2023D74 _0802A680: ldr r3, _0802A6AC @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802A69A: add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802A6AC: .4byte gUnknown_2023D74 thumb_func_end atkAD_tryspiteppreduce thumb_func_start atkAE_healpartystatus atkAE_healpartystatus: @ 802A6B0 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 movs r4, 0 str r4, [sp, 0x4] mov r8, r4 ldr r0, _0802A720 @ =gCurrentMove ldrh r0, [r0] cmp r0, 0xD7 beq _0802A6CC b _0802A8B6 _0802A6CC: ldr r6, _0802A724 @ =gUnknown_2023E82 mov r0, r8 strb r0, [r6, 0x5] ldr r5, _0802A728 @ =sBattler_AI ldrb r0, [r5] bl GetBattlerSide lsls r0, 24 ldr r1, _0802A72C @ =gEnemyParty mov r10, r1 cmp r0, 0 bne _0802A6E8 ldr r2, _0802A730 @ =gPlayerParty mov r10, r2 _0802A6E8: ldr r4, _0802A734 @ =gBattleMons ldrb r3, [r5] movs r7, 0x58 adds r2, r3, 0 muls r2, r7 adds r0, r2, r4 adds r1, r0, 0 adds r1, 0x20 ldrb r0, [r1] cmp r0, 0x2B beq _0802A73C adds r0, r4, 0 adds r0, 0x4C adds r0, r2, r0 mov r1, r8 str r1, [r0] ldrb r0, [r5] adds r2, r0, 0 muls r2, r7 adds r0, r4, 0 adds r0, 0x50 adds r2, r0 ldr r0, [r2] ldr r1, _0802A738 @ =0xf7ffffff ands r0, r1 str r0, [r2] b _0802A74C .align 2, 0 _0802A720: .4byte gCurrentMove _0802A724: .4byte gUnknown_2023E82 _0802A728: .4byte sBattler_AI _0802A72C: .4byte gEnemyParty _0802A730: .4byte gPlayerParty _0802A734: .4byte gBattleMons _0802A738: .4byte 0xf7ffffff _0802A73C: ldrb r1, [r1] adds r0, r3, 0 bl sub_80C71D0 ldrb r0, [r6, 0x5] movs r1, 0x1 orrs r0, r1 strb r0, [r6, 0x5] _0802A74C: ldr r7, _0802A7C0 @ =gActiveBattler ldr r0, _0802A7C4 @ =sBattler_AI ldrb r0, [r0] bl GetBattlerPosition movs r2, 0x2 mov r9, r2 mov r1, r9 eors r0, r1 lsls r0, 24 lsrs r0, 24 bl GetBattlerAtPosition ldr r1, _0802A7C8 @ =gBattleScripting strb r0, [r1, 0x17] strb r0, [r7] ldr r0, _0802A7CC @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _0802A7F2 ldr r0, _0802A7D0 @ =gAbsentBattlerFlags ldrb r2, [r0] ldr r1, _0802A7D4 @ =gBitTable ldrb r3, [r7] lsls r0, r3, 2 adds r0, r1 ldr r0, [r0] ands r2, r0 cmp r2, 0 bne _0802A7F2 ldr r5, _0802A7D8 @ =gBattleMons movs r6, 0x58 adds r4, r3, 0 muls r4, r6 adds r0, r4, r5 adds r1, r0, 0 adds r1, 0x20 ldrb r0, [r1] cmp r0, 0x2B beq _0802A7E0 adds r0, r5, 0 adds r0, 0x4C adds r0, r4, r0 str r2, [r0] ldrb r0, [r7] adds r2, r0, 0 muls r2, r6 adds r0, r5, 0 adds r0, 0x50 adds r2, r0 ldr r0, [r2] ldr r1, _0802A7DC @ =0xf7ffffff ands r0, r1 str r0, [r2] b _0802A7F2 .align 2, 0 _0802A7C0: .4byte gActiveBattler _0802A7C4: .4byte sBattler_AI _0802A7C8: .4byte gBattleScripting _0802A7CC: .4byte gBattleTypeFlags _0802A7D0: .4byte gAbsentBattlerFlags _0802A7D4: .4byte gBitTable _0802A7D8: .4byte gBattleMons _0802A7DC: .4byte 0xf7ffffff _0802A7E0: ldrb r1, [r1] adds r0, r3, 0 bl sub_80C71D0 ldr r1, _0802A838 @ =gUnknown_2023E82 ldrb r0, [r1, 0x5] mov r2, r9 orrs r0, r2 strb r0, [r1, 0x5] _0802A7F2: movs r6, 0 ldr r7, _0802A83C @ =gBattleMons _0802A7F6: movs r0, 0x64 adds r4, r6, 0 muls r4, r0 add r4, r10 adds r0, r4, 0 movs r1, 0x41 bl GetMonData lsls r0, 16 lsrs r5, r0, 16 adds r0, r4, 0 movs r1, 0x2E bl GetMonData lsls r0, 24 lsrs r4, r0, 24 cmp r5, 0 beq _0802A8AE movs r0, 0xCE lsls r0, 1 cmp r5, r0 beq _0802A8AE ldr r2, _0802A840 @ =gBattlerPartyIndexes ldr r0, _0802A844 @ =sBattler_AI ldrb r1, [r0] lsls r0, r1, 1 adds r0, r2 ldrh r0, [r0] cmp r0, r6 bne _0802A848 movs r0, 0x58 muls r0, r1 b _0802A878 .align 2, 0 _0802A838: .4byte gUnknown_2023E82 _0802A83C: .4byte gBattleMons _0802A840: .4byte gBattlerPartyIndexes _0802A844: .4byte sBattler_AI _0802A848: ldr r0, _0802A880 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _0802A890 ldr r0, _0802A884 @ =gActiveBattler ldrb r3, [r0] lsls r0, r3, 1 adds r0, r2 ldrh r0, [r0] cmp r0, r6 bne _0802A890 ldr r0, _0802A888 @ =gAbsentBattlerFlags ldrb r1, [r0] ldr r2, _0802A88C @ =gBitTable lsls r0, r3, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _0802A890 movs r0, 0x58 muls r0, r3 _0802A878: adds r0, r7 adds r0, 0x20 ldrb r0, [r0] b _0802A89C .align 2, 0 _0802A880: .4byte gBattleTypeFlags _0802A884: .4byte gActiveBattler _0802A888: .4byte gAbsentBattlerFlags _0802A88C: .4byte gBitTable _0802A890: adds r0, r5, 0 adds r1, r4, 0 bl GetAbilityBySpecies lsls r0, 24 lsrs r0, 24 _0802A89C: cmp r0, 0x2B beq _0802A8AE movs r0, 0x1 lsls r0, r6 mov r1, r8 orrs r1, r0 lsls r0, r1, 24 lsrs r0, 24 mov r8, r0 _0802A8AE: adds r6, 0x1 cmp r6, 0x5 ble _0802A7F6 b _0802A934 _0802A8B6: ldr r1, _0802A970 @ =gUnknown_2023E82 movs r0, 0x4 strb r0, [r1, 0x5] movs r2, 0x3F mov r8, r2 ldr r3, _0802A974 @ =gBattleMons ldr r2, _0802A978 @ =sBattler_AI ldrb r0, [r2] movs r5, 0x58 muls r0, r5 movs r1, 0x4C adds r1, r3 mov r9, r1 add r0, r9 str r4, [r0] ldrb r0, [r2] adds r1, r0, 0 muls r1, r5 adds r7, r3, 0 adds r7, 0x50 adds r1, r7 ldr r0, [r1] ldr r6, _0802A97C @ =0xf7ffffff ands r0, r6 str r0, [r1] ldrb r0, [r2] bl GetBattlerPosition movs r1, 0x2 eors r0, r1 lsls r0, 24 lsrs r0, 24 bl GetBattlerAtPosition ldr r4, _0802A980 @ =gActiveBattler strb r0, [r4] ldr r0, _0802A984 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _0802A934 ldr r0, _0802A988 @ =gAbsentBattlerFlags ldrb r2, [r0] ldr r1, _0802A98C @ =gBitTable ldrb r3, [r4] lsls r0, r3, 2 adds r0, r1 ldr r0, [r0] ands r2, r0 cmp r2, 0 bne _0802A934 adds r0, r3, 0 muls r0, r5 add r0, r9 str r2, [r0] ldrb r0, [r4] adds r1, r0, 0 muls r1, r5 adds r1, r7 ldr r0, [r1] ands r0, r6 str r0, [r1] _0802A934: mov r2, r8 cmp r2, 0 beq _0802A956 ldr r4, _0802A980 @ =gActiveBattler ldr r0, _0802A978 @ =sBattler_AI ldrb r0, [r0] strb r0, [r4] add r0, sp, 0x4 str r0, [sp] movs r0, 0 movs r1, 0x28 movs r3, 0x4 bl EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution _0802A956: ldr r1, _0802A990 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802A970: .4byte gUnknown_2023E82 _0802A974: .4byte gBattleMons _0802A978: .4byte sBattler_AI _0802A97C: .4byte 0xf7ffffff _0802A980: .4byte gActiveBattler _0802A984: .4byte gBattleTypeFlags _0802A988: .4byte gAbsentBattlerFlags _0802A98C: .4byte gBitTable _0802A990: .4byte gUnknown_2023D74 thumb_func_end atkAE_healpartystatus thumb_func_start atkAF_cursetarget atkAF_cursetarget: @ 802A994 push {r4,r5,lr} ldr r5, _0802A9D4 @ =gBattleMons ldr r0, _0802A9D8 @ =gBattlerTarget ldrb r0, [r0] movs r4, 0x58 adds r1, r0, 0 muls r1, r4 adds r0, r5, 0 adds r0, 0x50 adds r1, r0 ldr r2, [r1] movs r3, 0x80 lsls r3, 21 adds r0, r2, 0 ands r0, r3 cmp r0, 0 beq _0802A9E0 ldr r3, _0802A9DC @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802AA04 .align 2, 0 _0802A9D4: .4byte gBattleMons _0802A9D8: .4byte gBattlerTarget _0802A9DC: .4byte gUnknown_2023D74 _0802A9E0: orrs r2, r3 str r2, [r1] ldr r1, _0802AA0C @ =gBattleMoveDamage ldr r0, _0802AA10 @ =sBattler_AI ldrb r0, [r0] muls r0, r4 adds r0, r5 ldrh r0, [r0, 0x2C] lsrs r0, 1 str r0, [r1] cmp r0, 0 bne _0802A9FC movs r0, 0x1 str r0, [r1] _0802A9FC: ldr r1, _0802AA14 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802AA04: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0802AA0C: .4byte gBattleMoveDamage _0802AA10: .4byte sBattler_AI _0802AA14: .4byte gUnknown_2023D74 thumb_func_end atkAF_cursetarget thumb_func_start atkB0_trysetspikes atkB0_trysetspikes: @ 802AA18 push {r4,lr} ldr r4, _0802AA6C @ =sBattler_AI ldrb r0, [r4] bl GetBattlerSide movs r1, 0x1 eors r0, r1 lsls r0, 24 lsrs r0, 24 ldr r1, _0802AA70 @ =gSideTimers lsls r2, r0, 1 adds r0, r2, r0 lsls r0, 2 adds r3, r0, r1 ldrb r0, [r3, 0xA] cmp r0, 0x3 bne _0802AA7C ldr r2, _0802AA74 @ =gUnknown_2023ECC ldrb r1, [r4] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r2, 0x20 orrs r1, r2 strb r1, [r0] ldr r3, _0802AA78 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802AA96 .align 2, 0 _0802AA6C: .4byte sBattler_AI _0802AA70: .4byte gSideTimers _0802AA74: .4byte gUnknown_2023ECC _0802AA78: .4byte gUnknown_2023D74 _0802AA7C: ldr r1, _0802AA9C @ =gSideAffecting adds r1, r2, r1 ldrh r2, [r1] movs r0, 0x10 orrs r0, r2 strh r0, [r1] ldrb r0, [r3, 0xA] adds r0, 0x1 strb r0, [r3, 0xA] ldr r1, _0802AAA0 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802AA96: pop {r4} pop {r0} bx r0 .align 2, 0 _0802AA9C: .4byte gSideAffecting _0802AAA0: .4byte gUnknown_2023D74 thumb_func_end atkB0_trysetspikes thumb_func_start atkB1_setforesight atkB1_setforesight: @ 802AAA4 ldr r1, _0802AAC8 @ =gBattleMons ldr r0, _0802AACC @ =gBattlerTarget ldrb r2, [r0] movs r0, 0x58 muls r2, r0 adds r1, 0x50 adds r2, r1 ldr r0, [r2] movs r1, 0x80 lsls r1, 22 orrs r0, r1 str r0, [r2] ldr r1, _0802AAD0 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] bx lr .align 2, 0 _0802AAC8: .4byte gBattleMons _0802AACC: .4byte gBattlerTarget _0802AAD0: .4byte gUnknown_2023D74 thumb_func_end atkB1_setforesight thumb_func_start atkB2_trysetperishsong atkB2_trysetperishsong: @ 802AAD4 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} movs r6, 0 movs r3, 0 ldr r0, _0802AB18 @ =gBattlersCount adds r7, r0, 0 ldr r0, _0802AB1C @ =sBattler_AI mov r8, r0 ldrb r1, [r7] cmp r6, r1 bge _0802AB40 movs r5, 0x20 ldr r0, _0802AB20 @ =gBattleMons mov r12, r0 ldr r0, _0802AB24 @ =gDisableStructs adds r4, r0, 0 adds r4, 0xF ldr r2, _0802AB28 @ =gStatuses3 _0802AAFC: ldr r1, [r2] adds r0, r1, 0 ands r0, r5 cmp r0, 0 bne _0802AB14 movs r0, 0x58 muls r0, r3 add r0, r12 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x2B bne _0802AB2C _0802AB14: adds r6, 0x1 b _0802AB34 .align 2, 0 _0802AB18: .4byte gBattlersCount _0802AB1C: .4byte sBattler_AI _0802AB20: .4byte gBattleMons _0802AB24: .4byte gDisableStructs _0802AB28: .4byte gStatuses3 _0802AB2C: orrs r1, r5 str r1, [r2] movs r0, 0x33 strb r0, [r4] _0802AB34: adds r4, 0x1C adds r2, 0x4 adds r3, 0x1 ldrb r0, [r7] cmp r3, r0 blt _0802AAFC _0802AB40: mov r1, r8 ldrb r0, [r1] bl PressurePPLoseOnUsingPerishSong ldr r0, _0802AB6C @ =gBattlersCount ldrb r0, [r0] cmp r6, r0 bne _0802AB74 ldr r3, _0802AB70 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802AB7C .align 2, 0 _0802AB6C: .4byte gBattlersCount _0802AB70: .4byte gUnknown_2023D74 _0802AB74: ldr r1, _0802AB88 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802AB7C: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802AB88: .4byte gUnknown_2023D74 thumb_func_end atkB2_trysetperishsong thumb_func_start atkB3_rolloutdamagecalculation atkB3_rolloutdamagecalculation: @ 802AB8C push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} ldr r0, _0802ABB0 @ =gMoveResultFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 beq _0802ABC0 ldr r0, _0802ABB4 @ =sBattler_AI ldrb r0, [r0] bl CancelMultiTurnMoves ldr r1, _0802ABB8 @ =gUnknown_2023D74 ldr r0, _0802ABBC @ =gUnknown_81D6960 str r0, [r1] b _0802ACD8 .align 2, 0 _0802ABB0: .4byte gMoveResultFlags _0802ABB4: .4byte sBattler_AI _0802ABB8: .4byte gUnknown_2023D74 _0802ABBC: .4byte gUnknown_81D6960 _0802ABC0: ldr r2, _0802ACE4 @ =gBattleMons ldr r1, _0802ACE8 @ =sBattler_AI ldrb r3, [r1] movs r5, 0x58 adds r0, r3, 0 muls r0, r5 adds r4, r2, 0 adds r4, 0x50 adds r0, r4 ldr r0, [r0] movs r7, 0x80 lsls r7, 5 ands r0, r7 adds r6, r1, 0 mov r9, r2 ldr r1, _0802ACEC @ =gDisableStructs mov r12, r1 ldr r2, _0802ACF0 @ =gCurrentMove mov r8, r2 cmp r0, 0 bne _0802AC32 lsls r0, r3, 3 subs r0, r3 lsls r0, 2 add r0, r12 ldrb r2, [r0, 0x11] movs r1, 0x10 negs r1, r1 ands r1, r2 movs r2, 0x5 orrs r1, r2 strb r1, [r0, 0x11] ldrb r1, [r6] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 add r0, r12 ldrb r2, [r0, 0x11] movs r1, 0xF ands r1, r2 movs r2, 0x50 orrs r1, r2 strb r1, [r0, 0x11] ldrb r0, [r6] adds r1, r0, 0 muls r1, r5 adds r1, r4 ldr r0, [r1] orrs r0, r7 str r0, [r1] ldr r1, _0802ACF4 @ =gUnknown_2023DB8 ldrb r0, [r6] lsls r0, 1 adds r0, r1 mov r2, r8 ldrh r1, [r2] strh r1, [r0] _0802AC32: ldrb r0, [r6] lsls r2, r0, 3 subs r2, r0 lsls r2, 2 add r2, r12 ldrb r3, [r2, 0x11] lsls r1, r3, 28 lsrs r1, 28 subs r1, 0x1 movs r0, 0xF ands r1, r0 movs r0, 0x10 negs r0, r0 ands r0, r3 orrs r0, r1 strb r0, [r2, 0x11] cmp r1, 0 bne _0802AC66 ldrb r0, [r6] adds r1, r0, 0 muls r1, r5 adds r1, r4 ldr r0, [r1] ldr r2, _0802ACF8 @ =0xffffefff ands r0, r2 str r0, [r1] _0802AC66: ldr r3, _0802ACFC @ =gDynamicBasePower ldr r2, _0802AD00 @ =gBattleMoves mov r0, r8 ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x1] strh r0, [r3] movs r2, 0x1 ldrb r1, [r6] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 mov r1, r12 adds r4, r0, r1 ldrb r0, [r4, 0x11] lsls r0, 28 lsrs r0, 28 movs r1, 0x5 subs r1, r0 ldr r7, _0802AD04 @ =gUnknown_2023D74 adds r5, r3, 0 cmp r2, r1 bge _0802ACB4 adds r1, r5, 0 adds r3, r4, 0 movs r4, 0x5 _0802ACA0: ldrh r0, [r1] lsls r0, 1 strh r0, [r1] adds r2, 0x1 ldrb r0, [r3, 0x11] lsls r0, 28 lsrs r0, 28 subs r0, r4, r0 cmp r2, r0 blt _0802ACA0 _0802ACB4: ldrb r1, [r6] movs r0, 0x58 muls r0, r1 mov r1, r9 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 23 ands r0, r1 cmp r0, 0 beq _0802ACD2 ldrh r0, [r5] lsls r0, 1 strh r0, [r5] _0802ACD2: ldr r0, [r7] adds r0, 0x1 str r0, [r7] _0802ACD8: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802ACE4: .4byte gBattleMons _0802ACE8: .4byte sBattler_AI _0802ACEC: .4byte gDisableStructs _0802ACF0: .4byte gCurrentMove _0802ACF4: .4byte gUnknown_2023DB8 _0802ACF8: .4byte 0xffffefff _0802ACFC: .4byte gDynamicBasePower _0802AD00: .4byte gBattleMoves _0802AD04: .4byte gUnknown_2023D74 thumb_func_end atkB3_rolloutdamagecalculation thumb_func_start atkB4_jumpifconfusedandstatmaxed atkB4_jumpifconfusedandstatmaxed: @ 802AD08 push {r4,r5,lr} ldr r5, _0802AD58 @ =gBattleMons ldr r0, _0802AD5C @ =gBattlerTarget ldrb r1, [r0] movs r0, 0x58 adds r3, r1, 0 muls r3, r0 adds r0, r5, 0 adds r0, 0x50 adds r0, r3, r0 ldr r0, [r0] movs r1, 0x7 ands r0, r1 ldr r4, _0802AD60 @ =gUnknown_2023D74 cmp r0, 0 beq _0802AD64 ldr r2, [r4] ldrb r0, [r2, 0x1] adds r0, r3 adds r1, r5, 0 adds r1, 0x18 adds r0, r1 ldrb r0, [r0] lsls r0, 24 asrs r0, 24 cmp r0, 0xC bne _0802AD64 ldrb r1, [r2, 0x2] ldrb r0, [r2, 0x3] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x5] lsls r0, 24 orrs r1, r0 str r1, [r4] b _0802AD6A .align 2, 0 _0802AD58: .4byte gBattleMons _0802AD5C: .4byte gBattlerTarget _0802AD60: .4byte gUnknown_2023D74 _0802AD64: ldr r0, [r4] adds r0, 0x6 str r0, [r4] _0802AD6A: pop {r4,r5} pop {r0} bx r0 thumb_func_end atkB4_jumpifconfusedandstatmaxed thumb_func_start atkB5_furycuttercalc atkB5_furycuttercalc: @ 802AD70 push {r4,r5,lr} ldr r0, _0802AD98 @ =gMoveResultFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 beq _0802ADAC ldr r2, _0802AD9C @ =gDisableStructs ldr r0, _0802ADA0 @ =sBattler_AI ldrb r1, [r0] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r2 movs r1, 0 strb r1, [r0, 0x10] ldr r1, _0802ADA4 @ =gUnknown_2023D74 ldr r0, _0802ADA8 @ =gUnknown_81D6960 str r0, [r1] b _0802AE04 .align 2, 0 _0802AD98: .4byte gMoveResultFlags _0802AD9C: .4byte gDisableStructs _0802ADA0: .4byte sBattler_AI _0802ADA4: .4byte gUnknown_2023D74 _0802ADA8: .4byte gUnknown_81D6960 _0802ADAC: ldr r5, _0802AE0C @ =gDisableStructs ldr r4, _0802AE10 @ =sBattler_AI ldrb r1, [r4] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r1, r0, r5 ldrb r0, [r1, 0x10] cmp r0, 0x5 beq _0802ADC4 adds r0, 0x1 strb r0, [r1, 0x10] _0802ADC4: ldr r3, _0802AE14 @ =gDynamicBasePower ldr r2, _0802AE18 @ =gBattleMoves ldr r0, _0802AE1C @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x1] strh r0, [r3] movs r2, 0x1 ldrb r1, [r4] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r5 ldr r4, _0802AE20 @ =gUnknown_2023D74 ldrb r1, [r0, 0x10] cmp r2, r1 bge _0802ADFE adds r1, r3, 0 adds r3, r0, 0 _0802ADF0: ldrh r0, [r1] lsls r0, 1 strh r0, [r1] adds r2, 0x1 ldrb r0, [r3, 0x10] cmp r2, r0 blt _0802ADF0 _0802ADFE: ldr r0, [r4] adds r0, 0x1 str r0, [r4] _0802AE04: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0802AE0C: .4byte gDisableStructs _0802AE10: .4byte sBattler_AI _0802AE14: .4byte gDynamicBasePower _0802AE18: .4byte gBattleMoves _0802AE1C: .4byte gCurrentMove _0802AE20: .4byte gUnknown_2023D74 thumb_func_end atkB5_furycuttercalc thumb_func_start atkB6_happinesstodamagecalculation atkB6_happinesstodamagecalculation: @ 802AE24 push {r4,lr} ldr r2, _0802AE50 @ =gBattleMoves ldr r0, _0802AE54 @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0] cmp r0, 0x79 bne _0802AE64 ldr r4, _0802AE58 @ =gDynamicBasePower ldr r2, _0802AE5C @ =gBattleMons ldr r0, _0802AE60 @ =sBattler_AI ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x2B ldrb r1, [r0] b _0802AE7A .align 2, 0 _0802AE50: .4byte gBattleMoves _0802AE54: .4byte gCurrentMove _0802AE58: .4byte gDynamicBasePower _0802AE5C: .4byte gBattleMons _0802AE60: .4byte sBattler_AI _0802AE64: ldr r4, _0802AE98 @ =gDynamicBasePower ldr r2, _0802AE9C @ =gBattleMons ldr r0, _0802AEA0 @ =sBattler_AI ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x2B ldrb r0, [r0] movs r1, 0xFF subs r1, r0 _0802AE7A: lsls r0, r1, 2 adds r0, r1 lsls r0, 1 movs r1, 0x19 bl __divsi3 strh r0, [r4] ldr r1, _0802AEA4 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _0802AE98: .4byte gDynamicBasePower _0802AE9C: .4byte gBattleMons _0802AEA0: .4byte sBattler_AI _0802AEA4: .4byte gUnknown_2023D74 thumb_func_end atkB6_happinesstodamagecalculation thumb_func_start atkB7_presentdamagecalculation atkB7_presentdamagecalculation: @ 802AEA8 push {r4,lr} bl Random movs r4, 0xFF ands r4, r0 cmp r4, 0x65 bgt _0802AEC4 ldr r1, _0802AEC0 @ =gDynamicBasePower movs r0, 0x28 strh r0, [r1] b _0802AF06 .align 2, 0 _0802AEC0: .4byte gDynamicBasePower _0802AEC4: cmp r4, 0xB1 bgt _0802AED4 ldr r1, _0802AED0 @ =gDynamicBasePower movs r0, 0x50 strh r0, [r1] b _0802AF06 .align 2, 0 _0802AED0: .4byte gDynamicBasePower _0802AED4: cmp r4, 0xCB bgt _0802AEE4 ldr r1, _0802AEE0 @ =gDynamicBasePower movs r0, 0x78 strh r0, [r1] b _0802AF06 .align 2, 0 _0802AEE0: .4byte gDynamicBasePower _0802AEE4: ldr r3, _0802AF10 @ =gBattleMoveDamage ldr r2, _0802AF14 @ =gBattleMons ldr r0, _0802AF18 @ =gBattlerTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r0, [r0, 0x2C] lsrs r0, 2 str r0, [r3] cmp r0, 0 bne _0802AF00 movs r0, 0x1 str r0, [r3] _0802AF00: ldr r0, [r3] negs r0, r0 str r0, [r3] _0802AF06: cmp r4, 0xCB bgt _0802AF24 ldr r1, _0802AF1C @ =gUnknown_2023D74 ldr r0, _0802AF20 @ =gUnknown_81D6930 b _0802AF5E .align 2, 0 _0802AF10: .4byte gBattleMoveDamage _0802AF14: .4byte gBattleMons _0802AF18: .4byte gBattlerTarget _0802AF1C: .4byte gUnknown_2023D74 _0802AF20: .4byte gUnknown_81D6930 _0802AF24: ldr r2, _0802AF40 @ =gBattleMons ldr r0, _0802AF44 @ =gBattlerTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r1, [r0, 0x2C] ldrh r0, [r0, 0x28] cmp r1, r0 bne _0802AF50 ldr r1, _0802AF48 @ =gUnknown_2023D74 ldr r0, _0802AF4C @ =gUnknown_81D7DD1 b _0802AF5E .align 2, 0 _0802AF40: .4byte gBattleMons _0802AF44: .4byte gBattlerTarget _0802AF48: .4byte gUnknown_2023D74 _0802AF4C: .4byte gUnknown_81D7DD1 _0802AF50: ldr r2, _0802AF68 @ =gMoveResultFlags ldrb r1, [r2] movs r0, 0xF7 ands r0, r1 strb r0, [r2] ldr r1, _0802AF6C @ =gUnknown_2023D74 ldr r0, _0802AF70 @ =gUnknown_81D7DB7 _0802AF5E: str r0, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _0802AF68: .4byte gMoveResultFlags _0802AF6C: .4byte gUnknown_2023D74 _0802AF70: .4byte gUnknown_81D7DB7 thumb_func_end atkB7_presentdamagecalculation thumb_func_start atkB8_setsafeguard atkB8_setsafeguard: @ 802AF74 push {r4-r7,lr} ldr r7, _0802AFA8 @ =sBattler_AI ldrb r0, [r7] bl GetBattlerPosition ldr r4, _0802AFAC @ =gSideAffecting movs r6, 0x1 adds r1, r6, 0 ands r1, r0 lsls r1, 1 adds r1, r4 ldrh r1, [r1] movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _0802AFB8 ldr r2, _0802AFB0 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r1, _0802AFB4 @ =gUnknown_2023E82 movs r0, 0 strb r0, [r1, 0x5] b _0802B000 .align 2, 0 _0802AFA8: .4byte sBattler_AI _0802AFAC: .4byte gSideAffecting _0802AFB0: .4byte gMoveResultFlags _0802AFB4: .4byte gUnknown_2023E82 _0802AFB8: ldrb r0, [r7] bl GetBattlerPosition adds r1, r6, 0 ands r1, r0 lsls r1, 1 adds r1, r4 ldrh r0, [r1] movs r2, 0x20 orrs r0, r2 strh r0, [r1] ldrb r0, [r7] bl GetBattlerPosition ldr r5, _0802B010 @ =gSideTimers adds r1, r6, 0 ands r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r5 movs r4, 0x5 strb r4, [r0, 0x6] ldrb r0, [r7] bl GetBattlerPosition adds r1, r6, 0 ands r1, r0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r5 ldrb r1, [r7] strb r1, [r0, 0x7] ldr r0, _0802B014 @ =gUnknown_2023E82 strb r4, [r0, 0x5] _0802B000: ldr r1, _0802B018 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802B010: .4byte gSideTimers _0802B014: .4byte gUnknown_2023E82 _0802B018: .4byte gUnknown_2023D74 thumb_func_end atkB8_setsafeguard thumb_func_start atkB9_magnitudedamagecalculation atkB9_magnitudedamagecalculation: @ 802B01C push {r4-r7,lr} mov r7, r8 push {r7} bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x64 bl __umodsi3 lsls r0, 16 lsrs r3, r0, 16 cmp r3, 0x4 bgt _0802B048 ldr r1, _0802B044 @ =gDynamicBasePower movs r0, 0xA strh r0, [r1] movs r3, 0x4 b _0802B0B4 .align 2, 0 _0802B044: .4byte gDynamicBasePower _0802B048: cmp r3, 0xE bgt _0802B05C ldr r1, _0802B058 @ =gDynamicBasePower movs r0, 0x1E strh r0, [r1] movs r3, 0x5 b _0802B0B4 .align 2, 0 _0802B058: .4byte gDynamicBasePower _0802B05C: cmp r3, 0x22 bgt _0802B070 ldr r1, _0802B06C @ =gDynamicBasePower movs r0, 0x32 strh r0, [r1] movs r3, 0x6 b _0802B0B4 .align 2, 0 _0802B06C: .4byte gDynamicBasePower _0802B070: cmp r3, 0x40 bgt _0802B084 ldr r1, _0802B080 @ =gDynamicBasePower movs r0, 0x46 strh r0, [r1] movs r3, 0x7 b _0802B0B4 .align 2, 0 _0802B080: .4byte gDynamicBasePower _0802B084: cmp r3, 0x54 bgt _0802B098 ldr r1, _0802B094 @ =gDynamicBasePower movs r0, 0x5A strh r0, [r1] movs r3, 0x8 b _0802B0B4 .align 2, 0 _0802B094: .4byte gDynamicBasePower _0802B098: cmp r3, 0x5E bgt _0802B0AC ldr r1, _0802B0A8 @ =gDynamicBasePower movs r0, 0x6E strh r0, [r1] movs r3, 0x9 b _0802B0B4 .align 2, 0 _0802B0A8: .4byte gDynamicBasePower _0802B0AC: ldr r1, _0802B120 @ =gDynamicBasePower movs r0, 0x96 strh r0, [r1] movs r3, 0xA _0802B0B4: ldr r1, _0802B124 @ =gBattleTextBuff1 movs r2, 0 movs r0, 0xFD strb r0, [r1] movs r0, 0x1 strb r0, [r1, 0x1] strb r0, [r1, 0x2] movs r0, 0x2 strb r0, [r1, 0x3] strb r3, [r1, 0x4] movs r0, 0xFF strb r0, [r1, 0x5] ldr r1, _0802B128 @ =gBattlerTarget strb r2, [r1] ldr r0, _0802B12C @ =gBattlersCount ldrb r3, [r0] adds r6, r1, 0 ldr r0, _0802B130 @ =gUnknown_2023D74 mov r8, r0 cmp r2, r3 bcs _0802B10C adds r4, r6, 0 ldr r0, _0802B134 @ =sBattler_AI ldrb r5, [r0] ldr r1, _0802B138 @ =gBitTable mov r12, r1 ldr r7, _0802B13C @ =gAbsentBattlerFlags _0802B0EA: ldrb r2, [r4] cmp r2, r5 beq _0802B100 ldrb r0, [r7] ldrb r1, [r6] lsls r1, 2 add r1, r12 ldr r1, [r1] ands r0, r1 cmp r0, 0 beq _0802B10C _0802B100: adds r0, r2, 0x1 strb r0, [r4] lsls r0, 24 lsrs r0, 24 cmp r0, r3 bcc _0802B0EA _0802B10C: mov r1, r8 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802B120: .4byte gDynamicBasePower _0802B124: .4byte gBattleTextBuff1 _0802B128: .4byte gBattlerTarget _0802B12C: .4byte gBattlersCount _0802B130: .4byte gUnknown_2023D74 _0802B134: .4byte sBattler_AI _0802B138: .4byte gBitTable _0802B13C: .4byte gAbsentBattlerFlags thumb_func_end atkB9_magnitudedamagecalculation thumb_func_start atkBA_jumpifnopursuitswitchdmg atkBA_jumpifnopursuitswitchdmg: @ 802B140 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} ldr r0, _0802B164 @ =gUnknown_2023D72 ldrb r0, [r0] cmp r0, 0x1 bne _0802B170 ldr r0, _0802B168 @ =sBattler_AI ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _0802B16C movs r0, 0x1 b _0802B18A .align 2, 0 _0802B164: .4byte gUnknown_2023D72 _0802B168: .4byte sBattler_AI _0802B16C: movs r0, 0 b _0802B18A _0802B170: ldr r0, _0802B184 @ =sBattler_AI ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 cmp r0, 0 bne _0802B188 movs r0, 0x3 b _0802B18A .align 2, 0 _0802B184: .4byte sBattler_AI _0802B188: movs r0, 0x2 _0802B18A: bl GetBattlerAtPosition ldr r1, _0802B264 @ =gBattlerTarget strb r0, [r1] ldr r0, _0802B268 @ =gUnknown_2023D7C ldr r1, _0802B264 @ =gBattlerTarget ldrb r3, [r1] adds r0, r3, r0 ldrb r0, [r0] cmp r0, 0 beq _0802B1A2 b _0802B2A8 _0802B1A2: ldr r5, _0802B26C @ =sBattler_AI ldr r0, _0802B270 @ =gBattleStruct ldr r1, [r0] adds r1, r3, r1 ldrb r2, [r5] ldrb r1, [r1, 0xC] cmp r2, r1 bne _0802B2A8 ldr r4, _0802B274 @ =gBattleMons movs r2, 0x58 adds r0, r3, 0 muls r0, r2 adds r1, r4, 0 adds r1, 0x4C adds r0, r1 ldr r0, [r0] movs r1, 0x27 ands r0, r1 cmp r0, 0 bne _0802B2A8 ldrb r0, [r5] muls r0, r2 adds r0, r4 ldrh r0, [r0, 0x28] cmp r0, 0 beq _0802B2A8 ldr r0, _0802B278 @ =gDisableStructs lsls r1, r3, 3 subs r1, r3 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0x18] lsls r0, 31 cmp r0, 0 bne _0802B2A8 ldr r0, _0802B27C @ =gUnknown_2023DC4 lsls r1, r3, 1 adds r1, r0 ldrh r0, [r1] cmp r0, 0xE4 bne _0802B2A8 movs r1, 0 ldr r0, _0802B280 @ =gBattlersCount ldr r2, _0802B284 @ =gCurrentMove mov r8, r2 ldr r7, _0802B288 @ =gUnknown_2023D48 mov r10, r7 ldr r2, _0802B28C @ =gUnknown_2023D49 mov r9, r2 ldr r7, _0802B290 @ =gUnknown_2023DD0 mov r12, r7 ldrb r2, [r0] cmp r1, r2 bge _0802B22E ldr r6, _0802B294 @ =gUnknown_2023BDE ldr r5, _0802B264 @ =gBattlerTarget ldr r4, _0802B298 @ =gUnknown_2023BDA movs r3, 0xB adds r2, r0, 0 _0802B218: adds r0, r1, r6 ldrb r0, [r0] ldrb r7, [r5] cmp r0, r7 bne _0802B226 adds r0, r1, r4 strb r3, [r0] _0802B226: adds r1, 0x1 ldrb r0, [r2] cmp r1, r0 blt _0802B218 _0802B22E: movs r0, 0xE4 mov r1, r8 strh r0, [r1] ldr r2, _0802B264 @ =gBattlerTarget ldrb r0, [r2] ldr r7, _0802B270 @ =gBattleStruct ldr r1, [r7] adds r0, r1 adds r0, 0x80 ldrb r0, [r0] mov r1, r9 strb r0, [r1] mov r2, r10 strb r0, [r2] ldr r7, _0802B29C @ =gUnknown_2023D74 ldr r0, [r7] adds r0, 0x5 str r0, [r7] movs r0, 0x1 ldr r1, _0802B2A0 @ =gBattleScripting strb r0, [r1, 0x18] mov r2, r12 ldr r0, [r2] ldr r1, _0802B2A4 @ =0xfffffbff ands r0, r1 str r0, [r2] b _0802B2C2 .align 2, 0 _0802B264: .4byte gBattlerTarget _0802B268: .4byte gUnknown_2023D7C _0802B26C: .4byte sBattler_AI _0802B270: .4byte gBattleStruct _0802B274: .4byte gBattleMons _0802B278: .4byte gDisableStructs _0802B27C: .4byte gUnknown_2023DC4 _0802B280: .4byte gBattlersCount _0802B284: .4byte gCurrentMove _0802B288: .4byte gUnknown_2023D48 _0802B28C: .4byte gUnknown_2023D49 _0802B290: .4byte gUnknown_2023DD0 _0802B294: .4byte gUnknown_2023BDE _0802B298: .4byte gUnknown_2023BDA _0802B29C: .4byte gUnknown_2023D74 _0802B2A0: .4byte gBattleScripting _0802B2A4: .4byte 0xfffffbff _0802B2A8: ldr r3, _0802B2D0 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802B2C2: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802B2D0: .4byte gUnknown_2023D74 thumb_func_end atkBA_jumpifnopursuitswitchdmg thumb_func_start atkBB_setsunny atkBB_setsunny: @ 802B2D4 push {lr} ldr r2, _0802B2F4 @ =gBattleWeather ldrh r1, [r2] movs r0, 0x60 ands r0, r1 cmp r0, 0 beq _0802B300 ldr r2, _0802B2F8 @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r1, _0802B2FC @ =gUnknown_2023E82 movs r0, 0x2 strb r0, [r1, 0x5] b _0802B312 .align 2, 0 _0802B2F4: .4byte gBattleWeather _0802B2F8: .4byte gMoveResultFlags _0802B2FC: .4byte gUnknown_2023E82 _0802B300: movs r0, 0x20 strh r0, [r2] ldr r1, _0802B320 @ =gUnknown_2023E82 movs r0, 0x4 strb r0, [r1, 0x5] ldr r0, _0802B324 @ =gUnknown_2023F20 adds r0, 0x28 movs r1, 0x5 strb r1, [r0] _0802B312: ldr r1, _0802B328 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _0802B320: .4byte gUnknown_2023E82 _0802B324: .4byte gUnknown_2023F20 _0802B328: .4byte gUnknown_2023D74 thumb_func_end atkBB_setsunny thumb_func_start atkBC_maxattackhalvehp atkBC_maxattackhalvehp: @ 802B32C push {r4,r5,lr} ldr r5, _0802B378 @ =gBattleMons ldr r4, _0802B37C @ =sBattler_AI ldrb r0, [r4] movs r3, 0x58 muls r0, r3 adds r2, r0, r5 ldrh r0, [r2, 0x2C] lsrs r1, r0, 1 cmp r1, 0 bne _0802B344 movs r1, 0x1 _0802B344: movs r0, 0x19 ldrsb r0, [r2, r0] cmp r0, 0xB bgt _0802B388 ldrh r0, [r2, 0x28] cmp r0, r1 bls _0802B388 movs r0, 0xC strb r0, [r2, 0x19] ldr r1, _0802B380 @ =gBattleMoveDamage ldrb r0, [r4] muls r0, r3 adds r0, r5 ldrh r0, [r0, 0x2C] lsrs r0, 1 str r0, [r1] cmp r0, 0 bne _0802B36C movs r0, 0x1 str r0, [r1] _0802B36C: ldr r1, _0802B384 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802B3A2 .align 2, 0 _0802B378: .4byte gBattleMons _0802B37C: .4byte sBattler_AI _0802B380: .4byte gBattleMoveDamage _0802B384: .4byte gUnknown_2023D74 _0802B388: ldr r3, _0802B3A8 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802B3A2: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0802B3A8: .4byte gUnknown_2023D74 thumb_func_end atkBC_maxattackhalvehp thumb_func_start atkBD_copyfoestats atkBD_copyfoestats: @ 802B3AC push {r4-r7,lr} movs r2, 0 ldr r7, _0802B3E4 @ =gUnknown_2023D74 ldr r6, _0802B3E8 @ =sBattler_AI movs r4, 0x58 ldr r3, _0802B3EC @ =gUnknown_2023BFC ldr r5, _0802B3F0 @ =gBattlerTarget _0802B3BA: ldrb r0, [r6] adds r1, r0, 0 muls r1, r4 adds r1, r2, r1 adds r1, r3 ldrb r0, [r5] muls r0, r4 adds r0, r2, r0 adds r0, r3 ldrb r0, [r0] strb r0, [r1] adds r2, 0x1 cmp r2, 0x7 ble _0802B3BA ldr r0, [r7] adds r0, 0x5 str r0, [r7] pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802B3E4: .4byte gUnknown_2023D74 _0802B3E8: .4byte sBattler_AI _0802B3EC: .4byte gUnknown_2023BFC _0802B3F0: .4byte gBattlerTarget thumb_func_end atkBD_copyfoestats thumb_func_start atkBE_rapidspinfree atkBE_rapidspinfree: @ 802B3F4 push {r4-r6,lr} ldr r1, _0802B464 @ =gBattleMons ldr r5, _0802B468 @ =sBattler_AI ldrb r2, [r5] movs r6, 0x58 adds r0, r2, 0 muls r0, r6 adds r4, r1, 0 adds r4, 0x50 adds r0, r4 ldr r0, [r0] movs r1, 0xE0 lsls r1, 8 ands r0, r1 cmp r0, 0 beq _0802B488 ldr r1, _0802B46C @ =gBattleScripting ldr r3, _0802B470 @ =gBattlerTarget ldrb r0, [r3] strb r0, [r1, 0x17] ldrb r0, [r5] adds r1, r0, 0 muls r1, r6 adds r1, r4 ldr r0, [r1] ldr r2, _0802B474 @ =0xffff1fff ands r0, r2 str r0, [r1] ldrb r0, [r5] ldr r1, _0802B478 @ =gBattleStruct ldr r2, [r1] adds r0, r2 ldrb r0, [r0, 0x14] strb r0, [r3] ldr r1, _0802B47C @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x2 strb r0, [r1, 0x1] ldrb r0, [r5] lsls r0, 1 adds r0, r2 ldrb r0, [r0, 0x4] strb r0, [r1, 0x2] ldrb r0, [r5] lsls r0, 1 adds r0, r2 ldrb r0, [r0, 0x5] strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] bl BattleScriptPushCursor ldr r1, _0802B480 @ =gUnknown_2023D74 ldr r0, _0802B484 @ =gUnknown_81D8DF3 b _0802B532 .align 2, 0 _0802B464: .4byte gBattleMons _0802B468: .4byte sBattler_AI _0802B46C: .4byte gBattleScripting _0802B470: .4byte gBattlerTarget _0802B474: .4byte 0xffff1fff _0802B478: .4byte gBattleStruct _0802B47C: .4byte gBattleTextBuff1 _0802B480: .4byte gUnknown_2023D74 _0802B484: .4byte gUnknown_81D8DF3 _0802B488: ldr r4, _0802B4BC @ =gStatuses3 lsls r0, r2, 2 adds r3, r0, r4 ldr r1, [r3] movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _0802B4C8 movs r0, 0x5 negs r0, r0 ands r1, r0 str r1, [r3] ldrb r1, [r5] lsls r1, 2 adds r1, r4 ldr r0, [r1] movs r2, 0x4 negs r2, r2 ands r0, r2 str r0, [r1] bl BattleScriptPushCursor ldr r1, _0802B4C0 @ =gUnknown_2023D74 ldr r0, _0802B4C4 @ =gUnknown_81D8E04 b _0802B532 .align 2, 0 _0802B4BC: .4byte gStatuses3 _0802B4C0: .4byte gUnknown_2023D74 _0802B4C4: .4byte gUnknown_81D8E04 _0802B4C8: adds r0, r2, 0 bl GetBattlerSide ldr r4, _0802B518 @ =gSideAffecting lsls r0, 24 lsrs r0, 23 adds r0, r4 ldrh r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _0802B52C ldrb r0, [r5] bl GetBattlerSide lsls r0, 24 lsrs r0, 23 adds r0, r4 ldrh r2, [r0] ldr r1, _0802B51C @ =0x0000ffef ands r1, r2 movs r4, 0 strh r1, [r0] ldrb r0, [r5] bl GetBattlerSide ldr r2, _0802B520 @ =gSideTimers lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r2 strb r4, [r1, 0xA] bl BattleScriptPushCursor ldr r1, _0802B524 @ =gUnknown_2023D74 ldr r0, _0802B528 @ =gUnknown_81D8E0B b _0802B532 .align 2, 0 _0802B518: .4byte gSideAffecting _0802B51C: .4byte 0x0000ffef _0802B520: .4byte gSideTimers _0802B524: .4byte gUnknown_2023D74 _0802B528: .4byte gUnknown_81D8E0B _0802B52C: ldr r1, _0802B53C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 _0802B532: str r0, [r1] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0802B53C: .4byte gUnknown_2023D74 thumb_func_end atkBE_rapidspinfree thumb_func_start atkBF_setdefensecurlbit atkBF_setdefensecurlbit: @ 802B540 ldr r1, _0802B564 @ =gBattleMons ldr r0, _0802B568 @ =sBattler_AI ldrb r2, [r0] movs r0, 0x58 muls r2, r0 adds r1, 0x50 adds r2, r1 ldr r0, [r2] movs r1, 0x80 lsls r1, 23 orrs r0, r1 str r0, [r2] ldr r1, _0802B56C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] bx lr .align 2, 0 _0802B564: .4byte gBattleMons _0802B568: .4byte sBattler_AI _0802B56C: .4byte gUnknown_2023D74 thumb_func_end atkBF_setdefensecurlbit thumb_func_start atkC0_recoverbasedonsunlight atkC0_recoverbasedonsunlight: @ 802B570 push {r4-r7,lr} sub sp, 0x4 ldr r1, _0802B5DC @ =gBattlerTarget ldr r5, _0802B5E0 @ =sBattler_AI ldrb r0, [r5] strb r0, [r1] ldr r7, _0802B5E4 @ =gBattleMons ldrb r0, [r5] movs r6, 0x58 muls r0, r6 adds r0, r7 ldrh r1, [r0, 0x28] ldrh r0, [r0, 0x2C] cmp r1, r0 beq _0802B650 ldr r4, _0802B5E8 @ =gBattleWeather ldrh r0, [r4] cmp r0, 0 beq _0802B5C2 movs r0, 0 str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0xD movs r3, 0 bl AbilityBattleEffects lsls r0, 24 lsrs r0, 24 cmp r0, 0 bne _0802B5C2 str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0x4D movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 beq _0802B5F0 _0802B5C2: ldr r3, _0802B5EC @ =gBattleMoveDamage ldr r2, _0802B5E4 @ =gBattleMons ldr r0, _0802B5E0 @ =sBattler_AI ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r0, [r0, 0x2C] lsrs r0, 1 str r0, [r3] adds r1, r3, 0 b _0802B62A .align 2, 0 _0802B5DC: .4byte gBattlerTarget _0802B5E0: .4byte sBattler_AI _0802B5E4: .4byte gBattleMons _0802B5E8: .4byte gBattleWeather _0802B5EC: .4byte gBattleMoveDamage _0802B5F0: ldrh r1, [r4] movs r0, 0x60 ands r0, r1 cmp r0, 0 beq _0802B61C ldr r4, _0802B618 @ =gBattleMoveDamage ldrb r0, [r5] muls r0, r6 adds r0, r7 ldrh r1, [r0, 0x2C] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 movs r1, 0x1E bl __divsi3 str r0, [r4] adds r1, r4, 0 b _0802B62A .align 2, 0 _0802B618: .4byte gBattleMoveDamage _0802B61C: ldr r1, _0802B648 @ =gBattleMoveDamage ldrb r0, [r5] muls r0, r6 adds r0, r7 ldrh r0, [r0, 0x2C] lsrs r0, 2 str r0, [r1] _0802B62A: adds r2, r1, 0 ldr r0, [r2] cmp r0, 0 bne _0802B636 movs r0, 0x1 str r0, [r2] _0802B636: ldr r0, [r1] negs r0, r0 str r0, [r1] ldr r1, _0802B64C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802B66A .align 2, 0 _0802B648: .4byte gBattleMoveDamage _0802B64C: .4byte gUnknown_2023D74 _0802B650: ldr r3, _0802B674 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802B66A: add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802B674: .4byte gUnknown_2023D74 thumb_func_end atkC0_recoverbasedonsunlight thumb_func_start sub_802B678 sub_802B678: @ 802B678 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} ldr r2, _0802B760 @ =gBattleMons ldr r0, _0802B764 @ =sBattler_AI ldrb r1, [r0] movs r0, 0x58 muls r1, r0 adds r1, r2 ldrb r0, [r1, 0x14] mov r9, r0 mov r7, r9 lsls r7, 27 adds r0, r7, 0 lsrs r0, 27 mov r9, r0 movs r4, 0x2 mov r2, r9 ands r2, r4 asrs r2, 1 ldrh r7, [r1, 0x14] mov r8, r7 mov r0, r8 lsls r0, 22 lsrs r0, 27 mov r8, r0 ands r0, r4 orrs r2, r0 ldrb r6, [r1, 0x15] lsls r6, 25 lsrs r6, 27 adds r0, r6, 0 ands r0, r4 lsls r0, 1 orrs r2, r0 ldr r5, [r1, 0x14] lsls r5, 12 lsrs r5, 27 adds r0, r5, 0 ands r0, r4 lsls r0, 2 orrs r2, r0 ldrh r3, [r1, 0x16] lsls r3, 23 lsrs r3, 27 adds r0, r3, 0 ands r0, r4 lsls r0, 3 orrs r2, r0 ldrb r1, [r1, 0x17] lsls r1, 26 lsrs r1, 27 adds r0, r1, 0 ands r0, r4 lsls r0, 4 orrs r2, r0 movs r0, 0x1 adds r4, r0, 0 mov r7, r9 ands r4, r7 mov r7, r8 ands r7, r0 lsls r7, 1 orrs r4, r7 ands r6, r0 lsls r6, 2 orrs r4, r6 ands r5, r0 lsls r5, 3 orrs r4, r5 ands r3, r0 lsls r3, 4 orrs r4, r3 ands r1, r0 lsls r1, 5 orrs r4, r1 ldr r5, _0802B768 @ =gDynamicBasePower lsls r0, r2, 2 adds r0, r2 lsls r0, 3 movs r1, 0x3F bl __divsi3 adds r0, 0x1E strh r0, [r5] ldr r6, _0802B76C @ =gBattleStruct ldr r5, [r6] lsls r0, r4, 4 subs r0, r4 movs r1, 0x3F bl __divsi3 adds r0, 0x1 strb r0, [r5, 0x13] ldr r1, [r6] ldrb r0, [r1, 0x13] cmp r0, 0x8 bls _0802B742 adds r0, 0x1 strb r0, [r1, 0x13] _0802B742: ldr r2, [r6] ldrb r0, [r2, 0x13] movs r1, 0xC0 orrs r0, r1 strb r0, [r2, 0x13] ldr r1, _0802B770 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802B760: .4byte gBattleMons _0802B764: .4byte sBattler_AI _0802B768: .4byte gDynamicBasePower _0802B76C: .4byte gBattleStruct _0802B770: .4byte gUnknown_2023D74 thumb_func_end sub_802B678 thumb_func_start atkC2_selectfirstvalidtarget atkC2_selectfirstvalidtarget: @ 802B774 push {r4-r7,lr} mov r7, r8 push {r7} ldr r0, _0802B7D0 @ =gBattlerTarget movs r1, 0 strb r1, [r0] ldr r1, _0802B7D4 @ =gBattlersCount ldrb r1, [r1] adds r6, r0, 0 ldr r0, _0802B7D8 @ =gUnknown_2023D74 mov r8, r0 cmp r1, 0 beq _0802B7BE adds r3, r6, 0 ldr r0, _0802B7DC @ =sBattler_AI ldrb r5, [r0] ldr r0, _0802B7E0 @ =gBitTable mov r12, r0 adds r4, r1, 0 ldr r7, _0802B7E4 @ =gAbsentBattlerFlags _0802B79C: ldrb r2, [r3] cmp r2, r5 beq _0802B7B2 ldrb r0, [r7] ldrb r1, [r6] lsls r1, 2 add r1, r12 ldr r1, [r1] ands r0, r1 cmp r0, 0 beq _0802B7BE _0802B7B2: adds r0, r2, 0x1 strb r0, [r3] lsls r0, 24 lsrs r0, 24 cmp r0, r4 bcc _0802B79C _0802B7BE: mov r1, r8 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802B7D0: .4byte gBattlerTarget _0802B7D4: .4byte gBattlersCount _0802B7D8: .4byte gUnknown_2023D74 _0802B7DC: .4byte sBattler_AI _0802B7E0: .4byte gBitTable _0802B7E4: .4byte gAbsentBattlerFlags thumb_func_end atkC2_selectfirstvalidtarget thumb_func_start atkC3_trysetfutureattack atkC3_trysetfutureattack: @ 802B7E8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x10 ldr r0, _0802B820 @ =gUnknown_2023F20 mov r8, r0 ldr r7, _0802B824 @ =gBattlerTarget ldrb r1, [r7] adds r0, r1, r0 ldrb r6, [r0] cmp r6, 0 beq _0802B82C ldr r3, _0802B828 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802B8F6 .align 2, 0 _0802B820: .4byte gUnknown_2023F20 _0802B824: .4byte gBattlerTarget _0802B828: .4byte gUnknown_2023D74 _0802B82C: lsls r1, 1 mov r0, r8 adds r0, 0x18 adds r1, r0 ldr r2, _0802B8CC @ =gCurrentMove mov r9, r2 ldrh r0, [r2] strh r0, [r1] mov r0, r8 adds r0, 0x4 ldrb r4, [r7] adds r0, r4 ldr r5, _0802B8D0 @ =sBattler_AI ldrb r1, [r5] strb r1, [r0] ldrb r0, [r7] add r0, r8 movs r1, 0x3 strb r1, [r0] ldr r4, _0802B8D4 @ =gSideAffecting ldrb r0, [r7] bl GetBattlerPosition movs r1, 0x1 mov r10, r1 ands r1, r0 lsls r1, 1 adds r1, r4 ldrh r3, [r1] ldrb r0, [r5] movs r4, 0x58 muls r0, r4 ldr r2, _0802B8D8 @ =gBattleMons adds r0, r2 ldrb r1, [r7] muls r1, r4 adds r1, r2 mov r4, r9 ldrh r2, [r4] str r6, [sp] str r6, [sp, 0x4] ldrb r4, [r5] str r4, [sp, 0x8] ldrb r4, [r7] str r4, [sp, 0xC] bl CalculateBaseDamage ldrb r1, [r7] lsls r1, 2 mov r2, r8 adds r2, 0x8 adds r1, r2 str r0, [r1] ldr r1, _0802B8DC @ =gUnknown_2023E8C ldrb r0, [r5] lsls r0, 4 adds r0, r1 ldrb r0, [r0] lsls r0, 28 cmp r0, 0 bge _0802B8BA ldrb r4, [r7] lsls r4, 2 adds r4, r2 ldr r1, [r4] lsls r0, r1, 4 subs r0, r1 movs r1, 0xA bl __divsi3 str r0, [r4] _0802B8BA: mov r0, r9 ldrh r1, [r0] ldr r0, _0802B8E0 @ =0x00000161 cmp r1, r0 bne _0802B8E8 ldr r0, _0802B8E4 @ =gUnknown_2023E82 mov r1, r10 strb r1, [r0, 0x5] b _0802B8EE .align 2, 0 _0802B8CC: .4byte gCurrentMove _0802B8D0: .4byte sBattler_AI _0802B8D4: .4byte gSideAffecting _0802B8D8: .4byte gBattleMons _0802B8DC: .4byte gUnknown_2023E8C _0802B8E0: .4byte 0x00000161 _0802B8E4: .4byte gUnknown_2023E82 _0802B8E8: ldr r1, _0802B908 @ =gUnknown_2023E82 movs r0, 0 strb r0, [r1, 0x5] _0802B8EE: ldr r1, _0802B90C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802B8F6: add sp, 0x10 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802B908: .4byte gUnknown_2023E82 _0802B90C: .4byte gUnknown_2023D74 thumb_func_end atkC3_trysetfutureattack thumb_func_start atkC4_trydobeatup atkC4_trydobeatup: @ 802B910 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} ldr r0, _0802B954 @ =sBattler_AI ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 ldr r7, _0802B958 @ =gEnemyParty cmp r0, 0 bne _0802B92A ldr r7, _0802B95C @ =gPlayerParty _0802B92A: ldr r2, _0802B960 @ =gBattleMons ldr r0, _0802B964 @ =gBattlerTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r0, [r0, 0x28] cmp r0, 0 bne _0802B96C ldr r3, _0802B968 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] b _0802BB08 .align 2, 0 _0802B954: .4byte sBattler_AI _0802B958: .4byte gEnemyParty _0802B95C: .4byte gPlayerParty _0802B960: .4byte gBattleMons _0802B964: .4byte gBattlerTarget _0802B968: .4byte gUnknown_2023D74 _0802B96C: ldr r6, _0802BAA8 @ =gUnknown_2023E82 ldrb r0, [r6] mov r8, r0 cmp r0, 0x5 bls _0802B978 b _0802BAD4 _0802B978: adds r4, r6, 0 movs r5, 0x64 _0802B97C: ldrb r0, [r4] muls r0, r5 adds r0, r7, r0 movs r1, 0x39 bl GetMonData cmp r0, 0 beq _0802B9C0 ldrb r0, [r6] muls r0, r5 adds r0, r7, r0 movs r1, 0x41 bl GetMonData cmp r0, 0 beq _0802B9C0 ldrb r0, [r4] muls r0, r5 adds r0, r7, r0 movs r1, 0x41 bl GetMonData movs r1, 0xCE lsls r1, 1 cmp r0, r1 beq _0802B9C0 ldrb r0, [r4] muls r0, r5 adds r0, r7, r0 movs r1, 0x37 bl GetMonData cmp r0, 0 beq _0802B9D0 _0802B9C0: ldrb r0, [r4] adds r0, 0x1 strb r0, [r4] adds r6, r4, 0 lsls r0, 24 lsrs r0, 24 cmp r0, 0x5 bls _0802B97C _0802B9D0: ldr r1, _0802BAA8 @ =gUnknown_2023E82 mov r9, r1 ldrb r2, [r1] cmp r2, 0x5 bhi _0802BAD4 ldr r1, _0802BAAC @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x4 strb r0, [r1, 0x1] ldr r6, _0802BAB0 @ =sBattler_AI ldrb r0, [r6] strb r0, [r1, 0x2] strb r2, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldr r1, _0802BAB4 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x9 str r0, [r1] ldr r2, _0802BAB8 @ =gBattleMoveDamage mov r8, r2 ldr r5, _0802BABC @ =gBaseStats mov r1, r9 ldrb r0, [r1] movs r4, 0x64 muls r0, r4 adds r0, r7, r0 movs r1, 0xB bl GetMonData lsls r1, r0, 3 subs r1, r0 lsls r1, 2 adds r1, r5 ldrb r3, [r1, 0x1] mov r2, r8 str r3, [r2] ldr r2, _0802BAC0 @ =gBattleMoves ldr r0, _0802BAC4 @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0, 0x1] muls r0, r3 mov r1, r8 str r0, [r1] mov r2, r9 ldrb r0, [r2] muls r0, r4 adds r0, r7, r0 movs r1, 0x38 bl GetMonData lsls r0, 1 movs r1, 0x5 bl __udivsi3 adds r0, 0x2 mov r2, r8 ldr r1, [r2] muls r0, r1 str r0, [r2] ldr r3, _0802BAC8 @ =gBattleMons ldr r1, _0802BACC @ =gBattlerTarget ldrb r2, [r1] movs r1, 0x58 muls r1, r2 adds r1, r3 ldrh r2, [r1] lsls r1, r2, 3 subs r1, r2 lsls r1, 2 adds r1, r5 ldrb r1, [r1, 0x2] bl __divsi3 mov r1, r8 str r0, [r1] movs r1, 0x32 bl __divsi3 adds r2, r0, 0x2 mov r0, r8 str r2, [r0] ldr r1, _0802BAD0 @ =gUnknown_2023E8C ldrb r0, [r6] lsls r0, 4 adds r0, r1 ldrb r0, [r0] lsls r0, 28 cmp r0, 0 bge _0802BA9C lsls r0, r2, 4 subs r0, r2 movs r1, 0xA bl __divsi3 mov r1, r8 str r0, [r1] _0802BA9C: mov r2, r9 ldrb r0, [r2] adds r0, 0x1 strb r0, [r2] b _0802BB0E .align 2, 0 _0802BAA8: .4byte gUnknown_2023E82 _0802BAAC: .4byte gBattleTextBuff1 _0802BAB0: .4byte sBattler_AI _0802BAB4: .4byte gUnknown_2023D74 _0802BAB8: .4byte gBattleMoveDamage _0802BABC: .4byte gBaseStats _0802BAC0: .4byte gBattleMoves _0802BAC4: .4byte gCurrentMove _0802BAC8: .4byte gBattleMons _0802BACC: .4byte gBattlerTarget _0802BAD0: .4byte gUnknown_2023E8C _0802BAD4: mov r0, r8 cmp r0, 0 beq _0802BAF4 ldr r3, _0802BAF0 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] b _0802BB08 .align 2, 0 _0802BAF0: .4byte gUnknown_2023D74 _0802BAF4: ldr r3, _0802BB1C @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x5] ldrb r0, [r2, 0x6] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x7] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x8] _0802BB08: lsls r0, 24 orrs r1, r0 str r1, [r3] _0802BB0E: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802BB1C: .4byte gUnknown_2023D74 thumb_func_end atkC4_trydobeatup thumb_func_start atkC5_setsemiinvulnerablebit atkC5_setsemiinvulnerablebit: @ 802BB20 push {lr} ldr r0, _0802BB34 @ =gCurrentMove ldrh r1, [r0] cmp r1, 0x5B beq _0802BB60 cmp r1, 0x5B bgt _0802BB38 cmp r1, 0x13 beq _0802BB44 b _0802BB8C .align 2, 0 _0802BB34: .4byte gCurrentMove _0802BB38: ldr r0, _0802BB54 @ =0x00000123 cmp r1, r0 beq _0802BB78 adds r0, 0x31 cmp r1, r0 bne _0802BB8C _0802BB44: ldr r2, _0802BB58 @ =gStatuses3 ldr r0, _0802BB5C @ =sBattler_AI ldrb r1, [r0] lsls r1, 2 adds r1, r2 ldr r0, [r1] movs r2, 0x40 b _0802BB88 .align 2, 0 _0802BB54: .4byte 0x00000123 _0802BB58: .4byte gStatuses3 _0802BB5C: .4byte sBattler_AI _0802BB60: ldr r2, _0802BB70 @ =gStatuses3 ldr r0, _0802BB74 @ =sBattler_AI ldrb r1, [r0] lsls r1, 2 adds r1, r2 ldr r0, [r1] movs r2, 0x80 b _0802BB88 .align 2, 0 _0802BB70: .4byte gStatuses3 _0802BB74: .4byte sBattler_AI _0802BB78: ldr r2, _0802BB98 @ =gStatuses3 ldr r0, _0802BB9C @ =sBattler_AI ldrb r1, [r0] lsls r1, 2 adds r1, r2 ldr r0, [r1] movs r2, 0x80 lsls r2, 11 _0802BB88: orrs r0, r2 str r0, [r1] _0802BB8C: ldr r1, _0802BBA0 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _0802BB98: .4byte gStatuses3 _0802BB9C: .4byte sBattler_AI _0802BBA0: .4byte gUnknown_2023D74 thumb_func_end atkC5_setsemiinvulnerablebit thumb_func_start atkC6_clearsemiinvulnerablebit atkC6_clearsemiinvulnerablebit: @ 802BBA4 push {lr} ldr r0, _0802BBB8 @ =gCurrentMove ldrh r1, [r0] cmp r1, 0x5B beq _0802BBE8 cmp r1, 0x5B bgt _0802BBBC cmp r1, 0x13 beq _0802BBC8 b _0802BC16 .align 2, 0 _0802BBB8: .4byte gCurrentMove _0802BBBC: ldr r0, _0802BBDC @ =0x00000123 cmp r1, r0 beq _0802BC04 adds r0, 0x31 cmp r1, r0 bne _0802BC16 _0802BBC8: ldr r2, _0802BBE0 @ =gStatuses3 ldr r0, _0802BBE4 @ =sBattler_AI ldrb r1, [r0] lsls r1, 2 adds r1, r2 ldr r0, [r1] movs r2, 0x41 negs r2, r2 b _0802BC12 .align 2, 0 _0802BBDC: .4byte 0x00000123 _0802BBE0: .4byte gStatuses3 _0802BBE4: .4byte sBattler_AI _0802BBE8: ldr r2, _0802BBFC @ =gStatuses3 ldr r0, _0802BC00 @ =sBattler_AI ldrb r1, [r0] lsls r1, 2 adds r1, r2 ldr r0, [r1] movs r2, 0x81 negs r2, r2 b _0802BC12 .align 2, 0 _0802BBFC: .4byte gStatuses3 _0802BC00: .4byte sBattler_AI _0802BC04: ldr r2, _0802BC24 @ =gStatuses3 ldr r0, _0802BC28 @ =sBattler_AI ldrb r1, [r0] lsls r1, 2 adds r1, r2 ldr r0, [r1] ldr r2, _0802BC2C @ =0xfffbffff _0802BC12: ands r0, r2 str r0, [r1] _0802BC16: ldr r1, _0802BC30 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _0802BC24: .4byte gStatuses3 _0802BC28: .4byte sBattler_AI _0802BC2C: .4byte 0xfffbffff _0802BC30: .4byte gUnknown_2023D74 thumb_func_end atkC6_clearsemiinvulnerablebit thumb_func_start atkC7_setminimize atkC7_setminimize: @ 802BC34 push {lr} ldr r0, _0802BC64 @ =gUnknown_2023DD0 ldr r0, [r0] movs r1, 0x80 lsls r1, 18 ands r0, r1 cmp r0, 0 beq _0802BC58 ldr r2, _0802BC68 @ =gStatuses3 ldr r0, _0802BC6C @ =sBattler_AI ldrb r1, [r0] lsls r1, 2 adds r1, r2 ldr r0, [r1] movs r2, 0x80 lsls r2, 1 orrs r0, r2 str r0, [r1] _0802BC58: ldr r1, _0802BC70 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _0802BC64: .4byte gUnknown_2023DD0 _0802BC68: .4byte gStatuses3 _0802BC6C: .4byte sBattler_AI _0802BC70: .4byte gUnknown_2023D74 thumb_func_end atkC7_setminimize thumb_func_start atkC8_sethail atkC8_sethail: @ 802BC74 push {lr} ldr r3, _0802BC98 @ =gBattleWeather ldrh r1, [r3] movs r2, 0x80 adds r0, r2, 0 ands r0, r1 cmp r0, 0 beq _0802BCA4 ldr r2, _0802BC9C @ =gMoveResultFlags ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] ldr r1, _0802BCA0 @ =gUnknown_2023E82 movs r0, 0x2 strb r0, [r1, 0x5] b _0802BCB2 .align 2, 0 _0802BC98: .4byte gBattleWeather _0802BC9C: .4byte gMoveResultFlags _0802BCA0: .4byte gUnknown_2023E82 _0802BCA4: strh r2, [r3] ldr r0, _0802BCC0 @ =gUnknown_2023E82 movs r1, 0x5 strb r1, [r0, 0x5] ldr r0, _0802BCC4 @ =gUnknown_2023F20 adds r0, 0x28 strb r1, [r0] _0802BCB2: ldr r1, _0802BCC8 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _0802BCC0: .4byte gUnknown_2023E82 _0802BCC4: .4byte gUnknown_2023F20 _0802BCC8: .4byte gUnknown_2023D74 thumb_func_end atkC8_sethail thumb_func_start atkC9_jumpifattackandspecialattackcannotfall atkC9_jumpifattackandspecialattackcannotfall: @ 802BCCC push {r4,lr} ldr r2, _0802BD10 @ =gBattleMons ldr r0, _0802BD14 @ =gBattlerTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r1, r0, r2 movs r0, 0x19 ldrsb r0, [r1, r0] adds r3, r2, 0 cmp r0, 0 bne _0802BD20 movs r0, 0x1C ldrsb r0, [r1, r0] cmp r0, 0 bne _0802BD20 ldr r0, _0802BD18 @ =gUnknown_2023E82 ldrb r0, [r0, 0x6] cmp r0, 0x1 beq _0802BD20 ldr r3, _0802BD1C @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802BD4C .align 2, 0 _0802BD10: .4byte gBattleMons _0802BD14: .4byte gBattlerTarget _0802BD18: .4byte gUnknown_2023E82 _0802BD1C: .4byte gUnknown_2023D74 _0802BD20: ldr r4, _0802BD54 @ =gActiveBattler ldr r0, _0802BD58 @ =sBattler_AI ldrb r0, [r0] strb r0, [r4] ldr r2, _0802BD5C @ =gBattleMoveDamage ldrb r1, [r4] movs r0, 0x58 muls r0, r1 adds r0, r3 ldrh r0, [r0, 0x28] str r0, [r2] ldr r1, _0802BD60 @ =0x00007fff movs r0, 0 bl EmitHealthBarUpdate ldrb r0, [r4] bl MarkBufferBankForExecution ldr r1, _0802BD64 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802BD4C: pop {r4} pop {r0} bx r0 .align 2, 0 _0802BD54: .4byte gActiveBattler _0802BD58: .4byte sBattler_AI _0802BD5C: .4byte gBattleMoveDamage _0802BD60: .4byte 0x00007fff _0802BD64: .4byte gUnknown_2023D74 thumb_func_end atkC9_jumpifattackandspecialattackcannotfall thumb_func_start atkCA_setforcedtarget atkCA_setforcedtarget: @ 802BD68 push {r4,r5,lr} ldr r4, _0802BDA8 @ =sBattler_AI ldrb r0, [r4] bl GetBattlerSide ldr r5, _0802BDAC @ =gSideTimers lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r5 movs r0, 0x1 strb r0, [r1, 0x8] ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 lsrs r0, 24 lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r5 ldrb r0, [r4] strb r0, [r1, 0x9] ldr r1, _0802BDB0 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0802BDA8: .4byte sBattler_AI _0802BDAC: .4byte gSideTimers _0802BDB0: .4byte gUnknown_2023D74 thumb_func_end atkCA_setforcedtarget thumb_func_start atkCB_setcharge atkCB_setcharge: @ 802BDB4 push {r4,lr} ldr r0, _0802BE08 @ =gStatuses3 ldr r3, _0802BE0C @ =sBattler_AI ldrb r1, [r3] lsls r1, 2 adds r1, r0 ldr r0, [r1] movs r2, 0x80 lsls r2, 2 orrs r0, r2 str r0, [r1] ldr r4, _0802BE10 @ =gDisableStructs ldrb r1, [r3] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r4 ldrb r2, [r0, 0x12] movs r1, 0x10 negs r1, r1 ands r1, r2 movs r2, 0x2 orrs r1, r2 strb r1, [r0, 0x12] ldrb r1, [r3] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r4 ldrb r2, [r0, 0x12] movs r1, 0xF ands r1, r2 movs r2, 0x20 orrs r1, r2 strb r1, [r0, 0x12] ldr r1, _0802BE14 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _0802BE08: .4byte gStatuses3 _0802BE0C: .4byte sBattler_AI _0802BE10: .4byte gDisableStructs _0802BE14: .4byte gUnknown_2023D74 thumb_func_end atkCB_setcharge thumb_func_start atkCC_callterrainattack atkCC_callterrainattack: @ 802BE18 push {r4,lr} ldr r2, _0802BE68 @ =gUnknown_2023DD0 ldr r0, [r2] ldr r1, _0802BE6C @ =0xfffffbff ands r0, r1 str r0, [r2] ldr r4, _0802BE70 @ =gCurrentMove ldr r1, _0802BE74 @ =gUnknown_825081C ldr r0, _0802BE78 @ =gUnknown_2022B50 ldrb r0, [r0] lsls r0, 1 adds r0, r1 ldrh r0, [r0] strh r0, [r4] ldrh r0, [r4] movs r1, 0 bl GetMoveTarget ldr r1, _0802BE7C @ =gBattlerTarget strb r0, [r1] ldr r3, _0802BE80 @ =gUnknown_81D65A8 ldr r2, _0802BE84 @ =gBattleMoves ldrh r1, [r4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0] lsls r0, 2 adds r0, r3 ldr r0, [r0] bl BattleScriptPush ldr r1, _0802BE88 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _0802BE68: .4byte gUnknown_2023DD0 _0802BE6C: .4byte 0xfffffbff _0802BE70: .4byte gCurrentMove _0802BE74: .4byte gUnknown_825081C _0802BE78: .4byte gUnknown_2022B50 _0802BE7C: .4byte gBattlerTarget _0802BE80: .4byte gUnknown_81D65A8 _0802BE84: .4byte gBattleMoves _0802BE88: .4byte gUnknown_2023D74 thumb_func_end atkCC_callterrainattack thumb_func_start atkCD_cureifburnedparalysedorpoisoned atkCD_cureifburnedparalysedorpoisoned: @ 802BE8C push {r4-r6,lr} sub sp, 0x4 ldr r1, _0802BED8 @ =gBattleMons ldr r3, _0802BEDC @ =sBattler_AI ldrb r0, [r3] movs r6, 0x58 muls r0, r6 adds r5, r1, 0 adds r5, 0x4C adds r2, r0, r5 ldr r0, [r2] movs r1, 0xD8 ands r0, r1 cmp r0, 0 beq _0802BEE8 movs r0, 0 str r0, [r2] ldr r1, _0802BEE0 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] ldr r4, _0802BEE4 @ =gActiveBattler ldrb r0, [r3] strb r0, [r4] ldrb r0, [r4] muls r0, r6 adds r0, r5 str r0, [sp] movs r0, 0 movs r1, 0x28 movs r2, 0 movs r3, 0x4 bl EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution b _0802BF02 .align 2, 0 _0802BED8: .4byte gBattleMons _0802BEDC: .4byte sBattler_AI _0802BEE0: .4byte gUnknown_2023D74 _0802BEE4: .4byte gActiveBattler _0802BEE8: ldr r3, _0802BF0C @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802BF02: add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0802BF0C: .4byte gUnknown_2023D74 thumb_func_end atkCD_cureifburnedparalysedorpoisoned thumb_func_start atkCE_settorment atkCE_settorment: @ 802BF10 push {lr} ldr r1, _0802BF48 @ =gBattleMons ldr r0, _0802BF4C @ =gBattlerTarget ldrb r2, [r0] movs r0, 0x58 muls r0, r2 adds r1, 0x50 adds r0, r1 ldr r1, [r0] movs r2, 0x80 lsls r2, 24 cmp r1, 0 bge _0802BF54 ldr r3, _0802BF50 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802BF60 .align 2, 0 _0802BF48: .4byte gBattleMons _0802BF4C: .4byte gBattlerTarget _0802BF50: .4byte gUnknown_2023D74 _0802BF54: orrs r1, r2 str r1, [r0] ldr r1, _0802BF64 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802BF60: pop {r0} bx r0 .align 2, 0 _0802BF64: .4byte gUnknown_2023D74 thumb_func_end atkCE_settorment thumb_func_start atkCF_jumpifnodamage atkCF_jumpifnodamage: @ 802BF68 push {lr} ldr r2, _0802BF94 @ =gUnknown_2023E8C ldr r0, _0802BF98 @ =sBattler_AI ldrb r0, [r0] lsls r1, r0, 4 adds r0, r2, 0x4 adds r0, r1, r0 ldr r0, [r0] cmp r0, 0 bne _0802BF88 adds r0, r2, 0 adds r0, 0x8 adds r0, r1, r0 ldr r0, [r0] cmp r0, 0 beq _0802BFA0 _0802BF88: ldr r1, _0802BF9C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802BFBA .align 2, 0 _0802BF94: .4byte gUnknown_2023E8C _0802BF98: .4byte sBattler_AI _0802BF9C: .4byte gUnknown_2023D74 _0802BFA0: ldr r3, _0802BFC0 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802BFBA: pop {r0} bx r0 .align 2, 0 _0802BFC0: .4byte gUnknown_2023D74 thumb_func_end atkCF_jumpifnodamage thumb_func_start atkD0_settaunt atkD0_settaunt: @ 802BFC4 push {r4,lr} ldr r4, _0802C008 @ =gDisableStructs ldr r3, _0802C00C @ =gBattlerTarget ldrb r0, [r3] lsls r1, r0, 3 subs r1, r0 lsls r1, 2 adds r2, r1, r4 ldrb r1, [r2, 0x13] lsls r0, r1, 28 cmp r0, 0 bne _0802C014 movs r0, 0x10 negs r0, r0 ands r0, r1 movs r1, 0x2 orrs r0, r1 strb r0, [r2, 0x13] ldrb r1, [r3] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r4 ldrb r2, [r0, 0x13] movs r1, 0xF ands r1, r2 movs r2, 0x20 orrs r1, r2 strb r1, [r0, 0x13] ldr r1, _0802C010 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802C02E .align 2, 0 _0802C008: .4byte gDisableStructs _0802C00C: .4byte gBattlerTarget _0802C010: .4byte gUnknown_2023D74 _0802C014: ldr r3, _0802C034 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802C02E: pop {r4} pop {r0} bx r0 .align 2, 0 _0802C034: .4byte gUnknown_2023D74 thumb_func_end atkD0_settaunt thumb_func_start atkD1_trysethelpinghand atkD1_trysethelpinghand: @ 802C038 push {r4,lr} ldr r4, _0802C0A0 @ =sBattler_AI ldrb r0, [r4] bl GetBattlerPosition movs r1, 0x2 eors r0, r1 lsls r0, 24 lsrs r0, 24 bl GetBattlerAtPosition ldr r3, _0802C0A4 @ =gBattlerTarget strb r0, [r3] ldr r0, _0802C0A8 @ =gBattleTypeFlags ldr r0, [r0] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _0802C0BC ldr r0, _0802C0AC @ =gAbsentBattlerFlags ldrb r1, [r0] ldr r2, _0802C0B0 @ =gBitTable ldrb r3, [r3] lsls r0, r3, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _0802C0BC ldr r1, _0802C0B4 @ =gUnknown_2023E8C ldrb r0, [r4] lsls r0, 4 adds r0, r1 ldrb r0, [r0] lsls r0, 28 cmp r0, 0 blt _0802C0BC lsls r0, r3, 4 adds r2, r0, r1 ldrb r1, [r2] lsls r0, r1, 28 cmp r0, 0 blt _0802C0BC movs r0, 0x8 orrs r0, r1 strb r0, [r2] ldr r1, _0802C0B8 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802C0D6 .align 2, 0 _0802C0A0: .4byte sBattler_AI _0802C0A4: .4byte gBattlerTarget _0802C0A8: .4byte gBattleTypeFlags _0802C0AC: .4byte gAbsentBattlerFlags _0802C0B0: .4byte gBitTable _0802C0B4: .4byte gUnknown_2023E8C _0802C0B8: .4byte gUnknown_2023D74 _0802C0BC: ldr r3, _0802C0DC @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802C0D6: pop {r4} pop {r0} bx r0 .align 2, 0 _0802C0DC: .4byte gUnknown_2023D74 thumb_func_end atkD1_trysethelpinghand thumb_func_start sub_802C0E0 sub_802C0E0: @ 802C0E0 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 ldr r4, _0802C1FC @ =gBattleTypeFlags ldr r0, [r4] movs r1, 0x80 lsls r1, 12 ands r0, r1 cmp r0, 0 bne _0802C1DE ldr r0, _0802C200 @ =sBattler_AI ldrb r0, [r0] bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0802C120 ldr r0, [r4] ldr r1, _0802C204 @ =0x00000902 ands r0, r1 cmp r0, 0 bne _0802C120 ldr r0, _0802C208 @ =gTrainerBattleOpponent_A ldrh r1, [r0] movs r0, 0x80 lsls r0, 3 cmp r1, r0 bne _0802C1DE _0802C120: ldr r6, _0802C200 @ =sBattler_AI ldrb r0, [r6] bl GetBattlerSide lsls r0, 24 lsrs r4, r0, 24 ldr r7, _0802C20C @ =gBattlerTarget ldrb r0, [r7] bl GetBattlerSide lsls r0, 24 lsrs r5, r0, 24 ldr r0, _0802C1FC @ =gBattleTypeFlags ldr r0, [r0] ldr r1, _0802C204 @ =0x00000902 ands r0, r1 cmp r0, 0 bne _0802C18A ldr r0, _0802C208 @ =gTrainerBattleOpponent_A ldrh r1, [r0] movs r0, 0x80 lsls r0, 3 cmp r1, r0 beq _0802C18A ldr r0, _0802C210 @ =gUnknown_2023F20 adds r2, r0, 0 adds r2, 0x29 adds r0, r4, r2 ldrb r1, [r0] ldr r4, _0802C214 @ =gBitTable ldr r3, _0802C218 @ =gBattlerPartyIndexes ldrb r0, [r6] lsls r0, 1 adds r0, r3 ldrh r0, [r0] lsls r0, 2 adds r0, r4 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _0802C1DE adds r0, r5, r2 ldrb r1, [r0] ldrb r0, [r7] lsls r0, 1 adds r0, r3 ldrh r0, [r0] lsls r0, 2 adds r0, r4 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _0802C1DE _0802C18A: ldr r0, _0802C21C @ =gBattleMons mov r8, r0 ldr r1, _0802C200 @ =sBattler_AI ldrb r4, [r1] movs r5, 0x58 adds r0, r4, 0 muls r0, r5 add r0, r8 mov r9, r0 ldrh r3, [r0, 0x2E] adds r1, r3, 0 cmp r1, 0 bne _0802C1B2 ldr r0, _0802C20C @ =gBattlerTarget ldrb r0, [r0] muls r0, r5 add r0, r8 ldrh r0, [r0, 0x2E] cmp r0, 0 beq _0802C1DE _0802C1B2: cmp r1, 0xAF beq _0802C1DE ldr r7, _0802C20C @ =gBattlerTarget ldrb r0, [r7] muls r0, r5 mov r2, r8 adds r1, r0, r2 ldrh r2, [r1, 0x2E] cmp r2, 0xAF beq _0802C1DE adds r0, r3, 0 subs r0, 0x79 lsls r0, 16 lsrs r0, 16 cmp r0, 0xB bls _0802C1DE adds r0, r2, 0 subs r0, 0x79 lsls r0, 16 lsrs r0, 16 cmp r0, 0xB bhi _0802C224 _0802C1DE: ldr r3, _0802C220 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802C37A .align 2, 0 _0802C1FC: .4byte gBattleTypeFlags _0802C200: .4byte sBattler_AI _0802C204: .4byte 0x00000902 _0802C208: .4byte gTrainerBattleOpponent_A _0802C20C: .4byte gBattlerTarget _0802C210: .4byte gUnknown_2023F20 _0802C214: .4byte gBitTable _0802C218: .4byte gBattlerPartyIndexes _0802C21C: .4byte gBattleMons _0802C220: .4byte gUnknown_2023D74 _0802C224: adds r0, r1, 0 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x3C bne _0802C258 ldr r1, _0802C24C @ =gUnknown_2023D74 ldr r0, _0802C250 @ =gUnknown_81D948E str r0, [r1] ldr r1, _0802C254 @ =gLastUsedAbility ldrb r0, [r7] muls r0, r5 add r0, r8 adds r0, 0x20 ldrb r0, [r0] strb r0, [r1] ldrb r0, [r7] ldrb r1, [r1] bl sub_80C71D0 b _0802C37A .align 2, 0 _0802C24C: .4byte gUnknown_2023D74 _0802C250: .4byte gUnknown_81D948E _0802C254: .4byte gLastUsedAbility _0802C258: ldr r3, _0802C344 @ =gBattleStruct mov r10, r3 lsls r0, r4, 1 adds r0, 0xD0 ldr r1, [r3] adds r6, r1, r0 mov r0, r9 ldrh r0, [r0, 0x2E] mov r9, r0 strh r2, [r6] ldr r1, _0802C348 @ =sBattler_AI ldrb r0, [r1] muls r0, r5 add r0, r8 movs r1, 0 strh r1, [r0, 0x2E] ldrb r0, [r7] muls r0, r5 add r0, r8 mov r2, r9 strh r2, [r0, 0x2E] ldr r4, _0802C34C @ =gActiveBattler ldr r3, _0802C348 @ =sBattler_AI ldrb r0, [r3] strb r0, [r4] str r6, [sp] movs r0, 0 movs r1, 0x2 movs r2, 0 movs r3, 0x2 bl EmitSetMonData ldr r1, _0802C348 @ =sBattler_AI ldrb r0, [r1] bl MarkBufferBankForExecution ldrb r0, [r7] strb r0, [r4] ldrb r0, [r7] muls r0, r5 mov r1, r8 adds r1, 0x2E adds r0, r1 str r0, [sp] movs r0, 0 movs r1, 0x2 movs r2, 0 movs r3, 0x2 bl EmitSetMonData ldrb r0, [r7] bl MarkBufferBankForExecution ldrb r0, [r7] mov r2, r10 ldr r1, [r2] lsls r0, 1 adds r0, r1 adds r0, 0xC8 movs r3, 0 strb r3, [r0] ldrb r0, [r7] ldr r1, [r2] lsls r0, 1 adds r0, r1 adds r0, 0xC9 strb r3, [r0] ldr r1, _0802C348 @ =sBattler_AI ldrb r0, [r1] ldr r1, [r2] lsls r0, 1 adds r0, r1 adds r0, 0xC8 strb r3, [r0] ldr r2, _0802C348 @ =sBattler_AI ldrb r0, [r2] mov r3, r10 ldr r1, [r3] lsls r0, 1 adds r0, r1 adds r0, 0xC9 movs r1, 0 strb r1, [r0] ldr r1, _0802C350 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] ldr r1, _0802C354 @ =gBattleTextBuff1 movs r3, 0xFD strb r3, [r1] movs r2, 0xA strb r2, [r1, 0x1] ldrh r0, [r6] strb r0, [r1, 0x2] ldrh r0, [r6] lsrs r0, 8 strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldr r1, _0802C358 @ =gBattleTextBuff2 strb r3, [r1] strb r2, [r1, 0x1] mov r2, r9 strb r2, [r1, 0x2] mov r3, r9 lsrs r0, r3, 8 strb r0, [r1, 0x3] movs r0, 0x1 negs r0, r0 strb r0, [r1, 0x4] cmp r3, 0 beq _0802C360 ldrh r0, [r6] cmp r0, 0 beq _0802C374 ldr r1, _0802C35C @ =gUnknown_2023E82 movs r0, 0x2 b _0802C378 .align 2, 0 _0802C344: .4byte gBattleStruct _0802C348: .4byte sBattler_AI _0802C34C: .4byte gActiveBattler _0802C350: .4byte gUnknown_2023D74 _0802C354: .4byte gBattleTextBuff1 _0802C358: .4byte gBattleTextBuff2 _0802C35C: .4byte gUnknown_2023E82 _0802C360: ldrh r0, [r6] cmp r0, 0 beq _0802C374 ldr r0, _0802C370 @ =gUnknown_2023E82 movs r1, 0 strb r1, [r0, 0x5] b _0802C37A .align 2, 0 _0802C370: .4byte gUnknown_2023E82 _0802C374: ldr r1, _0802C38C @ =gUnknown_2023E82 movs r0, 0x1 _0802C378: strb r0, [r1, 0x5] _0802C37A: add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802C38C: .4byte gUnknown_2023E82 thumb_func_end sub_802C0E0 thumb_func_start atkD3_trycopyability atkD3_trycopyability: @ 802C390 push {r4,lr} ldr r3, _0802C3D0 @ =gBattleMons ldr r4, _0802C3D4 @ =gBattlerTarget ldrb r0, [r4] movs r2, 0x58 muls r0, r2 adds r0, r3 adds r0, 0x20 ldrb r1, [r0] adds r0, r1, 0 cmp r0, 0 beq _0802C3E4 cmp r0, 0x19 beq _0802C3E4 ldr r0, _0802C3D8 @ =sBattler_AI ldrb r0, [r0] muls r0, r2 adds r0, r3 adds r0, 0x20 strb r1, [r0] ldr r1, _0802C3DC @ =gLastUsedAbility ldrb r0, [r4] muls r0, r2 adds r0, r3 adds r0, 0x20 ldrb r0, [r0] strb r0, [r1] ldr r1, _0802C3E0 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802C3FE .align 2, 0 _0802C3D0: .4byte gBattleMons _0802C3D4: .4byte gBattlerTarget _0802C3D8: .4byte sBattler_AI _0802C3DC: .4byte gLastUsedAbility _0802C3E0: .4byte gUnknown_2023D74 _0802C3E4: ldr r3, _0802C404 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802C3FE: pop {r4} pop {r0} bx r0 .align 2, 0 _0802C404: .4byte gUnknown_2023D74 thumb_func_end atkD3_trycopyability thumb_func_start atkD4_trywish atkD4_trywish: @ 802C408 push {r4-r7,lr} ldr r7, _0802C41C @ =gUnknown_2023D74 ldr r2, [r7] ldrb r3, [r2, 0x1] cmp r3, 0 beq _0802C420 cmp r3, 0x1 beq _0802C458 b _0802C4D4 .align 2, 0 _0802C41C: .4byte gUnknown_2023D74 _0802C420: ldr r1, _0802C44C @ =gUnknown_2023F20 ldr r4, _0802C450 @ =sBattler_AI adds r0, r1, 0 adds r0, 0x20 ldrb r5, [r4] adds r3, r0, r5 ldrb r0, [r3] cmp r0, 0 bne _0802C4A4 movs r0, 0x2 strb r0, [r3] ldrb r0, [r4] adds r1, 0x24 adds r1, r0, r1 ldr r2, _0802C454 @ =gBattlerPartyIndexes lsls r0, 1 adds r0, r2 ldrh r0, [r0] strb r0, [r1] ldr r0, [r7] adds r0, 0x6 b _0802C4D2 .align 2, 0 _0802C44C: .4byte gUnknown_2023F20 _0802C450: .4byte sBattler_AI _0802C454: .4byte gBattlerPartyIndexes _0802C458: ldr r1, _0802C4BC @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x4 strb r0, [r1, 0x1] ldr r4, _0802C4C0 @ =gBattlerTarget ldrb r0, [r4] strb r0, [r1, 0x2] ldr r0, _0802C4C4 @ =gUnknown_2023F20 adds r0, 0x24 ldrb r5, [r4] adds r0, r5 ldrb r0, [r0] strb r0, [r1, 0x3] movs r0, 0xFF strb r0, [r1, 0x4] ldr r1, _0802C4C8 @ =gBattleMoveDamage ldr r6, _0802C4CC @ =gBattleMons ldrb r0, [r4] movs r5, 0x58 muls r0, r5 adds r0, r6 ldrh r0, [r0, 0x2C] lsrs r0, 1 str r0, [r1] cmp r0, 0 bne _0802C490 str r3, [r1] _0802C490: ldr r0, [r1] negs r0, r0 str r0, [r1] ldrb r0, [r4] muls r0, r5 adds r0, r6 ldrh r1, [r0, 0x28] ldrh r0, [r0, 0x2C] cmp r1, r0 bne _0802C4D0 _0802C4A4: ldrb r1, [r2, 0x2] ldrb r0, [r2, 0x3] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x5] lsls r0, 24 orrs r1, r0 str r1, [r7] b _0802C4D4 .align 2, 0 _0802C4BC: .4byte gBattleTextBuff1 _0802C4C0: .4byte gBattlerTarget _0802C4C4: .4byte gUnknown_2023F20 _0802C4C8: .4byte gBattleMoveDamage _0802C4CC: .4byte gBattleMons _0802C4D0: adds r0, r2, 0x6 _0802C4D2: str r0, [r7] _0802C4D4: pop {r4-r7} pop {r0} bx r0 thumb_func_end atkD4_trywish thumb_func_start atkD5_trysetroots atkD5_trysetroots: @ 802C4DC push {lr} ldr r1, _0802C514 @ =gStatuses3 ldr r0, _0802C518 @ =sBattler_AI ldrb r0, [r0] lsls r0, 2 adds r2, r0, r1 ldr r1, [r2] movs r3, 0x80 lsls r3, 3 adds r0, r1, 0 ands r0, r3 cmp r0, 0 beq _0802C520 ldr r3, _0802C51C @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802C52C .align 2, 0 _0802C514: .4byte gStatuses3 _0802C518: .4byte sBattler_AI _0802C51C: .4byte gUnknown_2023D74 _0802C520: orrs r1, r3 str r1, [r2] ldr r1, _0802C530 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802C52C: pop {r0} bx r0 .align 2, 0 _0802C530: .4byte gUnknown_2023D74 thumb_func_end atkD5_trysetroots thumb_func_start atkD6_doubledamagedealtifdamaged atkD6_doubledamagedealtifdamaged: @ 802C534 push {lr} ldr r3, _0802C580 @ =gUnknown_2023E8C ldr r0, _0802C584 @ =sBattler_AI ldrb r0, [r0] lsls r2, r0, 4 adds r0, r3, 0x4 adds r0, r2, r0 ldr r0, [r0] cmp r0, 0 beq _0802C554 adds r0, r2, r3 ldr r1, _0802C588 @ =gBattlerTarget ldrb r0, [r0, 0xC] ldrb r1, [r1] cmp r0, r1 beq _0802C56C _0802C554: adds r0, r3, 0 adds r0, 0x8 adds r0, r2, r0 ldr r0, [r0] cmp r0, 0 beq _0802C572 adds r0, r2, r3 ldr r1, _0802C588 @ =gBattlerTarget ldrb r0, [r0, 0xD] ldrb r1, [r1] cmp r0, r1 bne _0802C572 _0802C56C: ldr r1, _0802C58C @ =gBattleScripting movs r0, 0x2 strb r0, [r1, 0xE] _0802C572: ldr r1, _0802C590 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _0802C580: .4byte gUnknown_2023E8C _0802C584: .4byte sBattler_AI _0802C588: .4byte gBattlerTarget _0802C58C: .4byte gBattleScripting _0802C590: .4byte gUnknown_2023D74 thumb_func_end atkD6_doubledamagedealtifdamaged thumb_func_start atkD7_setyawn atkD7_setyawn: @ 802C594 push {r4,lr} ldr r1, _0802C5D8 @ =gStatuses3 ldr r0, _0802C5DC @ =gBattlerTarget ldrb r3, [r0] lsls r0, r3, 2 adds r4, r0, r1 ldr r2, [r4] movs r0, 0xC0 lsls r0, 5 ands r0, r2 cmp r0, 0 bne _0802C5BC ldr r1, _0802C5E0 @ =gBattleMons movs r0, 0x58 muls r0, r3 adds r1, 0x4C adds r0, r1 ldrb r0, [r0] cmp r0, 0 beq _0802C5E8 _0802C5BC: ldr r3, _0802C5E4 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802C5F8 .align 2, 0 _0802C5D8: .4byte gStatuses3 _0802C5DC: .4byte gBattlerTarget _0802C5E0: .4byte gBattleMons _0802C5E4: .4byte gUnknown_2023D74 _0802C5E8: movs r0, 0x80 lsls r0, 5 orrs r2, r0 str r2, [r4] ldr r1, _0802C600 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802C5F8: pop {r4} pop {r0} bx r0 .align 2, 0 _0802C600: .4byte gUnknown_2023D74 thumb_func_end atkD7_setyawn thumb_func_start atkD8_setdamagetohealthdifference atkD8_setdamagetohealthdifference: @ 802C604 push {lr} ldr r2, _0802C640 @ =gBattleMons ldr r0, _0802C644 @ =gBattlerTarget ldrb r0, [r0] movs r1, 0x58 muls r0, r1 adds r3, r0, r2 ldr r0, _0802C648 @ =sBattler_AI ldrb r0, [r0] muls r0, r1 adds r1, r0, r2 ldrh r0, [r3, 0x28] ldrh r2, [r1, 0x28] cmp r0, r2 bhi _0802C650 ldr r3, _0802C64C @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802C662 .align 2, 0 _0802C640: .4byte gBattleMons _0802C644: .4byte gBattlerTarget _0802C648: .4byte sBattler_AI _0802C64C: .4byte gUnknown_2023D74 _0802C650: ldr r2, _0802C668 @ =gBattleMoveDamage ldrh r0, [r3, 0x28] ldrh r1, [r1, 0x28] subs r0, r1 str r0, [r2] ldr r1, _0802C66C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802C662: pop {r0} bx r0 .align 2, 0 _0802C668: .4byte gBattleMoveDamage _0802C66C: .4byte gUnknown_2023D74 thumb_func_end atkD8_setdamagetohealthdifference thumb_func_start atkD9_scaledamagebyhealthratio atkD9_scaledamagebyhealthratio: @ 802C670 push {r4,lr} ldr r4, _0802C6BC @ =gDynamicBasePower ldrh r0, [r4] cmp r0, 0 bne _0802C6AC ldr r2, _0802C6C0 @ =gBattleMoves ldr r0, _0802C6C4 @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r3, [r0, 0x1] ldr r2, _0802C6C8 @ =gBattleMons ldr r0, _0802C6CC @ =sBattler_AI ldrb r1, [r0] movs r0, 0x58 muls r1, r0 adds r1, r2 ldrh r0, [r1, 0x28] muls r0, r3 ldrh r1, [r1, 0x2C] bl __divsi3 strh r0, [r4] lsls r0, 16 cmp r0, 0 bne _0802C6AC movs r0, 0x1 strh r0, [r4] _0802C6AC: ldr r1, _0802C6D0 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _0802C6BC: .4byte gDynamicBasePower _0802C6C0: .4byte gBattleMoves _0802C6C4: .4byte gCurrentMove _0802C6C8: .4byte gBattleMons _0802C6CC: .4byte sBattler_AI _0802C6D0: .4byte gUnknown_2023D74 thumb_func_end atkD9_scaledamagebyhealthratio thumb_func_start atkDA_tryswapabilities atkDA_tryswapabilities: @ 802C6D4 push {r4-r6,lr} ldr r5, _0802C738 @ =gBattleMons ldr r0, _0802C73C @ =sBattler_AI ldrb r0, [r0] movs r4, 0x58 muls r0, r4 adds r0, r5 adds r2, r0, 0 adds r2, 0x20 ldrb r1, [r2] cmp r1, 0 bne _0802C6FC ldr r0, _0802C740 @ =gBattlerTarget ldrb r0, [r0] muls r0, r4 adds r0, r5 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0 beq _0802C71C _0802C6FC: cmp r1, 0x19 beq _0802C71C ldr r6, _0802C740 @ =gBattlerTarget ldrb r0, [r6] muls r0, r4 adds r0, r5 adds r0, 0x20 ldrb r3, [r0] cmp r3, 0x19 beq _0802C71C ldr r0, _0802C744 @ =gMoveResultFlags ldrb r1, [r0] movs r0, 0x29 ands r0, r1 cmp r0, 0 beq _0802C74C _0802C71C: ldr r3, _0802C748 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802C762 .align 2, 0 _0802C738: .4byte gBattleMons _0802C73C: .4byte sBattler_AI _0802C740: .4byte gBattlerTarget _0802C744: .4byte gMoveResultFlags _0802C748: .4byte gUnknown_2023D74 _0802C74C: ldrb r1, [r2] strb r3, [r2] ldrb r0, [r6] muls r0, r4 adds r0, r5 adds r0, 0x20 strb r1, [r0] ldr r1, _0802C768 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802C762: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0802C768: .4byte gUnknown_2023D74 thumb_func_end atkDA_tryswapabilities thumb_func_start atkDB_tryimprision atkDB_tryimprision: @ 802C76C push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} ldr r1, _0802C78C @ =gStatuses3 ldr r4, _0802C790 @ =sBattler_AI ldrb r2, [r4] lsls r0, r2, 2 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 6 ands r0, r1 cmp r0, 0 beq _0802C7BC b _0802C83E .align 2, 0 _0802C78C: .4byte gStatuses3 _0802C790: .4byte sBattler_AI _0802C794: ldr r0, _0802C7B4 @ =gStatuses3 mov r2, r9 ldrb r1, [r2] lsls r1, 2 adds r1, r0 ldr r0, [r1] movs r2, 0x80 lsls r2, 6 orrs r0, r2 str r0, [r1] ldr r1, _0802C7B8 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802C836 .align 2, 0 _0802C7B4: .4byte gStatuses3 _0802C7B8: .4byte gUnknown_2023D74 _0802C7BC: adds r0, r2, 0 bl GetBattlerSide lsls r0, 24 lsrs r0, 24 mov r8, r0 ldrb r0, [r4] bl PressurePPLoseOnUsingImprision movs r6, 0 b _0802C82E _0802C7D2: adds r0, r6, 0 bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r8, r0 beq _0802C828 movs r4, 0 ldr r7, _0802C864 @ =sBattler_AI mov r9, r7 ldr r0, _0802C868 @ =gBattleMons mov r12, r0 mov r1, r9 ldrb r0, [r1] mov r2, r12 adds r2, 0xC movs r1, 0x58 muls r0, r1 adds r3, r0, r2 adds r5, r6, 0 muls r5, r1 _0802C7FC: movs r2, 0 ldrh r1, [r3] mov r0, r12 adds r0, 0xC adds r0, r5, r0 _0802C806: ldrh r7, [r0] cmp r1, r7 bne _0802C810 cmp r1, 0 bne _0802C818 _0802C810: adds r0, 0x2 adds r2, 0x1 cmp r2, 0x3 ble _0802C806 _0802C818: cmp r2, 0x4 bne _0802C824 adds r3, 0x2 adds r4, 0x1 cmp r4, 0x3 ble _0802C7FC _0802C824: cmp r4, 0x4 bne _0802C794 _0802C828: adds r0, r6, 0x1 lsls r0, 24 lsrs r6, r0, 24 _0802C82E: ldr r0, _0802C86C @ =gBattlersCount ldrb r0, [r0] cmp r6, r0 bcc _0802C7D2 _0802C836: ldr r0, _0802C86C @ =gBattlersCount ldrb r0, [r0] cmp r6, r0 bne _0802C858 _0802C83E: ldr r3, _0802C870 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802C858: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802C864: .4byte sBattler_AI _0802C868: .4byte gBattleMons _0802C86C: .4byte gBattlersCount _0802C870: .4byte gUnknown_2023D74 thumb_func_end atkDB_tryimprision thumb_func_start atkDC_trysetgrudge atkDC_trysetgrudge: @ 802C874 push {lr} ldr r1, _0802C8AC @ =gStatuses3 ldr r0, _0802C8B0 @ =sBattler_AI ldrb r0, [r0] lsls r0, 2 adds r2, r0, r1 ldr r1, [r2] movs r3, 0x80 lsls r3, 7 adds r0, r1, 0 ands r0, r3 cmp r0, 0 beq _0802C8B8 ldr r3, _0802C8B4 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802C8C4 .align 2, 0 _0802C8AC: .4byte gStatuses3 _0802C8B0: .4byte sBattler_AI _0802C8B4: .4byte gUnknown_2023D74 _0802C8B8: orrs r1, r3 str r1, [r2] ldr r1, _0802C8C8 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802C8C4: pop {r0} bx r0 .align 2, 0 _0802C8C8: .4byte gUnknown_2023D74 thumb_func_end atkDC_trysetgrudge thumb_func_start atkDD_weightdamagecalculation atkDD_weightdamagecalculation: @ 802C8CC push {r4-r7,lr} mov r7, r8 push {r7} movs r5, 0 ldr r2, _0802C930 @ =gUnknown_8250830 ldrh r0, [r2] ldr r1, _0802C934 @ =0x0000ffff cmp r0, r1 beq _0802C944 adds r6, r2, 0 ldr r0, _0802C938 @ =gBattleMons mov r8, r0 adds r7, r1, 0 adds r4, r6, 0 _0802C8E8: ldr r0, _0802C93C @ =gBattlerTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 add r0, r8 ldrh r0, [r0] bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 movs r1, 0x1 bl sub_8088E38 ldrh r1, [r4] lsls r0, 16 lsrs r0, 16 cmp r1, r0 bhi _0802C916 adds r4, 0x4 adds r5, 0x2 ldrh r0, [r4] cmp r0, r7 bne _0802C8E8 _0802C916: lsls r0, r5, 1 adds r0, r6 ldrh r1, [r0] ldr r0, _0802C934 @ =0x0000ffff cmp r1, r0 beq _0802C944 ldr r0, _0802C940 @ =gDynamicBasePower adds r1, r5, 0x1 lsls r1, 1 adds r1, r6 ldrh r1, [r1] strh r1, [r0] b _0802C94A .align 2, 0 _0802C930: .4byte gUnknown_8250830 _0802C934: .4byte 0x0000ffff _0802C938: .4byte gBattleMons _0802C93C: .4byte gBattlerTarget _0802C940: .4byte gDynamicBasePower _0802C944: ldr r1, _0802C95C @ =gDynamicBasePower movs r0, 0x78 strh r0, [r1] _0802C94A: ldr r1, _0802C960 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802C95C: .4byte gDynamicBasePower _0802C960: .4byte gUnknown_2023D74 thumb_func_end atkDD_weightdamagecalculation thumb_func_start atkDE_asistattackselect atkDE_asistattackselect: @ 802C964 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0xC movs r0, 0 mov r10, r0 ldr r0, _0802CA84 @ =gBattleStruct ldr r0, [r0] adds r0, 0x18 str r0, [sp, 0x4] ldr r0, _0802CA88 @ =sBattler_AI ldrb r0, [r0] bl GetBattlerPosition movs r1, 0x1 ands r1, r0 ldr r0, _0802CA8C @ =gPlayerParty str r0, [sp] cmp r1, 0 beq _0802C994 ldr r1, _0802CA90 @ =gEnemyParty str r1, [sp] _0802C994: movs r2, 0 _0802C996: ldr r1, _0802CA94 @ =gBattlerPartyIndexes ldr r0, _0802CA88 @ =sBattler_AI ldrb r0, [r0] lsls r0, 1 adds r0, r1 adds r1, r2, 0x1 str r1, [sp, 0x8] ldrh r0, [r0] cmp r2, r0 beq _0802CA3C movs r0, 0x64 adds r6, r2, 0 muls r6, r0 ldr r0, [sp] adds r4, r0, r6 adds r0, r4, 0 movs r1, 0x41 bl GetMonData cmp r0, 0 beq _0802CA3C adds r0, r4, 0 movs r1, 0x41 bl GetMonData movs r1, 0xCE lsls r1, 1 cmp r0, r1 beq _0802CA3C movs r5, 0 ldr r1, _0802CA98 @ =0x0000ffff mov r8, r1 mov r9, r6 mov r1, r10 lsls r0, r1, 1 ldr r1, [sp, 0x4] adds r6, r0, r1 _0802C9E0: movs r7, 0 adds r1, r5, 0 adds r1, 0xD ldr r0, [sp] add r0, r9 bl GetMonData lsls r0, 16 lsrs r4, r0, 16 adds r0, r4, 0 bl IsInvalidForSleepTalkOrAssist lsls r0, 24 adds r1, r5, 0x1 cmp r0, 0 bne _0802CA36 ldr r0, _0802CA9C @ =gUnknown_82507E8 ldrh r2, [r0] adds r3, r0, 0 cmp r2, r8 beq _0802CA2A cmp r4, r2 beq _0802CA20 ldr r5, _0802CA98 @ =0x0000ffff adds r2, r3, 0 _0802CA12: adds r2, 0x2 adds r7, 0x1 ldrh r0, [r2] cmp r0, r5 beq _0802CA2A cmp r4, r0 bne _0802CA12 _0802CA20: lsls r0, r7, 1 adds r0, r3 ldrh r0, [r0] cmp r0, r8 bne _0802CA36 _0802CA2A: cmp r4, 0 beq _0802CA36 strh r4, [r6] adds r6, 0x2 movs r0, 0x1 add r10, r0 _0802CA36: adds r5, r1, 0 cmp r5, 0x3 ble _0802C9E0 _0802CA3C: ldr r2, [sp, 0x8] cmp r2, 0x5 ble _0802C996 mov r1, r10 cmp r1, 0 beq _0802CAB4 ldr r2, _0802CAA0 @ =gUnknown_2023DD0 ldr r0, [r2] ldr r1, _0802CAA4 @ =0xfffffbff ands r0, r1 str r0, [r2] ldr r4, _0802CAA8 @ =gUnknown_2023D4E bl Random movs r1, 0xFF ands r1, r0 mov r0, r10 muls r0, r1 asrs r0, 8 lsls r0, 1 ldr r1, [sp, 0x4] adds r0, r1 ldrh r0, [r0] strh r0, [r4] ldrh r0, [r4] movs r1, 0 bl GetMoveTarget ldr r1, _0802CAAC @ =gBattlerTarget strb r0, [r1] ldr r1, _0802CAB0 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802CACE .align 2, 0 _0802CA84: .4byte gBattleStruct _0802CA88: .4byte sBattler_AI _0802CA8C: .4byte gPlayerParty _0802CA90: .4byte gEnemyParty _0802CA94: .4byte gBattlerPartyIndexes _0802CA98: .4byte 0x0000ffff _0802CA9C: .4byte gUnknown_82507E8 _0802CAA0: .4byte gUnknown_2023DD0 _0802CAA4: .4byte 0xfffffbff _0802CAA8: .4byte gUnknown_2023D4E _0802CAAC: .4byte gBattlerTarget _0802CAB0: .4byte gUnknown_2023D74 _0802CAB4: ldr r3, _0802CAE0 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802CACE: add sp, 0xC pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802CAE0: .4byte gUnknown_2023D74 thumb_func_end atkDE_asistattackselect thumb_func_start atkDF_trysetmagiccoat atkDF_trysetmagiccoat: @ 802CAE4 push {lr} ldr r1, _0802CB2C @ =gBattlerTarget ldr r3, _0802CB30 @ =sBattler_AI ldrb r0, [r3] strb r0, [r1] ldr r2, _0802CB34 @ =gUnknown_2023ECC ldrb r1, [r3] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r2, 0x20 orrs r1, r2 strb r1, [r0] ldr r0, _0802CB38 @ =gUnknown_2023BE2 ldrb r1, [r0] ldr r0, _0802CB3C @ =gBattlersCount ldrb r0, [r0] subs r0, 0x1 cmp r1, r0 bne _0802CB44 ldr r3, _0802CB40 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802CB5C .align 2, 0 _0802CB2C: .4byte gBattlerTarget _0802CB30: .4byte sBattler_AI _0802CB34: .4byte gUnknown_2023ECC _0802CB38: .4byte gUnknown_2023BE2 _0802CB3C: .4byte gBattlersCount _0802CB40: .4byte gUnknown_2023D74 _0802CB44: ldr r0, _0802CB60 @ =gUnknown_2023E8C ldrb r1, [r3] lsls r1, 4 adds r1, r0 ldrb r0, [r1] movs r2, 0x10 orrs r0, r2 strb r0, [r1] ldr r1, _0802CB64 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802CB5C: pop {r0} bx r0 .align 2, 0 _0802CB60: .4byte gUnknown_2023E8C _0802CB64: .4byte gUnknown_2023D74 thumb_func_end atkDF_trysetmagiccoat thumb_func_start atkE0_trysetsnatch atkE0_trysetsnatch: @ 802CB68 push {lr} ldr r2, _0802CBAC @ =gUnknown_2023ECC ldr r3, _0802CBB0 @ =sBattler_AI ldrb r1, [r3] lsls r0, r1, 2 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r1, [r0] movs r2, 0x20 orrs r1, r2 strb r1, [r0] ldr r0, _0802CBB4 @ =gUnknown_2023BE2 ldrb r1, [r0] ldr r0, _0802CBB8 @ =gBattlersCount ldrb r0, [r0] subs r0, 0x1 cmp r1, r0 bne _0802CBC0 ldr r3, _0802CBBC @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802CBD6 .align 2, 0 _0802CBAC: .4byte gUnknown_2023ECC _0802CBB0: .4byte sBattler_AI _0802CBB4: .4byte gUnknown_2023BE2 _0802CBB8: .4byte gBattlersCount _0802CBBC: .4byte gUnknown_2023D74 _0802CBC0: ldr r0, _0802CBDC @ =gUnknown_2023E8C ldrb r1, [r3] lsls r1, 4 adds r1, r0 ldrb r0, [r1] orrs r0, r2 strb r0, [r1] ldr r1, _0802CBE0 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802CBD6: pop {r0} bx r0 .align 2, 0 _0802CBDC: .4byte gUnknown_2023E8C _0802CBE0: .4byte gUnknown_2023D74 thumb_func_end atkE0_trysetsnatch thumb_func_start atkE1_trygetintimidatetarget atkE1_trygetintimidatetarget: @ 802CBE4 push {r4-r6,lr} ldr r4, _0802CC88 @ =gBattleScripting ldr r0, _0802CC8C @ =gBattleStruct ldr r0, [r0] adds r0, 0xD8 ldrb r0, [r0] strb r0, [r4, 0x17] ldrb r0, [r4, 0x17] bl GetBattlerSide lsls r0, 24 lsrs r5, r0, 24 ldr r2, _0802CC90 @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r2] movs r0, 0x9 strb r0, [r2, 0x1] ldr r3, _0802CC94 @ =gBattleMons ldrb r1, [r4, 0x17] movs r0, 0x58 muls r0, r1 adds r0, r3 adds r0, 0x20 ldrb r0, [r0] strb r0, [r2, 0x2] movs r0, 0xFF strb r0, [r2, 0x3] ldr r2, _0802CC98 @ =gBattlerTarget ldr r1, _0802CC9C @ =gBattlersCount ldrb r0, [r2] ldrb r1, [r1] cmp r0, r1 bcs _0802CC6A adds r4, r2, 0 ldr r6, _0802CCA0 @ =gBitTable _0802CC2A: ldrb r0, [r4] bl GetBattlerSide lsls r0, 24 lsrs r0, 24 cmp r0, r5 beq _0802CC4C ldr r0, _0802CCA4 @ =gAbsentBattlerFlags ldrb r1, [r0] ldrb r0, [r4] lsls r0, 2 adds r0, r6 ldr r0, [r0] ands r1, r0 ldr r2, _0802CC9C @ =gBattlersCount cmp r1, 0 beq _0802CC60 _0802CC4C: ldrb r0, [r4] adds r0, 0x1 strb r0, [r4] ldr r1, _0802CC9C @ =gBattlersCount lsls r0, 24 lsrs r0, 24 adds r2, r1, 0 ldrb r1, [r2] cmp r0, r1 bcc _0802CC2A _0802CC60: ldr r0, _0802CC98 @ =gBattlerTarget ldrb r0, [r0] ldrb r2, [r2] cmp r0, r2 bcc _0802CCAC _0802CC6A: ldr r3, _0802CCA8 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802CCB4 .align 2, 0 _0802CC88: .4byte gBattleScripting _0802CC8C: .4byte gBattleStruct _0802CC90: .4byte gBattleTextBuff1 _0802CC94: .4byte gBattleMons _0802CC98: .4byte gBattlerTarget _0802CC9C: .4byte gBattlersCount _0802CCA0: .4byte gBitTable _0802CCA4: .4byte gAbsentBattlerFlags _0802CCA8: .4byte gUnknown_2023D74 _0802CCAC: ldr r1, _0802CCBC @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802CCB4: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0802CCBC: .4byte gUnknown_2023D74 thumb_func_end atkE1_trygetintimidatetarget thumb_func_start atkE2_switchoutabilities atkE2_switchoutabilities: @ 802CCC0 push {r4-r6,lr} sub sp, 0x4 ldr r5, _0802CD28 @ =gUnknown_2023D74 ldr r0, [r5] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r4, _0802CD2C @ =gActiveBattler strb r0, [r4] ldr r3, _0802CD30 @ =gBattleMons ldrb r0, [r4] movs r6, 0x58 adds r1, r0, 0 muls r1, r6 adds r0, r1, r3 adds r0, 0x20 ldrb r0, [r0] cmp r0, 0x1E bne _0802CD1A adds r3, 0x4C adds r1, r3 movs r0, 0 str r0, [r1] ldr r2, _0802CD34 @ =gBitTable ldrb r1, [r4] ldr r0, _0802CD38 @ =gBattleStruct ldr r0, [r0] adds r0, r1, r0 adds r0, 0x58 ldrb r0, [r0] lsls r0, 2 adds r0, r2 ldrb r2, [r0] adds r0, r1, 0 muls r0, r6 adds r0, r3 str r0, [sp] movs r0, 0 movs r1, 0x28 movs r3, 0x4 bl EmitSetMonData ldrb r0, [r4] bl MarkBufferBankForExecution _0802CD1A: ldr r0, [r5] adds r0, 0x2 str r0, [r5] add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0802CD28: .4byte gUnknown_2023D74 _0802CD2C: .4byte gActiveBattler _0802CD30: .4byte gBattleMons _0802CD34: .4byte gBitTable _0802CD38: .4byte gBattleStruct thumb_func_end atkE2_switchoutabilities thumb_func_start atkE3_jumpifhasnohp atkE3_jumpifhasnohp: @ 802CD3C push {r4,lr} ldr r4, _0802CD78 @ =gUnknown_2023D74 ldr r0, [r4] ldrb r0, [r0, 0x1] bl sub_8016E24 ldr r1, _0802CD7C @ =gActiveBattler strb r0, [r1] ldr r2, _0802CD80 @ =gBattleMons ldrb r1, [r1] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r0, [r0, 0x28] cmp r0, 0 bne _0802CD84 ldr r2, [r4] ldrb r1, [r2, 0x2] ldrb r0, [r2, 0x3] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x5] lsls r0, 24 orrs r1, r0 str r1, [r4] b _0802CD8A .align 2, 0 _0802CD78: .4byte gUnknown_2023D74 _0802CD7C: .4byte gActiveBattler _0802CD80: .4byte gBattleMons _0802CD84: ldr r0, [r4] adds r0, 0x6 str r0, [r4] _0802CD8A: pop {r4} pop {r0} bx r0 thumb_func_end atkE3_jumpifhasnohp thumb_func_start atkE4_getsecretpowereffect atkE4_getsecretpowereffect: @ 802CD90 push {lr} ldr r0, _0802CDA4 @ =gUnknown_2022B50 ldrb r0, [r0] cmp r0, 0x7 bhi _0802CE2C lsls r0, 2 ldr r1, _0802CDA8 @ =_0802CDAC adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0802CDA4: .4byte gUnknown_2022B50 _0802CDA8: .4byte _0802CDAC .align 2, 0 _0802CDAC: .4byte _0802CDCC .4byte _0802CDD8 .4byte _0802CDE4 .4byte _0802CDF0 .4byte _0802CDFC .4byte _0802CE08 .4byte _0802CE14 .4byte _0802CE20 _0802CDCC: ldr r1, _0802CDD4 @ =gUnknown_2023E82 movs r0, 0x2 b _0802CE30 .align 2, 0 _0802CDD4: .4byte gUnknown_2023E82 _0802CDD8: ldr r1, _0802CDE0 @ =gUnknown_2023E82 movs r0, 0x1 b _0802CE30 .align 2, 0 _0802CDE0: .4byte gUnknown_2023E82 _0802CDE4: ldr r1, _0802CDEC @ =gUnknown_2023E82 movs r0, 0x1B b _0802CE30 .align 2, 0 _0802CDEC: .4byte gUnknown_2023E82 _0802CDF0: ldr r1, _0802CDF8 @ =gUnknown_2023E82 movs r0, 0x17 b _0802CE30 .align 2, 0 _0802CDF8: .4byte gUnknown_2023E82 _0802CDFC: ldr r1, _0802CE04 @ =gUnknown_2023E82 movs r0, 0x16 b _0802CE30 .align 2, 0 _0802CE04: .4byte gUnknown_2023E82 _0802CE08: ldr r1, _0802CE10 @ =gUnknown_2023E82 movs r0, 0x18 b _0802CE30 .align 2, 0 _0802CE10: .4byte gUnknown_2023E82 _0802CE14: ldr r1, _0802CE1C @ =gUnknown_2023E82 movs r0, 0x7 b _0802CE30 .align 2, 0 _0802CE1C: .4byte gUnknown_2023E82 _0802CE20: ldr r1, _0802CE28 @ =gUnknown_2023E82 movs r0, 0x8 b _0802CE30 .align 2, 0 _0802CE28: .4byte gUnknown_2023E82 _0802CE2C: ldr r1, _0802CE40 @ =gUnknown_2023E82 movs r0, 0x5 _0802CE30: strb r0, [r1, 0x3] ldr r1, _0802CE44 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _0802CE40: .4byte gUnknown_2023E82 _0802CE44: .4byte gUnknown_2023D74 thumb_func_end atkE4_getsecretpowereffect thumb_func_start sub_802CE48 sub_802CE48: @ 802CE48 push {r4-r7,lr} mov r7, r8 push {r7} movs r7, 0 ldr r0, _0802CE90 @ =gBaseStats mov r8, r0 _0802CE54: movs r0, 0x64 adds r4, r7, 0 muls r4, r0 ldr r0, _0802CE94 @ =gPlayerParty adds r4, r0 adds r0, r4, 0 movs r1, 0x41 bl GetMonData lsls r0, 16 lsrs r5, r0, 16 adds r0, r4, 0 movs r1, 0xC bl GetMonData lsls r0, 16 lsrs r6, r0, 16 adds r0, r4, 0 movs r1, 0x2E bl GetMonData cmp r0, 0 beq _0802CE98 lsls r0, r5, 3 subs r0, r5 lsls r0, 2 add r0, r8 ldrb r0, [r0, 0x17] b _0802CEA2 .align 2, 0 _0802CE90: .4byte gBaseStats _0802CE94: .4byte gPlayerParty _0802CE98: lsls r0, r5, 3 subs r0, r5 lsls r0, 2 add r0, r8 ldrb r0, [r0, 0x16] _0802CEA2: adds r4, r7, 0x1 cmp r0, 0x35 bne _0802CF0A cmp r5, 0 beq _0802CF0A movs r0, 0xCE lsls r0, 1 cmp r5, r0 beq _0802CF0A cmp r6, 0 bne _0802CF0A bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0xA bl __umodsi3 lsls r0, 16 cmp r0, 0 bne _0802CF0A bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0x64 bl __umodsi3 lsls r0, 16 lsrs r3, r0, 16 movs r2, 0 ldr r1, _0802CEE4 @ =gUnknown_8250848 b _0802CEF0 .align 2, 0 _0802CEE4: .4byte gUnknown_8250848 _0802CEE8: adds r1, 0x4 adds r2, 0x1 cmp r2, 0xE bhi _0802CEF6 _0802CEF0: ldrb r0, [r1, 0x2] cmp r0, r3 ble _0802CEE8 _0802CEF6: movs r0, 0x64 muls r0, r7 ldr r1, _0802CF24 @ =gPlayerParty adds r0, r1 lsls r2, 2 ldr r1, _0802CF28 @ =gUnknown_8250848 adds r2, r1 movs r1, 0xC bl SetMonData _0802CF0A: adds r7, r4, 0 cmp r7, 0x5 ble _0802CE54 ldr r1, _0802CF2C @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802CF24: .4byte gPlayerParty _0802CF28: .4byte gUnknown_8250848 _0802CF2C: .4byte gUnknown_2023D74 thumb_func_end sub_802CE48 thumb_func_start atkE6_docastformchangeanimation atkE6_docastformchangeanimation: @ 802CF30 push {r4,lr} ldr r4, _0802CF84 @ =gActiveBattler ldr r0, _0802CF88 @ =gBattleScripting ldrb r0, [r0, 0x17] strb r0, [r4] ldr r1, _0802CF8C @ =gBattleMons ldrb r2, [r4] movs r0, 0x58 muls r0, r2 adds r1, 0x50 adds r0, r1 ldr r0, [r0] movs r1, 0x80 lsls r1, 17 ands r0, r1 ldr r3, _0802CF90 @ =gBattleStruct cmp r0, 0 beq _0802CF60 ldr r0, [r3] adds r0, 0x7F ldrb r1, [r0] movs r2, 0x80 orrs r1, r2 strb r1, [r0] _0802CF60: ldr r0, [r3] adds r0, 0x7F ldrb r2, [r0] movs r0, 0 movs r1, 0 bl EmitBattleAnimation ldrb r0, [r4] bl MarkBufferBankForExecution ldr r1, _0802CF94 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _0802CF84: .4byte gActiveBattler _0802CF88: .4byte gBattleScripting _0802CF8C: .4byte gBattleMons _0802CF90: .4byte gBattleStruct _0802CF94: .4byte gUnknown_2023D74 thumb_func_end atkE6_docastformchangeanimation thumb_func_start atkE7_trycastformdatachange atkE7_trycastformdatachange: @ 802CF98 push {r4,lr} ldr r1, _0802CFC8 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] ldr r0, _0802CFCC @ =gBattleScripting ldrb r0, [r0, 0x17] bl sub_8019DAC lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 beq _0802CFC2 ldr r0, _0802CFD0 @ =gUnknown_81D92F8 bl BattleScriptPushCursorAndCallback ldr r0, _0802CFD4 @ =gBattleStruct ldr r0, [r0] adds r0, 0x7F subs r1, r4, 0x1 strb r1, [r0] _0802CFC2: pop {r4} pop {r0} bx r0 .align 2, 0 _0802CFC8: .4byte gUnknown_2023D74 _0802CFCC: .4byte gBattleScripting _0802CFD0: .4byte gUnknown_81D92F8 _0802CFD4: .4byte gBattleStruct thumb_func_end atkE7_trycastformdatachange thumb_func_start atkE8_settypebasedhalvers atkE8_settypebasedhalvers: @ 802CFD8 push {r4,lr} movs r4, 0 ldr r2, _0802D014 @ =gBattleMoves ldr r0, _0802D018 @ =gCurrentMove ldrh r1, [r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 ldrb r0, [r0] cmp r0, 0xC9 bne _0802D028 ldr r1, _0802D01C @ =gStatuses3 ldr r0, _0802D020 @ =sBattler_AI ldrb r0, [r0] lsls r0, 2 adds r2, r0, r1 ldr r1, [r2] movs r3, 0x80 lsls r3, 9 adds r0, r1, 0 ands r0, r3 cmp r0, 0 bne _0802D04C orrs r1, r3 str r1, [r2] ldr r0, _0802D024 @ =gUnknown_2023E82 strb r4, [r0, 0x5] b _0802D050 .align 2, 0 _0802D014: .4byte gBattleMoves _0802D018: .4byte gCurrentMove _0802D01C: .4byte gStatuses3 _0802D020: .4byte sBattler_AI _0802D024: .4byte gUnknown_2023E82 _0802D028: ldr r1, _0802D05C @ =gStatuses3 ldr r0, _0802D060 @ =sBattler_AI ldrb r0, [r0] lsls r0, 2 adds r2, r0, r1 ldr r1, [r2] movs r3, 0x80 lsls r3, 10 adds r0, r1, 0 ands r0, r3 cmp r0, 0 bne _0802D04C orrs r1, r3 str r1, [r2] ldr r1, _0802D064 @ =gUnknown_2023E82 movs r0, 0x1 strb r0, [r1, 0x5] movs r4, 0x1 _0802D04C: cmp r4, 0 beq _0802D06C _0802D050: ldr r1, _0802D068 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802D086 .align 2, 0 _0802D05C: .4byte gStatuses3 _0802D060: .4byte sBattler_AI _0802D064: .4byte gUnknown_2023E82 _0802D068: .4byte gUnknown_2023D74 _0802D06C: ldr r3, _0802D08C @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802D086: pop {r4} pop {r0} bx r0 .align 2, 0 _0802D08C: .4byte gUnknown_2023D74 thumb_func_end atkE8_settypebasedhalvers thumb_func_start atkE9_setweatherballtype atkE9_setweatherballtype: @ 802D090 push {lr} sub sp, 0x4 movs r0, 0 str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0xD movs r3, 0 bl AbilityBattleEffects lsls r0, 24 lsrs r0, 24 cmp r0, 0 bne _0802D130 str r0, [sp] movs r0, 0x13 movs r1, 0 movs r2, 0x4D movs r3, 0 bl AbilityBattleEffects lsls r0, 24 cmp r0, 0 bne _0802D130 ldr r2, _0802D0E0 @ =gBattleWeather ldrb r0, [r2] cmp r0, 0 beq _0802D0CE ldr r1, _0802D0E4 @ =gBattleScripting movs r0, 0x2 strb r0, [r1, 0xE] _0802D0CE: ldrh r1, [r2] movs r0, 0x7 ands r0, r1 cmp r0, 0 beq _0802D0EC ldr r0, _0802D0E8 @ =gBattleStruct ldr r1, [r0] movs r0, 0x8B b _0802D12E .align 2, 0 _0802D0E0: .4byte gBattleWeather _0802D0E4: .4byte gBattleScripting _0802D0E8: .4byte gBattleStruct _0802D0EC: movs r0, 0x18 ands r0, r1 cmp r0, 0 beq _0802D100 ldr r0, _0802D0FC @ =gBattleStruct ldr r1, [r0] movs r0, 0x85 b _0802D12E .align 2, 0 _0802D0FC: .4byte gBattleStruct _0802D100: movs r0, 0x60 ands r0, r1 cmp r0, 0 beq _0802D114 ldr r0, _0802D110 @ =gBattleStruct ldr r1, [r0] movs r0, 0x8A b _0802D12E .align 2, 0 _0802D110: .4byte gBattleStruct _0802D114: movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0802D128 ldr r0, _0802D124 @ =gBattleStruct ldr r1, [r0] movs r0, 0x8F b _0802D12E .align 2, 0 _0802D124: .4byte gBattleStruct _0802D128: ldr r0, _0802D140 @ =gBattleStruct ldr r1, [r0] movs r0, 0x80 _0802D12E: strb r0, [r1, 0x13] _0802D130: ldr r1, _0802D144 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] add sp, 0x4 pop {r0} bx r0 .align 2, 0 _0802D140: .4byte gBattleStruct _0802D144: .4byte gUnknown_2023D74 thumb_func_end atkE9_setweatherballtype thumb_func_start atkEA_tryrecycleitem atkEA_tryrecycleitem: @ 802D148 push {r4-r7,lr} sub sp, 0x4 ldr r7, _0802D1B0 @ =gActiveBattler ldr r0, _0802D1B4 @ =sBattler_AI ldrb r0, [r0] strb r0, [r7] ldr r1, _0802D1B8 @ =gBattleStruct ldrb r2, [r7] lsls r0, r2, 1 adds r0, 0xB8 ldr r1, [r1] adds r6, r1, r0 ldrh r5, [r6] cmp r5, 0 beq _0802D1C8 ldr r4, _0802D1BC @ =gBattleMons movs r3, 0x58 adds r0, r2, 0 muls r0, r3 adds r0, r4 ldrh r0, [r0, 0x2E] cmp r0, 0 bne _0802D1C8 ldr r1, _0802D1C0 @ =gUnknown_2023D68 strh r5, [r1] strh r0, [r6] ldrb r0, [r7] muls r0, r3 adds r0, r4 ldrh r1, [r1] strh r1, [r0, 0x2E] ldrb r0, [r7] muls r0, r3 adds r1, r4, 0 adds r1, 0x2E adds r0, r1 str r0, [sp] movs r0, 0 movs r1, 0x2 movs r2, 0 movs r3, 0x2 bl EmitSetMonData ldrb r0, [r7] bl MarkBufferBankForExecution ldr r1, _0802D1C4 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802D1E2 .align 2, 0 _0802D1B0: .4byte gActiveBattler _0802D1B4: .4byte sBattler_AI _0802D1B8: .4byte gBattleStruct _0802D1BC: .4byte gBattleMons _0802D1C0: .4byte gUnknown_2023D68 _0802D1C4: .4byte gUnknown_2023D74 _0802D1C8: ldr r3, _0802D1EC @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802D1E2: add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802D1EC: .4byte gUnknown_2023D74 thumb_func_end atkEA_tryrecycleitem thumb_func_start atkEB_settypetoterrain atkEB_settypetoterrain: @ 802D1F0 push {r4-r7,lr} mov r7, r8 push {r7} ldr r0, _0802D260 @ =gBattleMons mov r8, r0 ldr r7, _0802D264 @ =sBattler_AI ldrb r0, [r7] movs r6, 0x58 muls r0, r6 mov r1, r8 adds r3, r0, r1 movs r0, 0x21 adds r0, r3 mov r12, r0 ldr r5, _0802D268 @ =gUnknown_8250888 ldr r4, _0802D26C @ =gUnknown_2022B50 ldrb r0, [r4] adds r0, r5 ldrb r2, [r0] mov r1, r12 ldrb r0, [r1] adds r1, r2, 0 cmp r0, r1 beq _0802D278 adds r0, r3, 0 adds r0, 0x22 ldrb r0, [r0] cmp r0, r1 beq _0802D278 mov r0, r12 strb r2, [r0] ldrb r0, [r7] adds r1, r0, 0 muls r1, r6 add r1, r8 ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] adds r1, 0x22 strb r0, [r1] ldr r1, _0802D270 @ =gBattleTextBuff1 movs r0, 0xFD strb r0, [r1] movs r0, 0x3 strb r0, [r1, 0x1] ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] strb r0, [r1, 0x2] movs r0, 0xFF strb r0, [r1, 0x3] ldr r1, _0802D274 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802D292 .align 2, 0 _0802D260: .4byte gBattleMons _0802D264: .4byte sBattler_AI _0802D268: .4byte gUnknown_8250888 _0802D26C: .4byte gUnknown_2022B50 _0802D270: .4byte gBattleTextBuff1 _0802D274: .4byte gUnknown_2023D74 _0802D278: ldr r3, _0802D29C @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802D292: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802D29C: .4byte gUnknown_2023D74 thumb_func_end atkEB_settypetoterrain thumb_func_start atkEC_pursuitrelated atkEC_pursuitrelated: @ 802D2A0 push {r4-r6,lr} ldr r5, _0802D314 @ =sBattler_AI ldrb r0, [r5] bl GetBattlerPosition movs r1, 0x2 eors r0, r1 lsls r0, 24 lsrs r0, 24 bl GetBattlerAtPosition ldr r4, _0802D318 @ =gActiveBattler strb r0, [r4] ldr r0, _0802D31C @ =gBattleTypeFlags ldr r0, [r0] movs r6, 0x1 ands r0, r6 cmp r0, 0 beq _0802D340 ldr r0, _0802D320 @ =gAbsentBattlerFlags ldrb r1, [r0] ldr r2, _0802D324 @ =gBitTable ldrb r3, [r4] lsls r0, r3, 2 adds r0, r2 ldr r0, [r0] ands r1, r0 cmp r1, 0 bne _0802D340 ldr r0, _0802D328 @ =gUnknown_2023D7C adds r0, r3, r0 ldrb r0, [r0] cmp r0, 0 bne _0802D340 ldr r1, _0802D32C @ =gUnknown_2023DC4 lsls r0, r3, 1 adds r0, r1 ldrh r2, [r0] cmp r2, 0xE4 bne _0802D340 ldr r0, _0802D330 @ =gUnknown_2023BDA adds r0, r3, r0 movs r1, 0xB strb r1, [r0] ldr r0, _0802D334 @ =gCurrentMove strh r2, [r0] ldr r1, _0802D338 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] ldr r0, _0802D33C @ =gBattleScripting strb r6, [r0, 0x18] ldrb r1, [r5] adds r0, 0x20 strb r1, [r0] ldrb r0, [r4] strb r0, [r5] b _0802D35A .align 2, 0 _0802D314: .4byte sBattler_AI _0802D318: .4byte gActiveBattler _0802D31C: .4byte gBattleTypeFlags _0802D320: .4byte gAbsentBattlerFlags _0802D324: .4byte gBitTable _0802D328: .4byte gUnknown_2023D7C _0802D32C: .4byte gUnknown_2023DC4 _0802D330: .4byte gUnknown_2023BDA _0802D334: .4byte gCurrentMove _0802D338: .4byte gUnknown_2023D74 _0802D33C: .4byte gBattleScripting _0802D340: ldr r3, _0802D360 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802D35A: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0802D360: .4byte gUnknown_2023D74 thumb_func_end atkEC_pursuitrelated thumb_func_start atkEF_snatchsetbanks atkEF_snatchsetbanks: @ 802D364 push {r4,lr} ldr r1, _0802D388 @ =gUnknown_2023D6E ldr r3, _0802D38C @ =sBattler_AI ldrb r0, [r3] strb r0, [r1] ldr r2, _0802D390 @ =gBattlerTarget lsls r0, 24 lsrs r0, 24 adds r4, r1, 0 ldrb r1, [r2] cmp r0, r1 bne _0802D398 ldr r1, _0802D394 @ =gBattleScripting ldrb r0, [r1, 0x17] strb r0, [r2] strb r0, [r3] b _0802D39E .align 2, 0 _0802D388: .4byte gUnknown_2023D6E _0802D38C: .4byte sBattler_AI _0802D390: .4byte gBattlerTarget _0802D394: .4byte gBattleScripting _0802D398: ldr r1, _0802D3B0 @ =gBattleScripting ldrb r0, [r1, 0x17] strb r0, [r2] _0802D39E: ldrb r0, [r4] strb r0, [r1, 0x17] ldr r1, _0802D3B4 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _0802D3B0: .4byte gBattleScripting _0802D3B4: .4byte gUnknown_2023D74 thumb_func_end atkEF_snatchsetbanks thumb_func_start atkEE_removelightscreenreflect atkEE_removelightscreenreflect: @ 802D3B8 push {r4,lr} ldr r0, _0802D400 @ =sBattler_AI ldrb r0, [r0] bl GetBattlerSide movs r1, 0x1 eors r0, r1 lsls r0, 24 lsrs r0, 24 ldr r1, _0802D404 @ =gSideTimers lsls r3, r0, 1 adds r0, r3, r0 lsls r0, 2 adds r4, r0, r1 ldrb r0, [r4] cmp r0, 0 bne _0802D3E0 ldrb r1, [r4, 0x2] cmp r1, 0 beq _0802D418 _0802D3E0: ldr r2, _0802D408 @ =gSideAffecting adds r2, r3, r2 ldrh r1, [r2] ldr r0, _0802D40C @ =0x0000fffe ands r0, r1 movs r3, 0 ldr r1, _0802D410 @ =0x0000fffd ands r0, r1 strh r0, [r2] strb r3, [r4] strb r3, [r4, 0x2] ldr r1, _0802D414 @ =gBattleScripting movs r0, 0x1 strb r0, [r1, 0x18] strb r0, [r1, 0x19] b _0802D41E .align 2, 0 _0802D400: .4byte sBattler_AI _0802D404: .4byte gSideTimers _0802D408: .4byte gSideAffecting _0802D40C: .4byte 0x0000fffe _0802D410: .4byte 0x0000fffd _0802D414: .4byte gBattleScripting _0802D418: ldr r0, _0802D42C @ =gBattleScripting strb r1, [r0, 0x18] strb r1, [r0, 0x19] _0802D41E: ldr r1, _0802D430 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _0802D42C: .4byte gBattleScripting _0802D430: .4byte gUnknown_2023D74 thumb_func_end atkEE_removelightscreenreflect thumb_func_start sub_802D434 sub_802D434: @ 802D434 push {r4-r6,lr} movs r4, 0 ldr r0, _0802D474 @ =gUnknown_2023BC8 ldr r0, [r0] cmp r0, 0 beq _0802D442 b _0802D7EE _0802D442: ldr r5, _0802D478 @ =gActiveBattler ldr r0, _0802D47C @ =sBattler_AI ldrb r0, [r0] strb r0, [r5] ldr r6, _0802D480 @ =gBattlerTarget movs r1, 0x1 eors r0, r1 strb r0, [r6] ldr r0, _0802D484 @ =gBattleTypeFlags ldr r1, [r0] movs r0, 0x80 lsls r0, 8 ands r0, r1 cmp r0, 0 beq _0802D490 movs r0, 0 movs r1, 0x6 bl EmitBallThrowAnim ldrb r0, [r5] bl MarkBufferBankForExecution ldr r1, _0802D488 @ =gUnknown_2023D74 ldr r0, _0802D48C @ =gUnknown_81D9AD1 b _0802D7EC .align 2, 0 _0802D474: .4byte gUnknown_2023BC8 _0802D478: .4byte gActiveBattler _0802D47C: .4byte sBattler_AI _0802D480: .4byte gBattlerTarget _0802D484: .4byte gBattleTypeFlags _0802D488: .4byte gUnknown_2023D74 _0802D48C: .4byte gUnknown_81D9AD1 _0802D490: movs r0, 0x8 ands r0, r1 cmp r0, 0 beq _0802D4B4 movs r0, 0 movs r1, 0x5 bl EmitBallThrowAnim ldrb r0, [r5] bl MarkBufferBankForExecution ldr r1, _0802D4AC @ =gUnknown_2023D74 ldr r0, _0802D4B0 @ =gUnknown_81D9AC1 b _0802D7EC .align 2, 0 _0802D4AC: .4byte gUnknown_2023D74 _0802D4B0: .4byte gUnknown_81D9AC1 _0802D4B4: movs r0, 0x81 lsls r0, 9 ands r1, r0 cmp r1, 0 beq _0802D4DC movs r0, 0 movs r1, 0x4 bl EmitBallThrowAnim ldrb r0, [r5] bl MarkBufferBankForExecution ldr r1, _0802D4D4 @ =gUnknown_2023D74 ldr r0, _0802D4D8 @ =gUnknown_81D9A88 b _0802D7EC .align 2, 0 _0802D4D4: .4byte gUnknown_2023D74 _0802D4D8: .4byte gUnknown_81D9A88 _0802D4DC: ldr r0, _0802D500 @ =gUnknown_2023D68 ldrh r0, [r0] cmp r0, 0x5 bne _0802D508 ldr r0, _0802D504 @ =gBattleStruct ldr r0, [r0] adds r0, 0x7C ldrb r0, [r0] lsls r1, r0, 2 adds r1, r0 lsls r0, r1, 8 subs r0, r1 movs r1, 0x64 bl __divsi3 lsls r0, 24 lsrs r5, r0, 24 b _0802D520 .align 2, 0 _0802D500: .4byte gUnknown_2023D68 _0802D504: .4byte gBattleStruct _0802D508: ldr r3, _0802D53C @ =gBaseStats ldr r2, _0802D540 @ =gBattleMons ldrb r1, [r6] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r1, [r0] lsls r0, r1, 3 subs r0, r1 lsls r0, 2 adds r0, r3 ldrb r5, [r0, 0x8] _0802D520: ldr r2, _0802D544 @ =gUnknown_2023D68 ldrh r0, [r2] cmp r0, 0x5 bhi _0802D52A b _0802D620 _0802D52A: subs r0, 0x6 cmp r0, 0x6 bls _0802D532 b _0802D62A _0802D532: lsls r0, 2 ldr r1, _0802D548 @ =_0802D54C adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0802D53C: .4byte gBaseStats _0802D540: .4byte gBattleMons _0802D544: .4byte gUnknown_2023D68 _0802D548: .4byte _0802D54C .align 2, 0 _0802D54C: .4byte _0802D568 .4byte _0802D598 .4byte _0802D5AA .4byte _0802D5D8 .4byte _0802D608 .4byte _0802D5CA .4byte _0802D5CA _0802D568: ldr r2, _0802D590 @ =gBattleMons ldr r0, _0802D594 @ =gBattlerTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r1, r0, 0 adds r1, 0x21 ldrb r1, [r1] cmp r1, 0xB beq _0802D5FC adds r0, 0x22 ldrb r0, [r0] cmp r0, 0xB beq _0802D5FC cmp r1, 0x6 beq _0802D5FC cmp r0, 0x6 beq _0802D5FC b _0802D5CA .align 2, 0 _0802D590: .4byte gBattleMons _0802D594: .4byte gBattlerTarget _0802D598: bl sav1_map_get_light_level lsls r0, 24 lsrs r0, 24 movs r4, 0xA cmp r0, 0x5 bne _0802D62A movs r4, 0x23 b _0802D62A _0802D5AA: ldr r2, _0802D5D0 @ =gBattleMons ldr r0, _0802D5D4 @ =gBattlerTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 adds r0, 0x2A ldrb r1, [r0] cmp r1, 0x27 bhi _0802D5CA movs r0, 0x28 subs r0, r1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x9 bhi _0802D62A _0802D5CA: movs r4, 0xA b _0802D62A .align 2, 0 _0802D5D0: .4byte gBattleMons _0802D5D4: .4byte gBattlerTarget _0802D5D8: ldr r2, _0802D600 @ =gBattleMons ldr r0, _0802D604 @ =gBattlerTarget ldrb r1, [r0] movs r0, 0x58 muls r0, r1 adds r0, r2 ldrh r0, [r0] bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 movs r1, 0x1 bl GetSetPokedexFlag lsls r0, 24 movs r4, 0xA cmp r0, 0 beq _0802D62A _0802D5FC: movs r4, 0x1E b _0802D62A .align 2, 0 _0802D600: .4byte gBattleMons _0802D604: .4byte gBattlerTarget _0802D608: ldr r0, _0802D61C @ =gBattleResults ldrb r0, [r0, 0x13] adds r0, 0xA lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x28 bls _0802D62A movs r4, 0x28 b _0802D62A .align 2, 0 _0802D61C: .4byte gBattleResults _0802D620: ldr r1, _0802D694 @ =gUnknown_8250892 ldrh r0, [r2] subs r0, 0x2 adds r0, r1 ldrb r4, [r0] _0802D62A: adds r0, r5, 0 muls r0, r4 movs r1, 0xA bl __divsi3 ldr r5, _0802D698 @ =gBattleMons ldr r1, _0802D69C @ =gBattlerTarget ldrb r2, [r1] movs r1, 0x58 adds r4, r2, 0 muls r4, r1 adds r3, r4, r5 ldrh r2, [r3, 0x2C] lsls r1, r2, 1 adds r1, r2 ldrh r2, [r3, 0x28] lsls r2, 1 subs r2, r1, r2 muls r0, r2 bl __divsi3 adds r6, r0, 0 adds r5, 0x4C adds r4, r5 ldr r4, [r4] movs r0, 0x27 ands r0, r4 cmp r0, 0 beq _0802D666 lsls r6, 1 _0802D666: movs r0, 0xD8 ands r4, r0 cmp r4, 0 beq _0802D67A lsls r0, r6, 4 subs r0, r6 movs r1, 0xA bl __udivsi3 adds r6, r0, 0 _0802D67A: ldr r1, _0802D6A0 @ =gUnknown_2023D68 ldrh r0, [r1] cmp r0, 0x5 beq _0802D6BC cmp r0, 0x1 bne _0802D6A8 ldr r0, _0802D6A4 @ =gBattleResults ldrb r1, [r0, 0x5] movs r2, 0x2 orrs r1, r2 strb r1, [r0, 0x5] b _0802D6BC .align 2, 0 _0802D694: .4byte gUnknown_8250892 _0802D698: .4byte gBattleMons _0802D69C: .4byte gBattlerTarget _0802D6A0: .4byte gUnknown_2023D68 _0802D6A4: .4byte gBattleResults _0802D6A8: ldr r0, _0802D700 @ =gBattleResults ldrh r1, [r1] adds r0, r1 adds r1, r0, 0 adds r1, 0x34 ldrb r0, [r1] cmp r0, 0xFE bhi _0802D6BC adds r0, 0x1 strb r0, [r1] _0802D6BC: cmp r6, 0xFE bls _0802D720 movs r0, 0 movs r1, 0x4 bl EmitBallThrowAnim ldr r0, _0802D704 @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution ldr r1, _0802D708 @ =gUnknown_2023D74 ldr r0, _0802D70C @ =gUnknown_81D9A42 str r0, [r1] ldr r1, _0802D710 @ =gBattlerPartyIndexes ldr r0, _0802D714 @ =gBattlerTarget ldrb r0, [r0] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _0802D718 @ =gEnemyParty adds r0, r1 ldr r2, _0802D71C @ =gUnknown_2023D68 movs r1, 0x26 bl SetMonData bl CalculatePlayerPartyCount lsls r0, 24 lsrs r0, 24 cmp r0, 0x6 beq _0802D7AE b _0802D7D8 .align 2, 0 _0802D700: .4byte gBattleResults _0802D704: .4byte gActiveBattler _0802D708: .4byte gUnknown_2023D74 _0802D70C: .4byte gUnknown_81D9A42 _0802D710: .4byte gBattlerPartyIndexes _0802D714: .4byte gBattlerTarget _0802D718: .4byte gEnemyParty _0802D71C: .4byte gUnknown_2023D68 _0802D720: movs r0, 0xFF lsls r0, 16 adds r1, r6, 0 bl __udivsi3 bl Sqrt lsls r0, 16 lsrs r0, 16 bl Sqrt lsls r0, 16 lsrs r6, r0, 16 ldr r0, _0802D748 @ =0x000ffff0 adds r1, r6, 0 bl __udivsi3 adds r6, r0, 0 movs r4, 0 b _0802D752 .align 2, 0 _0802D748: .4byte 0x000ffff0 _0802D74C: adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 _0802D752: cmp r4, 0x3 bhi _0802D762 bl Random lsls r0, 16 lsrs r0, 16 cmp r0, r6 bcc _0802D74C _0802D762: ldr r5, _0802D7B8 @ =gUnknown_2023D68 ldrh r0, [r5] cmp r0, 0x1 bne _0802D76C movs r4, 0x4 _0802D76C: movs r0, 0 adds r1, r4, 0 bl EmitBallThrowAnim ldr r0, _0802D7BC @ =gActiveBattler ldrb r0, [r0] bl MarkBufferBankForExecution cmp r4, 0x4 bne _0802D7E4 ldr r1, _0802D7C0 @ =gUnknown_2023D74 ldr r0, _0802D7C4 @ =gUnknown_81D9A42 str r0, [r1] ldr r1, _0802D7C8 @ =gBattlerPartyIndexes ldr r0, _0802D7CC @ =gBattlerTarget ldrb r0, [r0] lsls r0, 1 adds r0, r1 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _0802D7D0 @ =gEnemyParty adds r0, r1 movs r1, 0x26 adds r2, r5, 0 bl SetMonData bl CalculatePlayerPartyCount lsls r0, 24 lsrs r0, 24 cmp r0, 0x6 bne _0802D7D8 _0802D7AE: ldr r1, _0802D7D4 @ =gUnknown_2023E82 movs r0, 0 strb r0, [r1, 0x5] b _0802D7EE .align 2, 0 _0802D7B8: .4byte gUnknown_2023D68 _0802D7BC: .4byte gActiveBattler _0802D7C0: .4byte gUnknown_2023D74 _0802D7C4: .4byte gUnknown_81D9A42 _0802D7C8: .4byte gBattlerPartyIndexes _0802D7CC: .4byte gBattlerTarget _0802D7D0: .4byte gEnemyParty _0802D7D4: .4byte gUnknown_2023E82 _0802D7D8: ldr r1, _0802D7E0 @ =gUnknown_2023E82 movs r0, 0x1 strb r0, [r1, 0x5] b _0802D7EE .align 2, 0 _0802D7E0: .4byte gUnknown_2023E82 _0802D7E4: ldr r0, _0802D7F4 @ =gUnknown_2023E82 strb r4, [r0, 0x5] ldr r1, _0802D7F8 @ =gUnknown_2023D74 ldr r0, _0802D7FC @ =gUnknown_81D9A93 _0802D7EC: str r0, [r1] _0802D7EE: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0802D7F4: .4byte gUnknown_2023E82 _0802D7F8: .4byte gUnknown_2023D74 _0802D7FC: .4byte gUnknown_81D9A93 thumb_func_end sub_802D434 thumb_func_start sub_802D800 sub_802D800: @ 802D800 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} ldr r0, _0802D870 @ =gBattlerPartyIndexes mov r9, r0 ldr r5, _0802D874 @ =sBattler_AI ldrb r0, [r5] movs r6, 0x1 eors r0, r6 lsls r0, 1 add r0, r9 ldrh r0, [r0] movs r7, 0x64 muls r0, r7 ldr r1, _0802D878 @ =gEnemyParty mov r8, r1 add r0, r8 bl GiveMonToPlayer lsls r0, 24 cmp r0, 0 beq _0802D8EA bl sub_80CC7B4 lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 bne _0802D88C ldr r0, _0802D87C @ =gUnknown_2023E82 strb r1, [r0, 0x5] ldr r4, _0802D880 @ =gStringVar1 ldr r0, _0802D884 @ =0x00004037 bl VarGet lsls r0, 24 lsrs r0, 24 bl GetBoxNamePtr adds r1, r0, 0 adds r0, r4, 0 bl StringCopy ldrb r0, [r5] eors r0, r6 lsls r0, 1 add r0, r9 ldrh r0, [r0] muls r0, r7 add r0, r8 ldr r2, _0802D888 @ =gStringVar2 movs r1, 0x2 bl GetMonData b _0802D8D6 .align 2, 0 _0802D870: .4byte gBattlerPartyIndexes _0802D874: .4byte sBattler_AI _0802D878: .4byte gEnemyParty _0802D87C: .4byte gUnknown_2023E82 _0802D880: .4byte gStringVar1 _0802D884: .4byte 0x00004037 _0802D888: .4byte gStringVar2 _0802D88C: ldr r4, _0802D92C @ =gStringVar1 ldr r0, _0802D930 @ =0x00004037 bl VarGet lsls r0, 24 lsrs r0, 24 bl GetBoxNamePtr adds r1, r0, 0 adds r0, r4, 0 bl StringCopy ldrb r0, [r5] eors r0, r6 lsls r0, 1 add r0, r9 ldrh r0, [r0] muls r0, r7 add r0, r8 ldr r2, _0802D934 @ =gStringVar2 movs r1, 0x2 bl GetMonData ldr r4, _0802D938 @ =gStringVar3 bl get_unknown_box_id lsls r0, 24 lsrs r0, 24 bl GetBoxNamePtr adds r1, r0, 0 adds r0, r4, 0 bl StringCopy ldr r1, _0802D93C @ =gUnknown_2023E82 movs r0, 0x2 strb r0, [r1, 0x5] _0802D8D6: ldr r0, _0802D940 @ =0x00000834 bl FlagGet lsls r0, 24 cmp r0, 0 beq _0802D8EA ldr r1, _0802D93C @ =gUnknown_2023E82 ldrb r0, [r1, 0x5] adds r0, 0x1 strb r0, [r1, 0x5] _0802D8EA: ldr r2, _0802D944 @ =gBattleResults ldr r3, _0802D948 @ =gBattleMons ldr r0, _0802D94C @ =sBattler_AI ldrb r0, [r0] movs r1, 0x1 eors r1, r0 movs r0, 0x58 muls r0, r1 adds r0, r3 ldrh r0, [r0] strh r0, [r2, 0x28] ldr r0, _0802D950 @ =gBattlerPartyIndexes lsls r1, 1 adds r1, r0 ldrh r1, [r1] movs r0, 0x64 muls r0, r1 ldr r1, _0802D954 @ =gEnemyParty adds r0, r1 adds r2, 0x2A movs r1, 0x2 bl GetMonData ldr r1, _0802D958 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802D92C: .4byte gStringVar1 _0802D930: .4byte 0x00004037 _0802D934: .4byte gStringVar2 _0802D938: .4byte gStringVar3 _0802D93C: .4byte gUnknown_2023E82 _0802D940: .4byte 0x00000834 _0802D944: .4byte gBattleResults _0802D948: .4byte gBattleMons _0802D94C: .4byte sBattler_AI _0802D950: .4byte gBattlerPartyIndexes _0802D954: .4byte gEnemyParty _0802D958: .4byte gUnknown_2023D74 thumb_func_end sub_802D800 thumb_func_start sub_802D95C sub_802D95C: @ 802D95C push {r4,r5,lr} ldr r4, _0802D9AC @ =gEnemyParty adds r0, r4, 0 movs r1, 0xB movs r2, 0 bl GetMonData lsls r0, 16 lsrs r5, r0, 16 adds r0, r4, 0 movs r1, 0 movs r2, 0 bl GetMonData adds r4, r0, 0 adds r0, r5, 0 bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 movs r1, 0x1 bl GetSetPokedexFlag lsls r0, 24 cmp r0, 0 beq _0802D9B4 ldr r3, _0802D9B0 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] b _0802D9CE .align 2, 0 _0802D9AC: .4byte gEnemyParty _0802D9B0: .4byte gUnknown_2023D74 _0802D9B4: adds r0, r5, 0 bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 movs r1, 0x3 adds r2, r4, 0 bl HandleSetPokedexFlag ldr r1, _0802D9D4 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] _0802D9CE: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0802D9D4: .4byte gUnknown_2023D74 thumb_func_end sub_802D95C thumb_func_start sub_802D9D8 sub_802D9D8: @ 802D9D8 push {r4,r5,lr} sub sp, 0x18 ldr r0, _0802DA00 @ =gEnemyParty movs r1, 0xB movs r2, 0 bl GetMonData lsls r0, 16 lsrs r5, r0, 16 ldr r0, _0802DA04 @ =gUnknown_2023E82 ldrb r0, [r0] cmp r0, 0x5 bls _0802D9F4 b _0802DB6C _0802D9F4: lsls r0, 2 ldr r1, _0802DA08 @ =_0802DA0C adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0802DA00: .4byte gEnemyParty _0802DA04: .4byte gUnknown_2023E82 _0802DA08: .4byte _0802DA0C .align 2, 0 _0802DA0C: .4byte _0802DA24 .4byte _0802DA3C .4byte _0802DA64 .4byte _0802DAC8 .4byte _0802DAE0 .4byte _0802DB58 _0802DA24: movs r0, 0x1 negs r0, r0 ldr r1, _0802DA38 @ =0x00007fff str r1, [sp] movs r1, 0 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade b _0802DB34 .align 2, 0 _0802DA38: .4byte 0x00007fff _0802DA3C: ldr r0, _0802DA5C @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0802DA4A b _0802DB6C _0802DA4A: bl FreeAllWindowBuffers adds r0, r5, 0 bl sub_8106B60 ldr r1, _0802DA60 @ =gUnknown_2023E82 strb r0, [r1, 0x1] b _0802DB36 .align 2, 0 _0802DA5C: .4byte gPaletteFade _0802DA60: .4byte gUnknown_2023E82 _0802DA64: ldr r0, _0802DAAC @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0802DA72 b _0802DB6C _0802DA72: ldr r0, _0802DAB0 @ =gMain ldr r1, [r0, 0x4] ldr r0, _0802DAB4 @ =sub_8011100 cmp r1, r0 bne _0802DB6C ldr r2, _0802DAB8 @ =gTasks ldr r4, _0802DABC @ =gUnknown_2023E82 ldrb r1, [r4, 0x1] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r2 ldrb r0, [r0, 0x4] cmp r0, 0 bne _0802DB6C str r0, [sp, 0x10] movs r1, 0xC0 lsls r1, 19 ldr r2, _0802DAC0 @ =0x05006000 add r0, sp, 0x10 bl CpuSet ldr r0, _0802DAC4 @ =sub_80116F4 bl SetVBlankCallback ldrb r0, [r4] adds r0, 0x1 strb r0, [r4] b _0802DB6C .align 2, 0 _0802DAAC: .4byte gPaletteFade _0802DAB0: .4byte gMain _0802DAB4: .4byte sub_8011100 _0802DAB8: .4byte gTasks _0802DABC: .4byte gUnknown_2023E82 _0802DAC0: .4byte 0x05006000 _0802DAC4: .4byte sub_80116F4 _0802DAC8: bl sub_800F34C bl LoadBattleTextboxAndBackground ldr r1, _0802DADC @ =gBattle_BG3_X movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 strh r0, [r1] b _0802DB34 .align 2, 0 _0802DADC: .4byte gBattle_BG3_X _0802DAE0: bl IsDma3ManagerBusyWithBgCopy lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 bne _0802DB6C ldr r0, _0802DB40 @ =gBattleMons adds r1, r0, 0 adds r1, 0xAC ldr r1, [r1] adds r0, 0xA0 ldr r2, [r0] movs r0, 0x78 str r0, [sp] movs r0, 0x40 str r0, [sp, 0x4] str r4, [sp, 0x8] ldr r0, _0802DB44 @ =0x0000ffff str r0, [sp, 0xC] adds r0, r5, 0 movs r3, 0x1 bl CreateMonPicSprite_HandleDeoxys str r4, [sp, 0x14] add r0, sp, 0x14 ldr r1, _0802DB48 @ =gPlttBufferFaded ldr r2, _0802DB4C @ =0x05000080 bl CpuSet ldr r0, _0802DB50 @ =0x0001ffff str r4, [sp] movs r1, 0 movs r2, 0x10 movs r3, 0 bl BeginNormalPaletteFade movs r0, 0 bl ShowBg movs r0, 0x3 bl ShowBg _0802DB34: ldr r1, _0802DB54 @ =gUnknown_2023E82 _0802DB36: ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] b _0802DB6C .align 2, 0 _0802DB40: .4byte gBattleMons _0802DB44: .4byte 0x0000ffff _0802DB48: .4byte gPlttBufferFaded _0802DB4C: .4byte 0x05000080 _0802DB50: .4byte 0x0001ffff _0802DB54: .4byte gUnknown_2023E82 _0802DB58: ldr r0, _0802DB74 @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0802DB6C ldr r1, _0802DB78 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] _0802DB6C: add sp, 0x18 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0802DB74: .4byte gPaletteFade _0802DB78: .4byte gUnknown_2023D74 thumb_func_end sub_802D9D8 thumb_func_start sub_802DB7C sub_802DB7C: @ 802DB7C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x20 ldr r4, [sp, 0x40] lsls r0, 24 lsrs r0, 24 mov r8, r0 lsls r1, 24 lsrs r1, 24 str r1, [sp, 0x10] lsls r2, 24 lsrs r2, 24 str r2, [sp, 0x1C] lsls r3, 24 lsrs r3, 24 str r3, [sp, 0x14] lsls r4, 24 lsrs r4, 24 mov r10, r4 movs r1, 0 add r0, sp, 0xC strh r1, [r0] ldr r6, [sp, 0x10] cmp r6, r3 ble _0802DBB6 b _0802DCA2 _0802DBB6: mov r4, r8 adds r0, r6, 0x1 str r0, [sp, 0x18] ldr r2, [sp, 0x1C] cmp r4, r2 bgt _0802DC98 add r5, sp, 0xC lsls r7, r6, 24 mov r9, r7 _0802DBC8: ldr r0, [sp, 0x10] cmp r6, r0 bne _0802DBF4 cmp r4, r8 bne _0802DBDC ldr r0, _0802DBD8 @ =0x00001022 b _0802DC3E .align 2, 0 _0802DBD8: .4byte 0x00001022 _0802DBDC: ldr r2, [sp, 0x1C] cmp r4, r2 bne _0802DBEC ldr r0, _0802DBE8 @ =0x00001024 b _0802DC3E .align 2, 0 _0802DBE8: .4byte 0x00001024 _0802DBEC: ldr r0, _0802DBF0 @ =0x00001023 b _0802DC3E .align 2, 0 _0802DBF0: .4byte 0x00001023 _0802DBF4: ldr r7, [sp, 0x14] cmp r6, r7 bne _0802DC20 cmp r4, r8 bne _0802DC08 ldr r0, _0802DC04 @ =0x00001028 b _0802DC3E .align 2, 0 _0802DC04: .4byte 0x00001028 _0802DC08: ldr r0, [sp, 0x1C] cmp r4, r0 bne _0802DC18 ldr r0, _0802DC14 @ =0x0000102a b _0802DC3E .align 2, 0 _0802DC14: .4byte 0x0000102a _0802DC18: ldr r0, _0802DC1C @ =0x00001029 b _0802DC3E .align 2, 0 _0802DC1C: .4byte 0x00001029 _0802DC20: cmp r4, r8 bne _0802DC2C ldr r0, _0802DC28 @ =0x00001025 b _0802DC3E .align 2, 0 _0802DC28: .4byte 0x00001025 _0802DC2C: ldr r2, [sp, 0x1C] cmp r4, r2 bne _0802DC3C ldr r0, _0802DC38 @ =0x00001027 b _0802DC3E .align 2, 0 _0802DC38: .4byte 0x00001027 _0802DC3C: ldr r0, _0802DC74 @ =0x00001026 _0802DC3E: strh r0, [r5] movs r1, 0x1 mov r0, r10 ands r0, r1 cmp r0, 0 beq _0802DC4E movs r0, 0 strh r0, [r5] _0802DC4E: movs r0, 0x80 mov r7, r10 ands r0, r7 cmp r0, 0 beq _0802DC78 lsls r2, r4, 24 lsrs r2, 24 str r1, [sp] str r1, [sp, 0x4] movs r0, 0x11 str r0, [sp, 0x8] movs r0, 0x1 add r1, sp, 0xC mov r7, r9 lsrs r3, r7, 24 bl CopyToBgTilemapBufferRect_ChangePalette b _0802DC90 .align 2, 0 _0802DC74: .4byte 0x00001026 _0802DC78: lsls r2, r4, 24 lsrs r2, 24 str r1, [sp] str r1, [sp, 0x4] movs r0, 0x11 str r0, [sp, 0x8] movs r0, 0 add r1, sp, 0xC mov r7, r9 lsrs r3, r7, 24 bl CopyToBgTilemapBufferRect_ChangePalette _0802DC90: adds r4, 0x1 ldr r0, [sp, 0x1C] cmp r4, r0 ble _0802DBC8 _0802DC98: ldr r6, [sp, 0x18] ldr r2, [sp, 0x14] cmp r6, r2 bgt _0802DCA2 b _0802DBB6 _0802DCA2: movs r0, 0x1 bl CopyBgTilemapBufferToVram add sp, 0x20 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_802DB7C thumb_func_start sub_802DCB8 sub_802DCB8: @ 802DCB8 push {lr} sub sp, 0x10 add r0, sp, 0xC movs r2, 0x1 strh r2, [r0] movs r1, 0x2 strh r1, [r0, 0x2] ldr r0, _0802DCF4 @ =gUnknown_2023E82 ldrb r3, [r0, 0x1] lsls r3, 25 movs r0, 0x90 lsls r0, 20 adds r3, r0 lsrs r3, 24 str r2, [sp] str r1, [sp, 0x4] movs r0, 0x11 str r0, [sp, 0x8] movs r0, 0 add r1, sp, 0xC movs r2, 0x18 bl CopyToBgTilemapBufferRect_ChangePalette movs r0, 0 bl CopyBgTilemapBufferToVram add sp, 0x10 pop {r0} bx r0 .align 2, 0 _0802DCF4: .4byte gUnknown_2023E82 thumb_func_end sub_802DCB8 thumb_func_start sub_802DCF8 sub_802DCF8: @ 802DCF8 push {lr} sub sp, 0x10 add r0, sp, 0xC movs r1, 0x20 strh r1, [r0] strh r1, [r0, 0x2] ldr r0, _0802DD34 @ =gUnknown_2023E82 ldrb r3, [r0, 0x1] lsls r3, 25 movs r0, 0x90 lsls r0, 20 adds r3, r0 lsrs r3, 24 movs r0, 0x1 str r0, [sp] movs r0, 0x2 str r0, [sp, 0x4] movs r0, 0x11 str r0, [sp, 0x8] movs r0, 0 add r1, sp, 0xC movs r2, 0x18 bl CopyToBgTilemapBufferRect_ChangePalette movs r0, 0 bl CopyBgTilemapBufferToVram add sp, 0x10 pop {r0} bx r0 .align 2, 0 _0802DD34: .4byte gUnknown_2023E82 thumb_func_end sub_802DCF8 thumb_func_start sub_802DD38 sub_802DD38: @ 802DD38 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 ldr r0, _0802DD5C @ =gUnknown_2023E82 ldrb r1, [r0] adds r4, r0, 0 cmp r1, 0x4 bls _0802DD50 b _0802DFA6 _0802DD50: lsls r0, r1, 2 ldr r1, _0802DD60 @ =_0802DD64 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0802DD5C: .4byte gUnknown_2023E82 _0802DD60: .4byte _0802DD64 .align 2, 0 _0802DD64: .4byte _0802DD78 .4byte _0802DDA8 .4byte _0802DE40 .4byte _0802DF18 .4byte _0802DF70 _0802DD78: movs r4, 0 str r4, [sp] movs r0, 0x17 movs r1, 0x8 movs r2, 0x1D movs r3, 0xD bl sub_802DB7C ldr r0, _0802DDA0 @ =gUnknown_83FE791 movs r1, 0xE bl sub_80D87BC ldr r1, _0802DDA4 @ =gUnknown_2023E82 ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] strb r4, [r1, 0x1] bl sub_802DCB8 b _0802DFA6 .align 2, 0 _0802DDA0: .4byte gUnknown_83FE791 _0802DDA4: .4byte gUnknown_2023E82 _0802DDA8: ldr r0, _0802DE1C @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _0802DDCC ldrb r0, [r4, 0x1] cmp r0, 0 beq _0802DDCC movs r0, 0x5 bl PlaySE bl sub_802DCF8 movs r0, 0 strb r0, [r4, 0x1] bl sub_802DCB8 _0802DDCC: ldr r0, _0802DE1C @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0802DDF2 ldr r4, _0802DE20 @ =gUnknown_2023E82 ldrb r0, [r4, 0x1] cmp r0, 0 bne _0802DDF2 movs r0, 0x5 bl PlaySE bl sub_802DCF8 movs r0, 0x1 strb r0, [r4, 0x1] bl sub_802DCB8 _0802DDF2: ldr r0, _0802DE1C @ =gMain ldrh r1, [r0, 0x2E] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0802DE24 movs r0, 0x5 bl PlaySE ldr r1, _0802DE20 @ =gUnknown_2023E82 ldrb r0, [r1, 0x1] cmp r0, 0 bne _0802DE36 ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] movs r0, 0x3 bl BeginFastPaletteFade b _0802DFA6 .align 2, 0 _0802DE1C: .4byte gMain _0802DE20: .4byte gUnknown_2023E82 _0802DE24: movs r0, 0x2 ands r0, r1 cmp r0, 0 bne _0802DE2E b _0802DFA6 _0802DE2E: movs r0, 0x5 bl PlaySE ldr r1, _0802DE3C @ =gUnknown_2023E82 _0802DE36: movs r0, 0x4 strb r0, [r1] b _0802DFA6 .align 2, 0 _0802DE3C: .4byte gUnknown_2023E82 _0802DE40: ldr r0, _0802DEFC @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _0802DE4E b _0802DFA6 _0802DE4E: ldr r7, _0802DF00 @ =gBattlerPartyIndexes ldr r0, _0802DF04 @ =sBattler_AI mov r10, r0 ldrb r0, [r0] movs r4, 0x1 eors r0, r4 lsls r0, 1 adds r0, r7 ldrh r0, [r0] movs r1, 0x64 mov r9, r1 mov r2, r9 muls r2, r0 adds r0, r2, 0 ldr r1, _0802DF08 @ =gEnemyParty mov r8, r1 add r0, r8 ldr r1, _0802DF0C @ =gBattleStruct ldr r2, [r1] adds r2, 0x6D movs r1, 0x2 bl GetMonData bl FreeAllWindowBuffers mov r2, r10 ldrb r0, [r2] eors r0, r4 lsls r0, 1 adds r0, r7 ldrh r0, [r0] mov r1, r9 muls r1, r0 adds r0, r1, 0 add r0, r8 movs r1, 0xB bl GetMonData adds r6, r0, 0 lsls r6, 16 lsrs r6, 16 mov r2, r10 ldrb r0, [r2] eors r0, r4 lsls r0, 1 adds r0, r7 ldrh r0, [r0] mov r1, r9 muls r1, r0 adds r0, r1, 0 add r0, r8 bl GetMonGender adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 mov r2, r10 ldrb r0, [r2] eors r4, r0 lsls r4, 1 adds r4, r7 ldrh r0, [r4] mov r1, r9 muls r1, r0 adds r0, r1, 0 add r0, r8 movs r1, 0 movs r2, 0 bl GetMonData ldr r2, _0802DF0C @ =gBattleStruct ldr r1, [r2] adds r1, 0x6D str r0, [sp] ldr r0, _0802DF10 @ =sub_8011100 str r0, [sp, 0x4] movs r0, 0x2 adds r2, r6, 0 adds r3, r5, 0 bl DoNamingScreen ldr r1, _0802DF14 @ =gUnknown_2023E82 ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] b _0802DFA6 .align 2, 0 _0802DEFC: .4byte gPaletteFade _0802DF00: .4byte gBattlerPartyIndexes _0802DF04: .4byte sBattler_AI _0802DF08: .4byte gEnemyParty _0802DF0C: .4byte gBattleStruct _0802DF10: .4byte sub_8011100 _0802DF14: .4byte gUnknown_2023E82 _0802DF18: ldr r0, _0802DF54 @ =gMain ldr r1, [r0, 0x4] ldr r0, _0802DF58 @ =sub_8011100 cmp r1, r0 bne _0802DFA6 ldr r0, _0802DF5C @ =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0802DFA6 ldr r2, _0802DF60 @ =gBattlerPartyIndexes ldr r0, _0802DF64 @ =sBattler_AI ldrb r1, [r0] movs r0, 0x1 eors r0, r1 lsls r0, 1 adds r0, r2 ldrh r1, [r0] movs r0, 0x64 muls r0, r1 ldr r1, _0802DF68 @ =gEnemyParty adds r0, r1 ldr r1, _0802DF6C @ =gBattleStruct ldr r2, [r1] adds r2, 0x6D movs r1, 0x2 bl SetMonData b _0802DF8C .align 2, 0 _0802DF54: .4byte gMain _0802DF58: .4byte sub_8011100 _0802DF5C: .4byte gPaletteFade _0802DF60: .4byte gBattlerPartyIndexes _0802DF64: .4byte sBattler_AI _0802DF68: .4byte gEnemyParty _0802DF6C: .4byte gBattleStruct _0802DF70: bl CalculatePlayerPartyCount lsls r0, 24 lsrs r0, 24 cmp r0, 0x6 bne _0802DF8C ldr r1, _0802DF88 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x5 str r0, [r1] b _0802DFA6 .align 2, 0 _0802DF88: .4byte gUnknown_2023D74 _0802DF8C: ldr r3, _0802DFB8 @ =gUnknown_2023D74 ldr r2, [r3] ldrb r1, [r2, 0x1] ldrb r0, [r2, 0x2] lsls r0, 8 orrs r1, r0 ldrb r0, [r2, 0x3] lsls r0, 16 orrs r1, r0 ldrb r0, [r2, 0x4] lsls r0, 24 orrs r1, r0 str r1, [r3] _0802DFA6: add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0802DFB8: .4byte gUnknown_2023D74 thumb_func_end sub_802DD38 thumb_func_start atkF4_subattackerhpbydmg atkF4_subattackerhpbydmg: @ 802DFBC ldr r2, _0802DFDC @ =gBattleMons ldr r0, _0802DFE0 @ =sBattler_AI ldrb r1, [r0] movs r0, 0x58 muls r1, r0 adds r1, r2 ldr r0, _0802DFE4 @ =gBattleMoveDamage ldr r2, [r0] ldrh r0, [r1, 0x28] subs r0, r2 strh r0, [r1, 0x28] ldr r1, _0802DFE8 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] bx lr .align 2, 0 _0802DFDC: .4byte gBattleMons _0802DFE0: .4byte sBattler_AI _0802DFE4: .4byte gBattleMoveDamage _0802DFE8: .4byte gUnknown_2023D74 thumb_func_end atkF4_subattackerhpbydmg thumb_func_start atkF5_removeattackerstatus1 atkF5_removeattackerstatus1: @ 802DFEC ldr r1, _0802E008 @ =gBattleMons ldr r0, _0802E00C @ =sBattler_AI ldrb r2, [r0] movs r0, 0x58 muls r0, r2 adds r1, 0x4C adds r0, r1 movs r1, 0 str r1, [r0] ldr r1, _0802E010 @ =gUnknown_2023D74 ldr r0, [r1] adds r0, 0x1 str r0, [r1] bx lr .align 2, 0 _0802E008: .4byte gBattleMons _0802E00C: .4byte sBattler_AI _0802E010: .4byte gUnknown_2023D74 thumb_func_end atkF5_removeattackerstatus1 thumb_func_start sub_802E014 sub_802E014: @ 802E014 ldr r1, _0802E01C @ =gUnknown_2023BE3 movs r0, 0xC strb r0, [r1] bx lr .align 2, 0 _0802E01C: .4byte gUnknown_2023BE3 thumb_func_end sub_802E014 thumb_func_start sub_802E020 sub_802E020: @ 802E020 ldr r1, _0802E030 @ =gUnknown_2023BE3 movs r0, 0xC strb r0, [r1] ldr r1, _0802E034 @ =gUnknown_2023BE2 ldr r0, _0802E038 @ =gBattlersCount ldrb r0, [r0] strb r0, [r1] bx lr .align 2, 0 _0802E030: .4byte gUnknown_2023BE3 _0802E034: .4byte gUnknown_2023BE2 _0802E038: .4byte gBattlersCount thumb_func_end sub_802E020 .align 2, 0 @ Don't pad with nop.