summaryrefslogtreecommitdiff
path: root/asm/battle_3.s
diff options
context:
space:
mode:
authorJaceCearK1 <JaceCearK1@users.noreply.github.com>2017-07-01 21:04:18 +0200
committerGitHub <noreply@github.com>2017-07-01 21:04:18 +0200
commit0dd804a99e5455a0eac8ff6ed87d9de16c7380b7 (patch)
tree7b3567978b63ee6548a7b945e075ea8ba37bef51 /asm/battle_3.s
parentf1344efd2aff92292f58f7323bd9297a38fe9b02 (diff)
parent8d82578d3a101b06f9d2ced31738021007c4e533 (diff)
Merge pull request #1 from pret/master
Update fork to match main fork.
Diffstat (limited to 'asm/battle_3.s')
-rw-r--r--asm/battle_3.s12017
1 files changed, 12017 insertions, 0 deletions
diff --git a/asm/battle_3.s b/asm/battle_3.s
new file mode 100644
index 000000000..ffe32f27b
--- /dev/null
+++ b/asm/battle_3.s
@@ -0,0 +1,12017 @@
+ .include "constants/gba_constants.inc"
+ .include "constants/species_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start b_movescr_stack_push
+b_movescr_stack_push: @ 801582C
+ push {r4,lr}
+ ldr r4, _08015848 @ =0x02017110
+ adds r3, r4, 0
+ adds r3, 0x20
+ ldrb r1, [r3]
+ adds r2, r1, 0x1
+ strb r2, [r3]
+ lsls r1, 24
+ lsrs r1, 22
+ adds r1, r4
+ str r0, [r1]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08015848: .4byte 0x02017110
+ thumb_func_end b_movescr_stack_push
+
+ thumb_func_start b_movescr_stack_push_cursor
+b_movescr_stack_push_cursor: @ 801584C
+ ldr r3, _08015868 @ =0x02017110
+ adds r2, r3, 0
+ adds r2, 0x20
+ ldrb r0, [r2]
+ adds r1, r0, 0x1
+ strb r1, [r2]
+ lsls r0, 24
+ lsrs r0, 22
+ adds r0, r3
+ ldr r1, _0801586C @ =gBattlescriptCurrInstr
+ ldr r1, [r1]
+ str r1, [r0]
+ bx lr
+ .align 2, 0
+_08015868: .4byte 0x02017110
+_0801586C: .4byte gBattlescriptCurrInstr
+ thumb_func_end b_movescr_stack_push_cursor
+
+ thumb_func_start b_movescr_stack_pop_cursor
+b_movescr_stack_pop_cursor: @ 8015870
+ ldr r3, _0801588C @ =gBattlescriptCurrInstr
+ ldr r2, _08015890 @ =0x02017110
+ adds r1, r2, 0
+ adds r1, 0x20
+ ldrb r0, [r1]
+ subs r0, 0x1
+ strb r0, [r1]
+ lsls r0, 24
+ lsrs r0, 22
+ adds r0, r2
+ ldr r0, [r0]
+ str r0, [r3]
+ bx lr
+ .align 2, 0
+_0801588C: .4byte gBattlescriptCurrInstr
+_08015890: .4byte 0x02017110
+ thumb_func_end b_movescr_stack_pop_cursor
+
+ thumb_func_start sub_8015894
+sub_8015894: @ 8015894
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ movs r6, 0
+ ldr r2, _080159AC @ =gBattleMons
+ ldr r1, _080159B0 @ =gBattleBufferB
+ ldr r5, _080159B4 @ =gActiveBank
+ ldrb r3, [r5]
+ lsls r0, r3, 9
+ adds r1, 0x2
+ adds r0, r1
+ ldrb r0, [r0]
+ lsls r0, 1
+ movs r1, 0x58
+ muls r1, r3
+ adds r0, r1
+ adds r2, 0xC
+ adds r0, r2
+ ldrh r4, [r0]
+ lsls r0, r3, 1
+ ldr r2, _080159B8 @ =0x020160e8
+ adds r0, r2
+ mov r8, r0
+ ldr r1, _080159BC @ =gDisableStructs
+ lsls r0, r3, 3
+ subs r0, r3
+ lsls r0, 2
+ adds r0, r1
+ ldrh r0, [r0, 0x4]
+ cmp r0, r4
+ bne _080158EE
+ cmp r4, 0
+ beq _080158EE
+ adds r0, r2, 0
+ subs r0, 0xE5
+ strb r3, [r0]
+ ldr r0, _080159C0 @ =gCurrentMove
+ strh r4, [r0]
+ ldr r1, _080159C4 @ =gUnknown_02024C1C
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _080159C8 @ =gUnknown_081D9144
+ str r1, [r0]
+ movs r6, 0x1
+_080158EE:
+ ldr r1, _080159CC @ =gLastUsedMove
+ ldr r5, _080159B4 @ =gActiveBank
+ ldrb r2, [r5]
+ lsls r0, r2, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ cmp r4, r0
+ bne _0801592A
+ cmp r4, 0xA5
+ beq _0801592A
+ ldr r1, _080159AC @ =gBattleMons
+ movs r0, 0x58
+ muls r0, r2
+ adds r1, 0x50
+ adds r0, r1
+ ldr r0, [r0]
+ cmp r0, 0
+ bge _0801592A
+ adds r0, r2, 0
+ bl CancelMultiTurnMoves
+ ldr r1, _080159C4 @ =gUnknown_02024C1C
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _080159D0 @ =gUnknown_081D937C
+ str r1, [r0]
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+_0801592A:
+ ldr r2, _080159BC @ =gDisableStructs
+ ldr r3, _080159B4 @ =gActiveBank
+ ldrb r1, [r3]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x13]
+ lsls r0, 28
+ cmp r0, 0
+ beq _08015966
+ ldr r0, _080159D4 @ =gBattleMoves
+ lsls r1, r4, 1
+ adds r1, r4
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1, 0x1]
+ cmp r0, 0
+ bne _08015966
+ ldr r0, _080159C0 @ =gCurrentMove
+ strh r4, [r0]
+ ldr r1, _080159C4 @ =gUnknown_02024C1C
+ ldrb r0, [r3]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _080159D8 @ =gUnknown_081D938B
+ str r1, [r0]
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+_08015966:
+ ldr r5, _080159B4 @ =gActiveBank
+ ldrb r0, [r5]
+ adds r1, r4, 0
+ bl sub_8015D5C
+ lsls r0, 24
+ cmp r0, 0
+ beq _0801598C
+ ldr r0, _080159C0 @ =gCurrentMove
+ strh r4, [r0]
+ ldr r1, _080159C4 @ =gUnknown_02024C1C
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _080159DC @ =gUnknown_081D9464
+ str r1, [r0]
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+_0801598C:
+ ldr r1, _080159AC @ =gBattleMons
+ ldrb r2, [r5]
+ movs r0, 0x58
+ muls r0, r2
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x2E]
+ cmp r0, 0xAF
+ bne _080159E4
+ ldr r1, _080159E0 @ =gEnigmaBerries
+ lsls r0, r2, 3
+ subs r0, r2
+ lsls r0, 2
+ adds r0, r1
+ ldrb r3, [r0, 0x7]
+ b _080159EE
+ .align 2, 0
+_080159AC: .4byte gBattleMons
+_080159B0: .4byte gBattleBufferB
+_080159B4: .4byte gActiveBank
+_080159B8: .4byte 0x020160e8
+_080159BC: .4byte gDisableStructs
+_080159C0: .4byte gCurrentMove
+_080159C4: .4byte gUnknown_02024C1C
+_080159C8: .4byte gUnknown_081D9144
+_080159CC: .4byte gLastUsedMove
+_080159D0: .4byte gUnknown_081D937C
+_080159D4: .4byte gBattleMoves
+_080159D8: .4byte gUnknown_081D938B
+_080159DC: .4byte gUnknown_081D9464
+_080159E0: .4byte gEnigmaBerries
+_080159E4:
+ ldrh r0, [r1, 0x2E]
+ bl ItemId_GetHoldEffect
+ lsls r0, 24
+ lsrs r3, r0, 24
+_080159EE:
+ ldr r2, _08015A70 @ =gStringBank
+ ldr r1, _08015A74 @ =gActiveBank
+ ldrb r0, [r1]
+ strb r0, [r2]
+ ldr r7, _08015A78 @ =gBattleMons
+ adds r5, r1, 0
+ cmp r3, 0x1D
+ bne _08015A36
+ mov r0, r8
+ ldrh r2, [r0]
+ adds r1, r2, 0
+ cmp r1, 0
+ beq _08015A36
+ ldr r0, _08015A7C @ =0x0000ffff
+ cmp r1, r0
+ beq _08015A36
+ cmp r1, r4
+ beq _08015A36
+ ldr r0, _08015A80 @ =gCurrentMove
+ strh r2, [r0]
+ ldr r2, _08015A84 @ =gLastUsedItem
+ ldrb r1, [r5]
+ movs r0, 0x58
+ muls r0, r1
+ adds r0, r7
+ ldrh r0, [r0, 0x2E]
+ strh r0, [r2]
+ ldr r1, _08015A88 @ =gUnknown_02024C1C
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _08015A8C @ =gUnknown_081D9AC2
+ str r1, [r0]
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+_08015A36:
+ ldr r0, _08015A90 @ =gBattleBufferB
+ ldrb r2, [r5]
+ lsls r1, r2, 9
+ adds r0, 0x2
+ adds r1, r0
+ movs r0, 0x58
+ muls r0, r2
+ ldrb r1, [r1]
+ adds r0, r1
+ adds r1, r7, 0
+ adds r1, 0x24
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08015A64
+ ldr r1, _08015A88 @ =gUnknown_02024C1C
+ lsls r0, r2, 2
+ adds r0, r1
+ ldr r1, _08015A94 @ =gUnknown_081D9369
+ str r1, [r0]
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+_08015A64:
+ adds r0, r6, 0
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08015A70: .4byte gStringBank
+_08015A74: .4byte gActiveBank
+_08015A78: .4byte gBattleMons
+_08015A7C: .4byte 0x0000ffff
+_08015A80: .4byte gCurrentMove
+_08015A84: .4byte gLastUsedItem
+_08015A88: .4byte gUnknown_02024C1C
+_08015A8C: .4byte gUnknown_081D9AC2
+_08015A90: .4byte gBattleBufferB
+_08015A94: .4byte gUnknown_081D9369
+ thumb_func_end sub_8015894
+
+ thumb_func_start sub_8015A98
+sub_8015A98: @ 8015A98
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x1C
+ lsls r0, 24
+ lsrs r7, r0, 24
+ lsls r1, 24
+ lsrs r4, r1, 24
+ lsls r2, 24
+ lsrs r3, r2, 24
+ lsls r1, r7, 1
+ ldr r0, _08015AD8 @ =0x020160e8
+ adds r1, r0
+ str r1, [sp, 0x4]
+ ldr r1, _08015ADC @ =gBattleMons
+ movs r0, 0x58
+ muls r0, r7
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x2E]
+ cmp r0, 0xAF
+ bne _08015AE4
+ ldr r2, _08015AE0 @ =gEnigmaBerries
+ lsls r1, r7, 3
+ subs r0, r1, r7
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x7]
+ str r0, [sp]
+ b _08015AF6
+ .align 2, 0
+_08015AD8: .4byte 0x020160e8
+_08015ADC: .4byte gBattleMons
+_08015AE0: .4byte gEnigmaBerries
+_08015AE4:
+ ldrh r0, [r1, 0x2E]
+ str r3, [sp, 0x14]
+ bl ItemId_GetHoldEffect
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp]
+ lsls r1, r7, 3
+ ldr r3, [sp, 0x14]
+_08015AF6:
+ ldr r0, _08015C70 @ =gStringBank
+ strb r7, [r0]
+ movs r0, 0
+ mov r9, r0
+ lsls r2, r7, 1
+ str r2, [sp, 0xC]
+ ldr r5, _08015C74 @ =gDisableStructs
+ mov r12, r5
+ ldr r0, _08015C78 @ =gBattleMons
+ movs r2, 0x58
+ adds r6, r7, 0
+ muls r6, r2
+ str r6, [sp, 0x8]
+ ldr r2, _08015C7C @ =gUnknown_02024A8C
+ adds r5, r6, r2
+ movs r6, 0
+ str r6, [sp, 0x10]
+ mov r10, r0
+ subs r0, r1, r7
+ lsls r0, 2
+ mov r8, r0
+ ldr r6, _08015C80 @ =gBitTable
+_08015B22:
+ ldrh r0, [r5]
+ cmp r0, 0
+ bne _08015B38
+ movs r0, 0x1
+ ands r0, r3
+ cmp r0, 0
+ beq _08015B38
+ ldr r0, [r6]
+ orrs r4, r0
+ lsls r0, r4, 24
+ lsrs r4, r0, 24
+_08015B38:
+ ldr r0, [sp, 0x8]
+ add r0, r9
+ mov r1, r10
+ adds r1, 0x24
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08015B58
+ movs r0, 0x2
+ ands r0, r3
+ cmp r0, 0
+ beq _08015B58
+ ldr r0, [r6]
+ orrs r4, r0
+ lsls r0, r4, 24
+ lsrs r4, r0, 24
+_08015B58:
+ mov r1, r8
+ add r1, r12
+ ldrh r0, [r5]
+ ldrh r1, [r1, 0x4]
+ cmp r0, r1
+ bne _08015B74
+ movs r0, 0x4
+ ands r0, r3
+ cmp r0, 0
+ beq _08015B74
+ ldr r0, [r6]
+ orrs r4, r0
+ lsls r0, r4, 24
+ lsrs r4, r0, 24
+_08015B74:
+ movs r0, 0x58
+ adds r2, r7, 0
+ muls r2, r0
+ ldr r1, [sp, 0x10]
+ adds r0, r1, r2
+ ldr r1, _08015C7C @ =gUnknown_02024A8C
+ adds r0, r1
+ mov r12, r0
+ ldr r1, _08015C84 @ =gLastUsedMove
+ ldr r0, [sp, 0xC]
+ adds r1, r0, r1
+ str r1, [sp, 0x18]
+ mov r1, r12
+ ldrh r1, [r1]
+ mov r12, r1
+ ldr r0, [sp, 0x18]
+ ldrh r0, [r0]
+ cmp r12, r0
+ bne _08015BB6
+ movs r0, 0x8
+ ands r0, r3
+ cmp r0, 0
+ beq _08015BB6
+ mov r0, r10
+ adds r0, 0x50
+ adds r0, r2, r0
+ ldr r0, [r0]
+ cmp r0, 0
+ bge _08015BB6
+ ldr r0, [r6]
+ orrs r4, r0
+ lsls r0, r4, 24
+ lsrs r4, r0, 24
+_08015BB6:
+ ldr r0, _08015C74 @ =gDisableStructs
+ add r0, r8
+ ldrb r0, [r0, 0x13]
+ lsls r0, 28
+ cmp r0, 0
+ beq _08015BE4
+ movs r0, 0x10
+ ands r0, r3
+ cmp r0, 0
+ beq _08015BE4
+ ldr r2, _08015C88 @ =gBattleMoves
+ ldrh r1, [r5]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x1]
+ cmp r0, 0
+ bne _08015BE4
+ ldr r0, [r6]
+ orrs r4, r0
+ lsls r0, r4, 24
+ lsrs r4, r0, 24
+_08015BE4:
+ ldrh r1, [r5]
+ adds r0, r7, 0
+ str r3, [sp, 0x14]
+ bl sub_8015D5C
+ lsls r0, 24
+ ldr r3, [sp, 0x14]
+ cmp r0, 0
+ beq _08015C06
+ movs r0, 0x20
+ ands r0, r3
+ cmp r0, 0
+ beq _08015C06
+ ldr r0, [r6]
+ orrs r4, r0
+ lsls r0, r4, 24
+ lsrs r4, r0, 24
+_08015C06:
+ ldr r1, _08015C74 @ =gDisableStructs
+ mov r0, r8
+ adds r2, r0, r1
+ ldrb r0, [r2, 0xE]
+ lsls r0, 28
+ mov r12, r1
+ cmp r0, 0
+ beq _08015C26
+ ldrh r0, [r2, 0x6]
+ ldrh r1, [r5]
+ cmp r0, r1
+ beq _08015C26
+ ldr r0, [r6]
+ orrs r4, r0
+ lsls r0, r4, 24
+ lsrs r4, r0, 24
+_08015C26:
+ ldr r2, [sp]
+ cmp r2, 0x1D
+ bne _08015C48
+ ldr r0, [sp, 0x4]
+ ldrh r1, [r0]
+ cmp r1, 0
+ beq _08015C48
+ ldr r0, _08015C8C @ =0x0000ffff
+ cmp r1, r0
+ beq _08015C48
+ ldrh r2, [r5]
+ cmp r1, r2
+ beq _08015C48
+ ldr r0, [r6]
+ orrs r4, r0
+ lsls r0, r4, 24
+ lsrs r4, r0, 24
+_08015C48:
+ adds r6, 0x4
+ adds r5, 0x2
+ ldr r0, [sp, 0x10]
+ adds r0, 0x2
+ str r0, [sp, 0x10]
+ movs r1, 0x1
+ add r9, r1
+ mov r2, r9
+ cmp r2, 0x3
+ bgt _08015C5E
+ b _08015B22
+_08015C5E:
+ adds r0, r4, 0
+ add sp, 0x1C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08015C70: .4byte gStringBank
+_08015C74: .4byte gDisableStructs
+_08015C78: .4byte gBattleMons
+_08015C7C: .4byte gUnknown_02024A8C
+_08015C80: .4byte gBitTable
+_08015C84: .4byte gLastUsedMove
+_08015C88: .4byte gBattleMoves
+_08015C8C: .4byte 0x0000ffff
+ thumb_func_end sub_8015A98
+
+ thumb_func_start sub_8015C90
+sub_8015C90: @ 8015C90
+ push {r4-r6,lr}
+ ldr r5, _08015CFC @ =gActiveBank
+ ldrb r0, [r5]
+ movs r1, 0
+ movs r2, 0xFF
+ bl sub_8015A98
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0xF
+ bne _08015D38
+ ldr r0, _08015D00 @ =gProtectStructs
+ ldrb r1, [r5]
+ lsls r1, 4
+ adds r1, r0
+ ldrb r0, [r1]
+ movs r2, 0x4
+ orrs r0, r2
+ strb r0, [r1]
+ ldr r1, _08015D04 @ =gUnknown_02024C1C
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _08015D08 @ =gUnknown_081D9365
+ str r1, [r0]
+ ldr r0, _08015D0C @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08015D14
+ ldrb r0, [r5]
+ bl GetBankIdentity
+ adds r4, r0, 0
+ bl Random
+ movs r1, 0x1
+ eors r4, r1
+ movs r1, 0x2
+ ands r1, r0
+ orrs r4, r1
+ lsls r4, 24
+ lsrs r4, 24
+ adds r0, r4, 0
+ bl GetBankByPlayerAI
+ ldr r2, _08015D10 @ =gBattleBufferB
+ ldrb r1, [r5]
+ lsls r1, 9
+ adds r2, 0x3
+ adds r1, r2
+ b _08015D48
+ .align 2, 0
+_08015CFC: .4byte gActiveBank
+_08015D00: .4byte gProtectStructs
+_08015D04: .4byte gUnknown_02024C1C
+_08015D08: .4byte gUnknown_081D9365
+_08015D0C: .4byte gBattleTypeFlags
+_08015D10: .4byte gBattleBufferB
+_08015D14:
+ ldrb r0, [r5]
+ bl GetBankIdentity
+ movs r1, 0x1
+ eors r0, r1
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ ldr r2, _08015D34 @ =gBattleBufferB
+ ldrb r1, [r5]
+ lsls r1, 9
+ adds r2, 0x3
+ adds r1, r2
+ b _08015D48
+ .align 2, 0
+_08015D34: .4byte gBattleBufferB
+_08015D38:
+ ldr r0, _08015D58 @ =gProtectStructs
+ ldrb r1, [r5]
+ lsls r1, 4
+ adds r1, r0
+ ldrb r2, [r1]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+_08015D48:
+ strb r0, [r1]
+ movs r0, 0
+ cmp r6, 0xF
+ bne _08015D52
+ movs r0, 0x1
+_08015D52:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08015D58: .4byte gProtectStructs
+ thumb_func_end sub_8015C90
+
+ thumb_func_start sub_8015D5C
+sub_8015D5C: @ 8015D5C
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 16
+ lsrs r5, r1, 16
+ movs r6, 0
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ movs r4, 0
+ ldr r0, _08015DF0 @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r6, r0
+ bge _08015DE0
+ ldr r7, _08015DF4 @ =gUnknown_02024A8C
+ mov r8, r7
+_08015D86:
+ lsls r0, r4, 24
+ lsrs r0, 24
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ adds r3, r4, 0x1
+ cmp r9, r0
+ beq _08015DD6
+ ldr r1, _08015DF8 @ =gStatuses3
+ lsls r0, r4, 2
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 6
+ ands r0, r1
+ cmp r0, 0
+ beq _08015DD6
+ movs r2, 0
+ movs r0, 0x58
+ adds r1, r4, 0
+ muls r1, r0
+ adds r0, r1, r7
+ ldrh r0, [r0]
+ cmp r5, r0
+ beq _08015DCC
+ mov r4, r8
+ adds r0, r1, r4
+_08015DBE:
+ adds r0, 0x2
+ adds r2, 0x1
+ cmp r2, 0x3
+ bgt _08015DD6
+ ldrh r1, [r0]
+ cmp r5, r1
+ bne _08015DBE
+_08015DCC:
+ cmp r2, 0x3
+ bgt _08015DD6
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+_08015DD6:
+ adds r4, r3, 0
+ ldr r0, _08015DF0 @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ blt _08015D86
+_08015DE0:
+ adds r0, r6, 0
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08015DF0: .4byte gNoOfAllBanks
+_08015DF4: .4byte gUnknown_02024A8C
+_08015DF8: .4byte gStatuses3
+ thumb_func_end sub_8015D5C
+
+ thumb_func_start UpdateTurnCounters
+UpdateTurnCounters: @ 8015DFC
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ movs r0, 0
+ mov r9, r0
+ ldr r1, _08015EA0 @ =gBankAttacker
+ mov r2, r9
+ strb r2, [r1]
+ ldr r0, _08015EA4 @ =gNoOfAllBanks
+ ldrb r4, [r0]
+ adds r6, r1, 0
+ mov r10, r0
+ ldr r7, _08015EA8 @ =gBankTarget
+ ldr r3, _08015EAC @ =0x02000000
+ mov r12, r3
+ cmp r9, r4
+ bcs _08015E50
+ ldr r2, _08015EB0 @ =gAbsentBankFlags
+ ldrb r1, [r2]
+ ldr r5, _08015EB4 @ =gBitTable
+ ldr r0, [r5]
+ ands r1, r0
+ cmp r1, 0
+ beq _08015E50
+ adds r3, r6, 0
+_08015E32:
+ ldrb r0, [r3]
+ adds r0, 0x1
+ strb r0, [r3]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, r4
+ bcs _08015E50
+ ldrb r0, [r2]
+ ldrb r1, [r6]
+ lsls r1, 2
+ adds r1, r5
+ ldr r1, [r1]
+ ands r0, r1
+ cmp r0, 0
+ bne _08015E32
+_08015E50:
+ movs r0, 0
+ strb r0, [r7]
+ mov r0, r10
+ ldrb r4, [r0]
+ cmp r4, 0
+ beq _08015E8A
+ ldr r2, _08015EB0 @ =gAbsentBankFlags
+ ldrb r1, [r2]
+ ldr r5, _08015EB4 @ =gBitTable
+ ldr r0, [r5]
+ ands r1, r0
+ cmp r1, 0
+ beq _08015E8A
+ adds r3, r7, 0
+_08015E6C:
+ ldrb r0, [r3]
+ adds r0, 0x1
+ strb r0, [r3]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, r4
+ bcs _08015E8A
+ ldrb r0, [r2]
+ ldrb r1, [r7]
+ lsls r1, 2
+ adds r1, r5
+ ldr r1, [r1]
+ ands r0, r1
+ cmp r0, 0
+ bne _08015E6C
+_08015E8A:
+ ldr r0, _08015EB8 @ =0x0001600e
+ add r0, r12
+ ldrb r0, [r0]
+ cmp r0, 0xA
+ bls _08015E96
+ b _0801652A
+_08015E96:
+ lsls r0, 2
+ ldr r1, _08015EBC @ =_08015EC0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08015EA0: .4byte gBankAttacker
+_08015EA4: .4byte gNoOfAllBanks
+_08015EA8: .4byte gBankTarget
+_08015EAC: .4byte 0x02000000
+_08015EB0: .4byte gAbsentBankFlags
+_08015EB4: .4byte gBitTable
+_08015EB8: .4byte 0x0001600e
+_08015EBC: .4byte _08015EC0
+ .align 2, 0
+_08015EC0:
+ .4byte _08015EEC
+ .4byte _08015F74
+ .4byte _08016034
+ .4byte _080160F4
+ .4byte _080161C8
+ .4byte _08016274
+ .4byte _08016324
+ .4byte _080163A8
+ .4byte _08016420
+ .4byte _08016494
+ .4byte _08016520
+_08015EEC:
+ movs r5, 0
+ ldr r1, _08015F0C @ =gNoOfAllBanks
+ mov r10, r1
+ ldrb r2, [r1]
+ cmp r5, r2
+ bge _08015F06
+ ldr r2, _08015F10 @ =gTurnOrder
+_08015EFA:
+ adds r0, r5, r2
+ strb r5, [r0]
+ adds r5, 0x1
+ ldrb r3, [r1]
+ cmp r5, r3
+ blt _08015EFA
+_08015F06:
+ movs r5, 0
+ b _08015F54
+ .align 2, 0
+_08015F0C: .4byte gNoOfAllBanks
+_08015F10: .4byte gTurnOrder
+_08015F14:
+ adds r4, r5, 0x1
+ adds r6, r4, 0
+ ldrb r1, [r1]
+ cmp r6, r1
+ bge _08015F52
+ ldr r7, _08016004 @ =gTurnOrder
+ ldr r0, _08016008 @ =gNoOfAllBanks
+ mov r10, r0
+ lsls r1, r5, 24
+ mov r8, r1
+_08015F28:
+ adds r0, r5, r7
+ ldrb r0, [r0]
+ adds r1, r4, r7
+ ldrb r1, [r1]
+ movs r2, 0
+ bl b_first_side
+ lsls r0, 24
+ cmp r0, 0
+ beq _08015F48
+ lsls r1, r4, 24
+ lsrs r1, 24
+ mov r2, r8
+ lsrs r0, r2, 24
+ bl sub_8012FBC
+_08015F48:
+ adds r4, 0x1
+ ldr r0, _08016008 @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ blt _08015F28
+_08015F52:
+ adds r5, r6, 0
+_08015F54:
+ mov r1, r10
+ ldrb r0, [r1]
+ subs r0, 0x1
+ cmp r5, r0
+ blt _08015F14
+ ldr r1, _0801600C @ =0x02000000
+ ldr r3, _08016010 @ =0x0001600e
+ adds r2, r1, r3
+ ldrb r0, [r2]
+ adds r0, 0x1
+ movs r3, 0
+ strb r0, [r2]
+ ldr r2, _08016014 @ =0x000160fc
+ adds r0, r1, r2
+ strb r3, [r0]
+ mov r12, r1
+_08015F74:
+ ldr r1, _08016014 @ =0x000160fc
+ add r1, r12
+ ldrb r0, [r1]
+ cmp r0, 0x1
+ bls _08015F80
+ b _08016236
+_08015F80:
+ ldr r3, _08016018 @ =gActiveBank
+ mov r8, r3
+ adds r6, r1, 0
+ movs r7, 0
+ ldr r5, _0801601C @ =gBattleTextBuff1
+_08015F8A:
+ ldr r0, _08016020 @ =gBankAttacker
+ ldrb r4, [r6]
+ strb r4, [r0]
+ mov r0, r8
+ strb r4, [r0]
+ ldr r0, _08016024 @ =gSideAffecting
+ lsls r2, r4, 1
+ adds r3, r2, r0
+ ldrh r1, [r3]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08015FE8
+ ldr r0, _08016028 @ =gSideTimer
+ adds r1, r2, r4
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1]
+ subs r0, 0x1
+ strb r0, [r1]
+ movs r4, 0xFF
+ lsls r0, 24
+ cmp r0, 0
+ bne _08015FE8
+ ldrh r0, [r3]
+ ldr r2, _0801602C @ =0x0000fffe
+ adds r1, r2, 0
+ ands r0, r1
+ strh r0, [r3]
+ ldr r0, _08016030 @ =gUnknown_081D9030
+ bl b_call_bc_move_exec
+ movs r0, 0xFD
+ strb r0, [r5]
+ movs r0, 0x2
+ strb r0, [r5, 0x1]
+ movs r0, 0x73
+ strb r0, [r5, 0x2]
+ strb r7, [r5, 0x3]
+ ldrb r0, [r5, 0x4]
+ orrs r0, r4
+ strb r0, [r5, 0x4]
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_08015FE8:
+ ldrb r0, [r6]
+ adds r0, 0x1
+ strb r0, [r6]
+ ldr r3, _0801600C @ =0x02000000
+ mov r12, r3
+ mov r1, r9
+ cmp r1, 0
+ beq _08015FFA
+ b _08016532
+_08015FFA:
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bls _08015F8A
+ b _08016236
+ .align 2, 0
+_08016004: .4byte gTurnOrder
+_08016008: .4byte gNoOfAllBanks
+_0801600C: .4byte 0x02000000
+_08016010: .4byte 0x0001600e
+_08016014: .4byte 0x000160fc
+_08016018: .4byte gActiveBank
+_0801601C: .4byte gBattleTextBuff1
+_08016020: .4byte gBankAttacker
+_08016024: .4byte gSideAffecting
+_08016028: .4byte gSideTimer
+_0801602C: .4byte 0x0000fffe
+_08016030: .4byte gUnknown_081D9030
+_08016034:
+ ldr r1, _080160CC @ =0x000160fc
+ add r1, r12
+ ldrb r0, [r1]
+ cmp r0, 0x1
+ bls _08016040
+ b _08016182
+_08016040:
+ adds r7, r1, 0
+ movs r3, 0x2
+ mov r10, r3
+ movs r0, 0
+ mov r8, r0
+ ldr r5, _080160D0 @ =gBattleTextBuff1
+_0801604C:
+ ldr r0, _080160D4 @ =gBankAttacker
+ ldrb r4, [r7]
+ strb r4, [r0]
+ ldr r1, _080160D8 @ =gActiveBank
+ strb r4, [r1]
+ ldr r0, _080160DC @ =gSideAffecting
+ lsls r2, r4, 1
+ adds r3, r2, r0
+ ldrh r1, [r3]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _080160B0
+ ldr r0, _080160E0 @ =gSideTimer
+ adds r1, r2, r4
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1, 0x1]
+ subs r0, 0x1
+ strb r0, [r1, 0x1]
+ movs r6, 0xFF
+ lsls r0, 24
+ cmp r0, 0
+ bne _080160B0
+ ldrh r0, [r3]
+ ldr r2, _080160E4 @ =0x0000fffd
+ adds r1, r2, 0
+ ands r0, r1
+ strh r0, [r3]
+ ldr r0, _080160E8 @ =gUnknown_081D9030
+ bl b_call_bc_move_exec
+ ldr r0, _080160EC @ =gBattleCommunication
+ strb r4, [r0, 0x5]
+ movs r0, 0xFD
+ strb r0, [r5]
+ mov r3, r10
+ strb r3, [r5, 0x1]
+ movs r0, 0x71
+ strb r0, [r5, 0x2]
+ mov r0, r8
+ strb r0, [r5, 0x3]
+ ldrb r0, [r5, 0x4]
+ orrs r0, r6
+ strb r0, [r5, 0x4]
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_080160B0:
+ ldrb r0, [r7]
+ adds r0, 0x1
+ strb r0, [r7]
+ ldr r1, _080160F0 @ =0x02000000
+ mov r12, r1
+ mov r2, r9
+ cmp r2, 0
+ beq _080160C2
+ b _08016532
+_080160C2:
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bls _0801604C
+ b _08016182
+ .align 2, 0
+_080160CC: .4byte 0x000160fc
+_080160D0: .4byte gBattleTextBuff1
+_080160D4: .4byte gBankAttacker
+_080160D8: .4byte gActiveBank
+_080160DC: .4byte gSideAffecting
+_080160E0: .4byte gSideTimer
+_080160E4: .4byte 0x0000fffd
+_080160E8: .4byte gUnknown_081D9030
+_080160EC: .4byte gBattleCommunication
+_080160F0: .4byte 0x02000000
+_080160F4:
+ ldr r1, _0801619C @ =0x000160fc
+ add r1, r12
+ ldrb r0, [r1]
+ cmp r0, 0x1
+ bhi _08016182
+ ldr r0, _080161A0 @ =gActiveBank
+ mov r10, r0
+ adds r7, r1, 0
+ movs r1, 0
+ mov r8, r1
+ ldr r5, _080161A4 @ =gBattleTextBuff1
+_0801610A:
+ ldr r0, _080161A8 @ =gBankAttacker
+ ldrb r4, [r7]
+ strb r4, [r0]
+ mov r2, r10
+ strb r4, [r2]
+ ldr r1, _080161AC @ =gSideTimer
+ lsls r3, r4, 1
+ adds r0, r3, r4
+ lsls r0, 2
+ adds r1, r0, r1
+ ldrb r0, [r1, 0x2]
+ cmp r0, 0
+ beq _08016168
+ subs r0, 0x1
+ strb r0, [r1, 0x2]
+ movs r6, 0xFF
+ lsls r0, 24
+ cmp r0, 0
+ bne _08016168
+ ldr r2, _080161B0 @ =gSideAffecting
+ adds r2, r3, r2
+ ldrh r0, [r2]
+ ldr r3, _080161B4 @ =0x0000feff
+ adds r1, r3, 0
+ ands r0, r1
+ strh r0, [r2]
+ ldr r0, _080161B8 @ =gUnknown_081D9030
+ bl b_call_bc_move_exec
+ ldr r0, _080161BC @ =gBattleCommunication
+ strb r4, [r0, 0x5]
+ movs r0, 0xFD
+ strb r0, [r5]
+ movs r0, 0x2
+ strb r0, [r5, 0x1]
+ movs r0, 0x36
+ strb r0, [r5, 0x2]
+ mov r0, r8
+ strb r0, [r5, 0x3]
+ ldrb r0, [r5, 0x4]
+ orrs r0, r6
+ strb r0, [r5, 0x4]
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_08016168:
+ ldrb r0, [r7]
+ adds r0, 0x1
+ strb r0, [r7]
+ ldr r1, _080161C0 @ =0x02000000
+ mov r12, r1
+ mov r2, r9
+ cmp r2, 0
+ beq _0801617A
+ b _08016532
+_0801617A:
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bls _0801610A
+_08016182:
+ mov r3, r9
+ cmp r3, 0
+ beq _0801618A
+ b _08016532
+_0801618A:
+ ldr r0, _080161C4 @ =0x0001600e
+ add r0, r12
+ ldrb r1, [r0]
+ adds r1, 0x1
+ strb r1, [r0]
+ ldr r0, _0801619C @ =0x000160fc
+ add r0, r12
+ strb r3, [r0]
+ b _0801652A
+ .align 2, 0
+_0801619C: .4byte 0x000160fc
+_080161A0: .4byte gActiveBank
+_080161A4: .4byte gBattleTextBuff1
+_080161A8: .4byte gBankAttacker
+_080161AC: .4byte gSideTimer
+_080161B0: .4byte gSideAffecting
+_080161B4: .4byte 0x0000feff
+_080161B8: .4byte gUnknown_081D9030
+_080161BC: .4byte gBattleCommunication
+_080161C0: .4byte 0x02000000
+_080161C4: .4byte 0x0001600e
+_080161C8:
+ ldr r1, _08016250 @ =0x000160fc
+ add r1, r12
+ ldrb r0, [r1]
+ cmp r0, 0x1
+ bhi _08016236
+ ldr r7, _08016254 @ =gActiveBank
+ adds r5, r1, 0
+ ldr r6, _08016258 @ =gBankAttacker
+_080161D8:
+ ldrb r4, [r5]
+ strb r4, [r6]
+ strb r4, [r7]
+ ldr r0, _0801625C @ =gSideAffecting
+ lsls r2, r4, 1
+ adds r3, r2, r0
+ ldrh r1, [r3]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _0801621C
+ ldr r0, _08016260 @ =gSideTimer
+ adds r1, r2, r4
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1, 0x7]
+ subs r0, 0x1
+ strb r0, [r1, 0x7]
+ lsls r0, 24
+ cmp r0, 0
+ bne _0801621C
+ ldrh r0, [r3]
+ ldr r2, _08016264 @ =0x0000ffdf
+ adds r1, r2, 0
+ ands r0, r1
+ strh r0, [r3]
+ ldr r0, _08016268 @ =gUnknown_081D9041
+ bl b_call_bc_move_exec
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_0801621C:
+ ldrb r0, [r5]
+ adds r0, 0x1
+ strb r0, [r5]
+ ldr r3, _0801626C @ =0x02000000
+ mov r12, r3
+ mov r1, r9
+ cmp r1, 0
+ beq _0801622E
+ b _08016532
+_0801622E:
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bls _080161D8
+_08016236:
+ mov r2, r9
+ cmp r2, 0
+ beq _0801623E
+ b _08016532
+_0801623E:
+ ldr r0, _08016270 @ =0x0001600e
+ add r0, r12
+ ldrb r1, [r0]
+ adds r1, 0x1
+ strb r1, [r0]
+ ldr r0, _08016250 @ =0x000160fc
+ add r0, r12
+ strb r2, [r0]
+ b _0801652A
+ .align 2, 0
+_08016250: .4byte 0x000160fc
+_08016254: .4byte gActiveBank
+_08016258: .4byte gBankAttacker
+_0801625C: .4byte gSideAffecting
+_08016260: .4byte gSideTimer
+_08016264: .4byte 0x0000ffdf
+_08016268: .4byte gUnknown_081D9041
+_0801626C: .4byte 0x02000000
+_08016270: .4byte 0x0001600e
+_08016274:
+ ldr r2, _080162FC @ =0x000160fc
+ add r2, r12
+ ldr r1, _08016300 @ =gNoOfAllBanks
+ ldrb r0, [r2]
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcs _080162E8
+ ldr r5, _08016304 @ =gActiveBank
+ adds r4, r2, 0
+ ldr r6, _08016308 @ =gUnknown_02024DDC
+_08016288:
+ ldr r1, _0801630C @ =gTurnOrder
+ ldrb r0, [r4]
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r5]
+ ldrb r0, [r5]
+ adds r1, r0, r6
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _080162CA
+ subs r0, 0x1
+ strb r0, [r1]
+ lsls r0, 24
+ cmp r0, 0
+ bne _080162CA
+ ldr r1, _08016310 @ =gBattleMons
+ ldrb r2, [r5]
+ movs r0, 0x58
+ muls r0, r2
+ adds r0, r1
+ ldrh r0, [r0, 0x28]
+ cmp r0, 0
+ beq _080162CA
+ ldr r0, _08016314 @ =gBankTarget
+ strb r2, [r0]
+ ldr r0, _08016318 @ =gUnknown_081D939A
+ bl b_call_bc_move_exec
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_080162CA:
+ ldrb r0, [r4]
+ adds r0, 0x1
+ strb r0, [r4]
+ ldr r3, _0801631C @ =0x02000000
+ mov r12, r3
+ mov r1, r9
+ cmp r1, 0
+ beq _080162DC
+ b _08016532
+_080162DC:
+ ldr r1, _08016300 @ =gNoOfAllBanks
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _08016288
+_080162E8:
+ mov r2, r9
+ cmp r2, 0
+ beq _080162F0
+ b _08016532
+_080162F0:
+ ldr r1, _08016320 @ =0x0001600e
+ add r1, r12
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ b _0801652A
+ .align 2, 0
+_080162FC: .4byte 0x000160fc
+_08016300: .4byte gNoOfAllBanks
+_08016304: .4byte gActiveBank
+_08016308: .4byte gUnknown_02024DDC
+_0801630C: .4byte gTurnOrder
+_08016310: .4byte gBattleMons
+_08016314: .4byte gBankTarget
+_08016318: .4byte gUnknown_081D939A
+_0801631C: .4byte 0x02000000
+_08016320: .4byte 0x0001600e
+_08016324:
+ ldr r3, _0801635C @ =gBattleWeather
+ ldrh r2, [r3]
+ movs r0, 0x7
+ ands r0, r2
+ cmp r0, 0
+ bne _08016332
+ b _080164F8
+_08016332:
+ movs r0, 0x4
+ ands r0, r2
+ cmp r0, 0
+ bne _0801637E
+ ldr r1, _08016360 @ =gWishFutureKnock
+ adds r1, 0x28
+ ldrb r0, [r1]
+ subs r0, 0x1
+ strb r0, [r1]
+ lsls r0, 24
+ cmp r0, 0
+ bne _08016370
+ ldr r0, _08016364 @ =0x0000fffe
+ ands r0, r2
+ ldr r1, _08016368 @ =0x0000fffd
+ ands r0, r1
+ strh r0, [r3]
+ ldr r1, _0801636C @ =gBattleCommunication
+ movs r0, 0x2
+ strb r0, [r1, 0x5]
+ b _0801639C
+ .align 2, 0
+_0801635C: .4byte gBattleWeather
+_08016360: .4byte gWishFutureKnock
+_08016364: .4byte 0x0000fffe
+_08016368: .4byte 0x0000fffd
+_0801636C: .4byte gBattleCommunication
+_08016370:
+ movs r0, 0x2
+ ands r0, r2
+ lsls r0, 16
+ lsrs r1, r0, 16
+ cmp r1, 0
+ bne _0801638A
+ b _08016398
+_0801637E:
+ movs r0, 0x2
+ ands r0, r2
+ lsls r0, 16
+ lsrs r1, r0, 16
+ cmp r1, 0
+ beq _08016398
+_0801638A:
+ ldr r1, _08016394 @ =gBattleCommunication
+ movs r0, 0x1
+ strb r0, [r1, 0x5]
+ b _0801639C
+ .align 2, 0
+_08016394: .4byte gBattleCommunication
+_08016398:
+ ldr r0, _080163A0 @ =gBattleCommunication
+ strb r1, [r0, 0x5]
+_0801639C:
+ ldr r0, _080163A4 @ =gUnknown_081D8F62
+ b _080164EA
+ .align 2, 0
+_080163A0: .4byte gBattleCommunication
+_080163A4: .4byte gUnknown_081D8F62
+_080163A8:
+ ldr r3, _080163DC @ =gBattleWeather
+ ldrh r2, [r3]
+ movs r0, 0x18
+ ands r0, r2
+ cmp r0, 0
+ bne _080163B6
+ b _080164F8
+_080163B6:
+ movs r0, 0x10
+ ands r0, r2
+ cmp r0, 0
+ bne _080163F0
+ ldr r1, _080163E0 @ =gWishFutureKnock
+ adds r1, 0x28
+ ldrb r0, [r1]
+ subs r0, 0x1
+ strb r0, [r1]
+ lsls r0, 24
+ cmp r0, 0
+ bne _080163F0
+ ldr r0, _080163E4 @ =0x0000fff7
+ ands r0, r2
+ strh r0, [r3]
+ ldr r1, _080163E8 @ =gBattlescriptCurrInstr
+ ldr r0, _080163EC @ =gUnknown_081D8FFF
+ b _080163F4
+ .align 2, 0
+_080163DC: .4byte gBattleWeather
+_080163E0: .4byte gWishFutureKnock
+_080163E4: .4byte 0x0000fff7
+_080163E8: .4byte gBattlescriptCurrInstr
+_080163EC: .4byte gUnknown_081D8FFF
+_080163F0:
+ ldr r1, _0801640C @ =gBattlescriptCurrInstr
+ ldr r0, _08016410 @ =gUnknown_081D8F7D
+_080163F4:
+ str r0, [r1]
+ adds r3, r1, 0
+ ldr r1, _08016414 @ =0x02000000
+ ldr r0, _08016418 @ =0x000160a4
+ adds r1, r0
+ movs r2, 0
+ movs r0, 0xC
+ strb r0, [r1]
+ ldr r0, _0801641C @ =gBattleCommunication
+ strb r2, [r0, 0x5]
+ b _080164E8
+ .align 2, 0
+_0801640C: .4byte gBattlescriptCurrInstr
+_08016410: .4byte gUnknown_081D8F7D
+_08016414: .4byte 0x02000000
+_08016418: .4byte 0x000160a4
+_0801641C: .4byte gBattleCommunication
+_08016420:
+ ldr r3, _08016450 @ =gBattleWeather
+ ldrh r2, [r3]
+ movs r0, 0x60
+ ands r0, r2
+ cmp r0, 0
+ beq _0801647C
+ movs r0, 0x40
+ ands r0, r2
+ cmp r0, 0
+ bne _08016464
+ ldr r1, _08016454 @ =gWishFutureKnock
+ adds r1, 0x28
+ ldrb r0, [r1]
+ subs r0, 0x1
+ strb r0, [r1]
+ lsls r0, 24
+ cmp r0, 0
+ bne _08016464
+ ldr r0, _08016458 @ =0x0000ffdf
+ ands r0, r2
+ strh r0, [r3]
+ ldr r1, _0801645C @ =gBattlescriptCurrInstr
+ ldr r0, _08016460 @ =gUnknown_081D9016
+ b _08016468
+ .align 2, 0
+_08016450: .4byte gBattleWeather
+_08016454: .4byte gWishFutureKnock
+_08016458: .4byte 0x0000ffdf
+_0801645C: .4byte gBattlescriptCurrInstr
+_08016460: .4byte gUnknown_081D9016
+_08016464:
+ ldr r1, _08016484 @ =gBattlescriptCurrInstr
+ ldr r0, _08016488 @ =gUnknown_081D9008
+_08016468:
+ str r0, [r1]
+ adds r3, r1, 0
+ ldr r0, [r3]
+ bl b_call_bc_move_exec
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_0801647C:
+ ldr r2, _0801648C @ =0x02000000
+ ldr r0, _08016490 @ =0x0001600e
+ adds r1, r2, r0
+ b _080164FE
+ .align 2, 0
+_08016484: .4byte gBattlescriptCurrInstr
+_08016488: .4byte gUnknown_081D9008
+_0801648C: .4byte 0x02000000
+_08016490: .4byte 0x0001600e
+_08016494:
+ ldr r3, _080164BC @ =gBattleWeather
+ ldrh r2, [r3]
+ movs r0, 0x80
+ ands r0, r2
+ cmp r0, 0
+ beq _080164F8
+ ldr r1, _080164C0 @ =gWishFutureKnock
+ adds r1, 0x28
+ ldrb r0, [r1]
+ subs r0, 0x1
+ strb r0, [r1]
+ lsls r0, 24
+ cmp r0, 0
+ bne _080164D0
+ ldr r0, _080164C4 @ =0x0000ff7f
+ ands r0, r2
+ strh r0, [r3]
+ ldr r1, _080164C8 @ =gBattlescriptCurrInstr
+ ldr r0, _080164CC @ =gUnknown_081D8FFF
+ b _080164D4
+ .align 2, 0
+_080164BC: .4byte gBattleWeather
+_080164C0: .4byte gWishFutureKnock
+_080164C4: .4byte 0x0000ff7f
+_080164C8: .4byte gBattlescriptCurrInstr
+_080164CC: .4byte gUnknown_081D8FFF
+_080164D0:
+ ldr r1, _08016508 @ =gBattlescriptCurrInstr
+ ldr r0, _0801650C @ =gUnknown_081D8F7D
+_080164D4:
+ str r0, [r1]
+ adds r3, r1, 0
+ ldr r0, _08016510 @ =0x02000000
+ ldr r1, _08016514 @ =0x000160a4
+ adds r0, r1
+ movs r1, 0xD
+ strb r1, [r0]
+ ldr r1, _08016518 @ =gBattleCommunication
+ movs r0, 0x1
+ strb r0, [r1, 0x5]
+_080164E8:
+ ldr r0, [r3]
+_080164EA:
+ bl b_call_bc_move_exec
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_080164F8:
+ ldr r2, _08016510 @ =0x02000000
+ ldr r3, _0801651C @ =0x0001600e
+ adds r1, r2, r3
+_080164FE:
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ mov r12, r2
+ b _0801652A
+ .align 2, 0
+_08016508: .4byte gBattlescriptCurrInstr
+_0801650C: .4byte gUnknown_081D8F7D
+_08016510: .4byte 0x02000000
+_08016514: .4byte 0x000160a4
+_08016518: .4byte gBattleCommunication
+_0801651C: .4byte 0x0001600e
+_08016520:
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_0801652A:
+ mov r0, r9
+ cmp r0, 0
+ bne _08016532
+ b _08015E8A
+_08016532:
+ ldr r0, _08016550 @ =gBattleMainFunc
+ ldr r1, [r0]
+ ldr r0, _08016554 @ =BattleTurnPassed
+ eors r1, r0
+ negs r0, r1
+ orrs r0, r1
+ lsrs r0, 31
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08016550: .4byte gBattleMainFunc
+_08016554: .4byte BattleTurnPassed
+ thumb_func_end UpdateTurnCounters
+
+ thumb_func_start TurnBasedEffects
+TurnBasedEffects: @ 8016558
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ movs r0, 0
+ mov r9, r0
+ ldr r2, _08016578 @ =gHitMarker
+ ldr r0, [r2]
+ ldr r1, _0801657C @ =0x01000020
+ orrs r0, r1
+ str r0, [r2]
+ bl _08017088
+ .align 2, 0
+_08016578: .4byte gHitMarker
+_0801657C: .4byte 0x01000020
+_08016580:
+ ldr r3, _080165B4 @ =gActiveBank
+ ldr r4, _080165B8 @ =gBankAttacker
+ ldr r1, _080165BC @ =gTurnOrder
+ adds r5, r7, r2
+ ldrb r0, [r5]
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r4]
+ strb r0, [r3]
+ ldr r0, _080165C0 @ =gAbsentBankFlags
+ ldrb r1, [r0]
+ ldr r2, _080165C4 @ =gBitTable
+ ldrb r0, [r3]
+ lsls r0, 2
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ adds r6, r3, 0
+ cmp r1, 0
+ beq _080165C8
+ ldrb r0, [r5]
+ adds r0, 0x1
+ strb r0, [r5]
+ bl _08017088
+ .align 2, 0
+_080165B4: .4byte gActiveBank
+_080165B8: .4byte gBankAttacker
+_080165BC: .4byte gTurnOrder
+_080165C0: .4byte gAbsentBankFlags
+_080165C4: .4byte gBitTable
+_080165C8:
+ movs r5, 0xB0
+ lsls r5, 9
+ adds r0, r7, r5
+ ldrb r0, [r0]
+ cmp r0, 0x13
+ bls _080165D8
+ bl _08017078
+_080165D8:
+ lsls r0, 2
+ ldr r1, _080165E4 @ =_080165E8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080165E4: .4byte _080165E8
+ .align 2, 0
+_080165E8:
+ .4byte _08016638
+ .4byte _080166A8
+ .4byte _080166D8
+ .4byte _08016730
+ .4byte _080167C8
+ .4byte _08016828
+ .4byte _080168C0
+ .4byte _0801691C
+ .4byte _0801697C
+ .4byte _080169DC
+ .4byte _08016B78
+ .4byte _08016CA0
+ .4byte _08016D58
+ .4byte _08016E30
+ .4byte _08016EFC
+ .4byte _08016F20
+ .4byte _08016F6C
+ .4byte _08016F9C
+ .4byte _08016704
+ .4byte _08017064
+_08016638:
+ ldr r1, _08016694 @ =gStatuses3
+ ldrb r3, [r6]
+ lsls r0, r3, 2
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 3
+ ands r0, r1
+ cmp r0, 0
+ beq _08016686
+ ldr r0, _08016698 @ =gBattleMons
+ movs r1, 0x58
+ muls r1, r3
+ adds r0, r1, r0
+ ldrh r2, [r0, 0x28]
+ ldrh r7, [r0, 0x2C]
+ cmp r2, r7
+ beq _08016686
+ cmp r2, 0
+ beq _08016686
+ ldr r1, _0801669C @ =gBattleMoveDamage
+ ldrh r0, [r0, 0x2C]
+ lsrs r0, 4
+ str r0, [r1]
+ cmp r0, 0
+ bne _08016670
+ movs r0, 0x1
+ str r0, [r1]
+_08016670:
+ ldr r0, [r1]
+ negs r0, r0
+ str r0, [r1]
+ ldr r0, _080166A0 @ =gUnknown_081D93D1
+ bl b_call_bc_move_exec
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_08016686:
+ ldr r1, _080166A4 @ =0x02000000
+ movs r0, 0xB0
+ lsls r0, 9
+ adds r1, r0
+ bl _08017072
+ .align 2, 0
+_08016694: .4byte gStatuses3
+_08016698: .4byte gBattleMons
+_0801669C: .4byte gBattleMoveDamage
+_080166A0: .4byte gUnknown_081D93D1
+_080166A4: .4byte 0x02000000
+_080166A8:
+ ldrb r1, [r6]
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x1
+ movs r2, 0
+ movs r3, 0
+ bl AbilityBattleEffects
+ lsls r0, 24
+ cmp r0, 0
+ beq _080166C8
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_080166C8:
+ ldr r1, _080166D4 @ =0x02000000
+ movs r2, 0xB0
+ lsls r2, 9
+ adds r1, r2
+ bl _08017072
+ .align 2, 0
+_080166D4: .4byte 0x02000000
+_080166D8:
+ ldrb r1, [r6]
+ movs r0, 0x1
+ movs r2, 0
+ bl sub_801A02C
+ lsls r0, 24
+ cmp r0, 0
+ beq _080166F2
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_080166F2:
+ ldr r1, _08016700 @ =0x02000000
+ movs r3, 0xB0
+ lsls r3, 9
+ adds r1, r3
+ bl _08017072
+ .align 2, 0
+_08016700: .4byte 0x02000000
+_08016704:
+ ldrb r1, [r6]
+ movs r0, 0x1
+ movs r2, 0x1
+ bl sub_801A02C
+ lsls r0, 24
+ cmp r0, 0
+ beq _0801671E
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_0801671E:
+ ldr r1, _0801672C @ =0x02000000
+ movs r5, 0xB0
+ lsls r5, 9
+ adds r1, r5
+ bl _08017072
+ .align 2, 0
+_0801672C: .4byte 0x02000000
+_08016730:
+ ldr r0, _080167A8 @ =gStatuses3
+ ldrb r2, [r6]
+ lsls r1, r2, 2
+ adds r1, r0
+ ldr r1, [r1]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _0801679C
+ ldr r3, _080167AC @ =gBattleMons
+ movs r5, 0x3
+ ands r5, r1
+ movs r1, 0x58
+ adds r0, r5, 0
+ muls r0, r1
+ adds r0, r3
+ ldrh r0, [r0, 0x28]
+ cmp r0, 0
+ beq _0801679C
+ adds r0, r2, 0
+ muls r0, r1
+ adds r0, r3
+ ldrh r0, [r0, 0x28]
+ cmp r0, 0
+ beq _0801679C
+ ldr r0, _080167B0 @ =gBankTarget
+ strb r5, [r0]
+ ldr r2, _080167B4 @ =gBattleMoveDamage
+ ldrb r0, [r6]
+ muls r0, r1
+ adds r0, r3
+ ldrh r0, [r0, 0x2C]
+ lsrs r0, 3
+ str r0, [r2]
+ cmp r0, 0
+ bne _0801677C
+ movs r0, 0x1
+ str r0, [r2]
+_0801677C:
+ ldr r1, _080167B8 @ =0x02000000
+ ldr r7, _080167BC @ =0x000160a4
+ adds r0, r1, r7
+ strb r5, [r0]
+ ldrb r0, [r4]
+ ldr r2, _080167C0 @ =0x000160a5
+ adds r1, r2
+ strb r0, [r1]
+ ldr r0, _080167C4 @ =gUnknown_081D904B
+ bl b_call_bc_move_exec
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_0801679C:
+ ldr r1, _080167B8 @ =0x02000000
+ movs r3, 0xB0
+ lsls r3, 9
+ adds r1, r3
+ bl _08017072
+ .align 2, 0
+_080167A8: .4byte gStatuses3
+_080167AC: .4byte gBattleMons
+_080167B0: .4byte gBankTarget
+_080167B4: .4byte gBattleMoveDamage
+_080167B8: .4byte 0x02000000
+_080167BC: .4byte 0x000160a4
+_080167C0: .4byte 0x000160a5
+_080167C4: .4byte gUnknown_081D904B
+_080167C8:
+ ldr r2, _08016818 @ =gBattleMons
+ ldrb r1, [r6]
+ movs r0, 0x58
+ adds r3, r1, 0
+ muls r3, r0
+ adds r0, r2, 0
+ adds r0, 0x4C
+ adds r0, r3, r0
+ ldr r0, [r0]
+ movs r1, 0x8
+ ands r0, r1
+ cmp r0, 0
+ beq _0801680A
+ adds r1, r3, r2
+ ldrh r0, [r1, 0x28]
+ cmp r0, 0
+ beq _0801680A
+ ldr r2, _0801681C @ =gBattleMoveDamage
+ ldrh r0, [r1, 0x2C]
+ lsrs r0, 3
+ str r0, [r2]
+ cmp r0, 0
+ bne _080167FA
+ movs r0, 0x1
+ str r0, [r2]
+_080167FA:
+ ldr r0, _08016820 @ =gUnknown_081D9518
+ bl b_call_bc_move_exec
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_0801680A:
+ ldr r1, _08016824 @ =0x02000000
+ movs r5, 0xB0
+ lsls r5, 9
+ adds r1, r5
+ bl _08017072
+ .align 2, 0
+_08016818: .4byte gBattleMons
+_0801681C: .4byte gBattleMoveDamage
+_08016820: .4byte gUnknown_081D9518
+_08016824: .4byte 0x02000000
+_08016828:
+ ldr r4, _080168B0 @ =gBattleMons
+ ldrb r0, [r6]
+ movs r7, 0x58
+ mov r8, r7
+ mov r2, r8
+ muls r2, r0
+ adds r3, r4, 0
+ adds r3, 0x4C
+ adds r0, r2, r3
+ ldr r0, [r0]
+ movs r1, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _080168A2
+ adds r1, r2, r4
+ ldrh r0, [r1, 0x28]
+ cmp r0, 0
+ beq _080168A2
+ ldr r5, _080168B4 @ =gBattleMoveDamage
+ ldrh r0, [r1, 0x2C]
+ lsrs r0, 4
+ str r0, [r5]
+ cmp r0, 0
+ bne _0801685C
+ movs r0, 0x1
+ str r0, [r5]
+_0801685C:
+ ldrb r0, [r6]
+ mov r1, r8
+ muls r1, r0
+ adds r0, r1, 0
+ adds r2, r0, r3
+ ldr r1, [r2]
+ movs r4, 0xF0
+ lsls r4, 4
+ adds r0, r1, 0
+ ands r0, r4
+ cmp r0, r4
+ beq _0801687C
+ movs r7, 0x80
+ lsls r7, 1
+ adds r0, r1, r7
+ str r0, [r2]
+_0801687C:
+ ldrb r0, [r6]
+ mov r1, r8
+ muls r1, r0
+ adds r0, r1, 0
+ adds r0, r3
+ ldr r0, [r0]
+ ands r0, r4
+ lsrs r0, 8
+ ldr r1, [r5]
+ muls r0, r1
+ str r0, [r5]
+ ldr r0, _080168B8 @ =gUnknown_081D9518
+ bl b_call_bc_move_exec
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_080168A2:
+ ldr r1, _080168BC @ =0x02000000
+ movs r2, 0xB0
+ lsls r2, 9
+ adds r1, r2
+ bl _08017072
+ .align 2, 0
+_080168B0: .4byte gBattleMons
+_080168B4: .4byte gBattleMoveDamage
+_080168B8: .4byte gUnknown_081D9518
+_080168BC: .4byte 0x02000000
+_080168C0:
+ ldr r2, _0801690C @ =gBattleMons
+ ldrb r1, [r6]
+ movs r0, 0x58
+ adds r3, r1, 0
+ muls r3, r0
+ adds r0, r2, 0
+ adds r0, 0x4C
+ adds r0, r3, r0
+ ldr r0, [r0]
+ movs r1, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _08016902
+ adds r1, r3, r2
+ ldrh r0, [r1, 0x28]
+ cmp r0, 0
+ beq _08016902
+ ldr r2, _08016910 @ =gBattleMoveDamage
+ ldrh r0, [r1, 0x2C]
+ lsrs r0, 3
+ str r0, [r2]
+ cmp r0, 0
+ bne _080168F2
+ movs r0, 0x1
+ str r0, [r2]
+_080168F2:
+ ldr r0, _08016914 @ =gUnknown_081D953A
+ bl b_call_bc_move_exec
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_08016902:
+ ldr r1, _08016918 @ =0x02000000
+ movs r3, 0xB0
+ lsls r3, 9
+ adds r1, r3
+ b _08017072
+ .align 2, 0
+_0801690C: .4byte gBattleMons
+_08016910: .4byte gBattleMoveDamage
+_08016914: .4byte gUnknown_081D953A
+_08016918: .4byte 0x02000000
+_0801691C:
+ ldr r2, _0801696C @ =gBattleMons
+ ldrb r1, [r6]
+ movs r0, 0x58
+ adds r3, r1, 0
+ muls r3, r0
+ adds r0, r2, 0
+ adds r0, 0x50
+ adds r0, r3, r0
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 20
+ ands r0, r1
+ cmp r0, 0
+ beq _08016960
+ adds r1, r3, r2
+ ldrh r0, [r1, 0x28]
+ cmp r0, 0
+ beq _08016960
+ ldr r2, _08016970 @ =gBattleMoveDamage
+ ldrh r0, [r1, 0x2C]
+ lsrs r0, 2
+ str r0, [r2]
+ cmp r0, 0
+ bne _08016950
+ movs r0, 0x1
+ str r0, [r2]
+_08016950:
+ ldr r0, _08016974 @ =gUnknown_081D9613
+ bl b_call_bc_move_exec
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_08016960:
+ ldr r1, _08016978 @ =0x02000000
+ movs r5, 0xB0
+ lsls r5, 9
+ adds r1, r5
+ b _08017072
+ .align 2, 0
+_0801696C: .4byte gBattleMons
+_08016970: .4byte gBattleMoveDamage
+_08016974: .4byte gUnknown_081D9613
+_08016978: .4byte 0x02000000
+_0801697C:
+ ldr r2, _080169CC @ =gBattleMons
+ ldrb r1, [r6]
+ movs r0, 0x58
+ adds r3, r1, 0
+ muls r3, r0
+ adds r0, r2, 0
+ adds r0, 0x50
+ adds r0, r3, r0
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 21
+ ands r0, r1
+ cmp r0, 0
+ beq _080169C0
+ adds r1, r3, r2
+ ldrh r0, [r1, 0x28]
+ cmp r0, 0
+ beq _080169C0
+ ldr r2, _080169D0 @ =gBattleMoveDamage
+ ldrh r0, [r1, 0x2C]
+ lsrs r0, 2
+ str r0, [r2]
+ cmp r0, 0
+ bne _080169B0
+ movs r0, 0x1
+ str r0, [r2]
+_080169B0:
+ ldr r0, _080169D4 @ =gUnknown_081D9624
+ bl b_call_bc_move_exec
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_080169C0:
+ ldr r1, _080169D8 @ =0x02000000
+ movs r7, 0xB0
+ lsls r7, 9
+ adds r1, r7
+ b _08017072
+ .align 2, 0
+_080169CC: .4byte gBattleMons
+_080169D0: .4byte gBattleMoveDamage
+_080169D4: .4byte gUnknown_081D9624
+_080169D8: .4byte 0x02000000
+_080169DC:
+ ldr r0, _08016A8C @ =gBattleMons
+ mov r8, r0
+ ldrb r0, [r6]
+ movs r1, 0x58
+ mov r10, r1
+ mov r1, r10
+ muls r1, r0
+ mov r5, r8
+ adds r5, 0x50
+ adds r3, r1, r5
+ ldr r2, [r3]
+ movs r4, 0xE0
+ lsls r4, 8
+ adds r0, r2, 0
+ ands r0, r4
+ cmp r0, 0
+ beq _08016AF6
+ mov r7, r8
+ adds r0, r1, r7
+ ldrh r0, [r0, 0x28]
+ cmp r0, 0
+ beq _08016AF6
+ ldr r1, _08016A90 @ =0xffffe000
+ adds r0, r2, r1
+ str r0, [r3]
+ ldrb r1, [r6]
+ mov r0, r10
+ muls r0, r1
+ adds r0, r5
+ ldr r0, [r0]
+ ands r0, r4
+ cmp r0, 0
+ beq _08016AB4
+ ldr r2, _08016A94 @ =0x02000000
+ lsls r0, r1, 1
+ ldr r4, _08016A98 @ =0x00016004
+ adds r0, r4
+ adds r0, r2
+ ldrb r1, [r0]
+ ldr r3, _08016A9C @ =0x000160a4
+ adds r0, r2, r3
+ strb r1, [r0]
+ ldrb r0, [r6]
+ lsls r0, 1
+ subs r3, 0x9F
+ adds r0, r3
+ adds r0, r2
+ ldrb r1, [r0]
+ ldr r5, _08016AA0 @ =0x000160a5
+ adds r0, r2, r5
+ strb r1, [r0]
+ ldr r1, _08016AA4 @ =gBattleTextBuff1
+ movs r0, 0xFD
+ strb r0, [r1]
+ movs r0, 0x2
+ strb r0, [r1, 0x1]
+ ldrb r0, [r6]
+ lsls r0, 1
+ adds r0, r4
+ adds r0, r2
+ ldrb r0, [r0]
+ strb r0, [r1, 0x2]
+ ldrb r0, [r6]
+ lsls r0, 1
+ adds r0, r3
+ adds r0, r2
+ ldrb r0, [r0]
+ strb r0, [r1, 0x3]
+ movs r0, 0xFF
+ strb r0, [r1, 0x4]
+ ldr r1, _08016AA8 @ =gBattlescriptCurrInstr
+ ldr r0, _08016AAC @ =gUnknown_081D95E2
+ str r0, [r1]
+ ldr r2, _08016AB0 @ =gBattleMoveDamage
+ ldrb r0, [r6]
+ mov r7, r10
+ muls r7, r0
+ adds r0, r7, 0
+ add r0, r8
+ ldrh r0, [r0, 0x2C]
+ lsrs r0, 4
+ str r0, [r2]
+ cmp r0, 0
+ bne _08016AE6
+ movs r0, 0x1
+ str r0, [r2]
+ b _08016AE6
+ .align 2, 0
+_08016A8C: .4byte gBattleMons
+_08016A90: .4byte 0xffffe000
+_08016A94: .4byte 0x02000000
+_08016A98: .4byte 0x00016004
+_08016A9C: .4byte 0x000160a4
+_08016AA0: .4byte 0x000160a5
+_08016AA4: .4byte gBattleTextBuff1
+_08016AA8: .4byte gBattlescriptCurrInstr
+_08016AAC: .4byte gUnknown_081D95E2
+_08016AB0: .4byte gBattleMoveDamage
+_08016AB4:
+ ldr r1, _08016B00 @ =gBattleTextBuff1
+ movs r0, 0xFD
+ strb r0, [r1]
+ movs r0, 0x2
+ strb r0, [r1, 0x1]
+ ldr r2, _08016B04 @ =0x02000000
+ ldrb r0, [r6]
+ lsls r0, 1
+ ldr r3, _08016B08 @ =0x00016004
+ adds r0, r3
+ adds r0, r2
+ ldrb r0, [r0]
+ strb r0, [r1, 0x2]
+ ldrb r0, [r6]
+ lsls r0, 1
+ ldr r5, _08016B0C @ =0x00016005
+ adds r0, r5
+ adds r0, r2
+ ldrb r0, [r0]
+ strb r0, [r1, 0x3]
+ movs r0, 0xFF
+ strb r0, [r1, 0x4]
+ ldr r1, _08016B10 @ =gBattlescriptCurrInstr
+ ldr r0, _08016B14 @ =gUnknown_081D95F4
+ str r0, [r1]
+_08016AE6:
+ ldr r0, [r1]
+ bl b_call_bc_move_exec
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_08016AF6:
+ ldr r1, _08016B04 @ =0x02000000
+ movs r7, 0xB0
+ lsls r7, 9
+ adds r1, r7
+ b _08017072
+ .align 2, 0
+_08016B00: .4byte gBattleTextBuff1
+_08016B04: .4byte 0x02000000
+_08016B08: .4byte 0x00016004
+_08016B0C: .4byte 0x00016005
+_08016B10: .4byte gBattlescriptCurrInstr
+_08016B14: .4byte gUnknown_081D95F4
+_08016B18:
+ movs r0, 0x8
+ negs r0, r0
+ ands r4, r0
+ str r4, [r2]
+ ldrb r0, [r6]
+ mov r2, r8
+ muls r2, r0
+ mov r0, r10
+ adds r0, 0x50
+ adds r2, r0
+ ldr r0, [r2]
+ ldr r1, _08016B68 @ =0xf7ffffff
+ ands r0, r1
+ str r0, [r2]
+ ldr r1, _08016B6C @ =gBattleCommunication
+ movs r0, 0x1
+ strb r0, [r1, 0x5]
+ ldr r0, _08016B70 @ =gUnknown_081D950F
+ bl b_call_bc_move_exec
+ ldr r4, _08016B74 @ =gActiveBank
+ ldrb r0, [r6]
+ strb r0, [r4]
+ ldrb r0, [r4]
+ mov r1, r8
+ muls r1, r0
+ adds r0, r1, 0
+ add r0, r9
+ str r0, [sp]
+ movs r0, 0
+ movs r1, 0x28
+ movs r2, 0
+ movs r3, 0x4
+ bl EmitSetAttributes
+ ldrb r0, [r4]
+ bl MarkBufferBankForExecution
+ b _08016BE0
+ .align 2, 0
+_08016B68: .4byte 0xf7ffffff
+_08016B6C: .4byte gBattleCommunication
+_08016B70: .4byte gUnknown_081D950F
+_08016B74: .4byte gActiveBank
+_08016B78:
+ ldr r2, _08016BF4 @ =gBattleMons
+ ldrb r1, [r6]
+ movs r0, 0x58
+ muls r0, r1
+ adds r1, r2, 0
+ adds r1, 0x50
+ adds r0, r1
+ ldr r1, [r0]
+ movs r0, 0x70
+ ands r1, r0
+ adds r7, r2, 0
+ cmp r1, 0
+ beq _08016C82
+ movs r0, 0
+ strb r0, [r4]
+ mov r2, r8
+ ldrb r1, [r2]
+ cmp r1, 0
+ beq _08016BE0
+ mov r10, r7
+ adds r6, r4, 0
+ movs r3, 0x58
+ mov r8, r3
+ movs r5, 0x4C
+ adds r5, r7
+ mov r9, r5
+ str r1, [sp, 0x4]
+ movs r0, 0x7
+ mov r12, r0
+_08016BB2:
+ ldrb r1, [r6]
+ mov r3, r8
+ muls r3, r1
+ mov r5, r9
+ adds r2, r3, r5
+ ldr r4, [r2]
+ adds r0, r4, 0
+ mov r5, r12
+ ands r0, r5
+ cmp r0, 0
+ beq _08016BD2
+ adds r0, r3, r7
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, 0x2B
+ bne _08016B18
+_08016BD2:
+ adds r0, r1, 0x1
+ strb r0, [r6]
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, [sp, 0x4]
+ cmp r0, r1
+ bcc _08016BB2
+_08016BE0:
+ ldr r2, _08016BF8 @ =gBankAttacker
+ ldr r1, _08016BFC @ =gNoOfAllBanks
+ ldrb r0, [r2]
+ ldrb r1, [r1]
+ cmp r0, r1
+ beq _08016C00
+ movs r2, 0x2
+ mov r9, r2
+ b _0801707E
+ .align 2, 0
+_08016BF4: .4byte gBattleMons
+_08016BF8: .4byte gBankAttacker
+_08016BFC: .4byte gNoOfAllBanks
+_08016C00:
+ ldr r5, _08016C38 @ =gActiveBank
+ ldrb r0, [r5]
+ strb r0, [r2]
+ ldr r2, _08016C3C @ =gBattleMons
+ ldrb r0, [r5]
+ movs r7, 0x58
+ adds r1, r0, 0
+ muls r1, r7
+ adds r6, r2, 0
+ adds r6, 0x50
+ adds r1, r6
+ ldr r0, [r1]
+ subs r0, 0x10
+ str r0, [r1]
+ ldrb r0, [r5]
+ bl sub_8015660
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ beq _08016C44
+ ldrb r0, [r5]
+ bl CancelMultiTurnMoves
+ ldr r1, _08016C40 @ =gBattleCommunication
+ movs r0, 0x1
+ strb r0, [r1, 0x5]
+ b _08016C78
+ .align 2, 0
+_08016C38: .4byte gActiveBank
+_08016C3C: .4byte gBattleMons
+_08016C40: .4byte gBattleCommunication
+_08016C44:
+ ldrb r3, [r5]
+ adds r0, r3, 0
+ muls r0, r7
+ adds r2, r0, r6
+ ldr r0, [r2]
+ movs r1, 0x70
+ ands r0, r1
+ cmp r0, 0
+ beq _08016C6C
+ ldr r0, _08016C68 @ =gBattleCommunication
+ strb r4, [r0, 0x5]
+ ldr r0, [r2]
+ movs r1, 0x80
+ lsls r1, 5
+ orrs r0, r1
+ str r0, [r2]
+ b _08016C78
+ .align 2, 0
+_08016C68: .4byte gBattleCommunication
+_08016C6C:
+ ldr r1, _08016C94 @ =gBattleCommunication
+ movs r0, 0x1
+ strb r0, [r1, 0x5]
+ adds r0, r3, 0
+ bl CancelMultiTurnMoves
+_08016C78:
+ ldr r0, _08016C98 @ =gUnknown_081D957E
+ bl b_call_bc_move_exec
+ movs r3, 0x1
+ mov r9, r3
+_08016C82:
+ mov r5, r9
+ cmp r5, 0x2
+ bne _08016C8A
+ b _08017078
+_08016C8A:
+ ldr r1, _08016C9C @ =0x02000000
+ movs r7, 0xB0
+ lsls r7, 9
+ adds r1, r7
+ b _08017072
+ .align 2, 0
+_08016C94: .4byte gBattleCommunication
+_08016C98: .4byte gUnknown_081D957E
+_08016C9C: .4byte 0x02000000
+_08016CA0:
+ ldr r1, _08016CD8 @ =gBattleMons
+ ldrb r0, [r6]
+ movs r7, 0x58
+ muls r0, r7
+ adds r5, r1, 0
+ adds r5, 0x50
+ adds r2, r0, r5
+ ldr r1, [r2]
+ movs r4, 0xC0
+ lsls r4, 4
+ adds r0, r1, 0
+ ands r0, r4
+ cmp r0, 0
+ beq _08016D3C
+ ldr r3, _08016CDC @ =0xfffffc00
+ adds r0, r1, r3
+ str r0, [r2]
+ ldrb r0, [r6]
+ bl sub_8015660
+ lsls r0, 24
+ cmp r0, 0
+ beq _08016CE0
+ ldrb r0, [r6]
+ bl CancelMultiTurnMoves
+ b _08016D3C
+ .align 2, 0
+_08016CD8: .4byte gBattleMons
+_08016CDC: .4byte 0xfffffc00
+_08016CE0:
+ ldrb r0, [r6]
+ muls r0, r7
+ adds r2, r0, r5
+ ldr r1, [r2]
+ adds r0, r1, 0
+ ands r0, r4
+ cmp r0, 0
+ bne _08016D3C
+ movs r0, 0x80
+ lsls r0, 5
+ ands r0, r1
+ cmp r0, 0
+ beq _08016D3C
+ ldr r0, _08016D48 @ =0xffffefff
+ ands r1, r0
+ str r1, [r2]
+ ldrb r0, [r6]
+ muls r0, r7
+ adds r0, r5
+ ldr r0, [r0]
+ movs r4, 0x7
+ ands r0, r4
+ cmp r0, 0
+ bne _08016D3C
+ ldr r1, _08016D4C @ =gBattleCommunication
+ movs r0, 0x47
+ strb r0, [r1, 0x3]
+ movs r0, 0x1
+ movs r1, 0
+ bl sub_801E3EC
+ ldrb r0, [r6]
+ muls r0, r7
+ adds r0, r5
+ ldr r0, [r0]
+ ands r0, r4
+ cmp r0, 0
+ beq _08016D32
+ ldr r0, _08016D50 @ =gUnknown_081D9587
+ bl b_call_bc_move_exec
+_08016D32:
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_08016D3C:
+ ldr r1, _08016D54 @ =0x02000000
+ movs r5, 0xB0
+ lsls r5, 9
+ adds r1, r5
+ b _08017072
+ .align 2, 0
+_08016D48: .4byte 0xffffefff
+_08016D4C: .4byte gBattleCommunication
+_08016D50: .4byte gUnknown_081D9587
+_08016D54: .4byte 0x02000000
+_08016D58:
+ ldr r0, _08016DD4 @ =gDisableStructs
+ ldrb r3, [r6]
+ lsls r1, r3, 3
+ subs r1, r3
+ lsls r1, 2
+ adds r5, r1, r0
+ ldrb r1, [r5, 0xB]
+ lsls r1, 28
+ adds r7, r0, 0
+ cmp r1, 0
+ beq _08016E1E
+ movs r4, 0
+ ldr r2, _08016DD8 @ =gBattleMons
+ movs r0, 0x58
+ adds r1, r3, 0
+ muls r1, r0
+ adds r2, 0xC
+ adds r1, r2
+ ldrh r0, [r5, 0x4]
+ ldrh r1, [r1]
+ cmp r0, r1
+ beq _08016DAC
+ mov r12, r7
+ mov r8, r2
+ adds r5, r6, 0
+ movs r3, 0x58
+_08016D8C:
+ adds r4, 0x1
+ cmp r4, 0x3
+ bgt _08016DAC
+ ldrb r2, [r5]
+ lsls r1, r2, 3
+ subs r1, r2
+ lsls r1, 2
+ add r1, r12
+ lsls r0, r4, 1
+ muls r2, r3
+ adds r0, r2
+ add r0, r8
+ ldrh r1, [r1, 0x4]
+ ldrh r0, [r0]
+ cmp r1, r0
+ bne _08016D8C
+_08016DAC:
+ cmp r4, 0x4
+ bne _08016DDC
+ ldrb r1, [r6]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ adds r0, r7
+ movs r1, 0
+ strh r1, [r0, 0x4]
+ ldrb r0, [r6]
+ lsls r1, r0, 3
+ subs r1, r0
+ lsls r1, 2
+ adds r1, r7
+ ldrb r2, [r1, 0xB]
+ movs r0, 0x10
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1, 0xB]
+ b _08016E1E
+ .align 2, 0
+_08016DD4: .4byte gDisableStructs
+_08016DD8: .4byte gBattleMons
+_08016DDC:
+ ldrb r0, [r6]
+ lsls r2, r0, 3
+ subs r2, r0
+ lsls r2, 2
+ adds r2, r7
+ ldrb r3, [r2, 0xB]
+ 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, 0xB]
+ adds r2, r1, 0
+ cmp r2, 0
+ bne _08016E1E
+ ldrb r1, [r6]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ adds r0, r7
+ strh r2, [r0, 0x4]
+ ldr r0, _08016E28 @ =gUnknown_081D9148
+ bl b_call_bc_move_exec
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_08016E1E:
+ ldr r1, _08016E2C @ =0x02000000
+ movs r7, 0xB0
+ lsls r7, 9
+ adds r1, r7
+ b _08017072
+ .align 2, 0
+_08016E28: .4byte gUnknown_081D9148
+_08016E2C: .4byte 0x02000000
+_08016E30:
+ ldr r3, _08016E7C @ =gDisableStructs
+ ldrb r1, [r6]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ adds r2, r0, r3
+ ldrb r5, [r2, 0xE]
+ lsls r4, r5, 28
+ cmp r4, 0
+ beq _08016EE8
+ ldr r0, _08016E80 @ =gBattleMons
+ mov r8, r0
+ ldrb r0, [r2, 0xC]
+ lsls r0, 1
+ movs r7, 0x58
+ muls r1, r7
+ adds r0, r1
+ mov r1, r8
+ adds r1, 0xC
+ adds r0, r1
+ ldrh r0, [r0]
+ ldrh r1, [r2, 0x6]
+ cmp r0, r1
+ beq _08016E84
+ movs r0, 0
+ strh r0, [r2, 0x6]
+ ldrb r0, [r6]
+ lsls r1, r0, 3
+ subs r1, r0
+ lsls r1, 2
+ adds r1, r3
+ ldrb r2, [r1, 0xE]
+ movs r0, 0x10
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1, 0xE]
+ b _08016EE8
+ .align 2, 0
+_08016E7C: .4byte gDisableStructs
+_08016E80: .4byte gBattleMons
+_08016E84:
+ lsrs r1, r4, 28
+ subs r1, 0x1
+ movs r0, 0xF
+ ands r1, r0
+ movs r4, 0x10
+ negs r4, r4
+ adds r0, r4, 0
+ ands r0, r5
+ orrs r0, r1
+ strb r0, [r2, 0xE]
+ cmp r1, 0
+ beq _08016EB8
+ ldrb r1, [r6]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ adds r0, r3
+ muls r1, r7
+ ldrb r0, [r0, 0xC]
+ adds r1, r0
+ mov r0, r8
+ adds r0, 0x24
+ adds r1, r0
+ ldrb r0, [r1]
+ cmp r0, 0
+ bne _08016EE8
+_08016EB8:
+ ldrb r1, [r6]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ adds r0, r3
+ movs r1, 0
+ strh r1, [r0, 0x6]
+ ldrb r0, [r6]
+ lsls r1, r0, 3
+ subs r1, r0
+ lsls r1, 2
+ adds r1, r3
+ ldrb r2, [r1, 0xE]
+ adds r0, r4, 0
+ ands r0, r2
+ strb r0, [r1, 0xE]
+ ldr r0, _08016EF4 @ =gUnknown_081D914F
+ bl b_call_bc_move_exec
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_08016EE8:
+ ldr r1, _08016EF8 @ =0x02000000
+ movs r2, 0xB0
+ lsls r2, 9
+ adds r1, r2
+ b _08017072
+ .align 2, 0
+_08016EF4: .4byte gUnknown_081D914F
+_08016EF8: .4byte 0x02000000
+_08016EFC:
+ ldr r0, _08016F1C @ =gStatuses3
+ ldrb r1, [r6]
+ lsls r1, 2
+ adds r1, r0
+ ldr r2, [r1]
+ movs r0, 0x18
+ ands r0, r2
+ cmp r0, 0
+ beq _08016F14
+ adds r0, r2, 0
+ subs r0, 0x8
+ str r0, [r1]
+_08016F14:
+ movs r1, 0xB0
+ lsls r1, 9
+ b _08017070
+ .align 2, 0
+_08016F1C: .4byte gStatuses3
+_08016F20:
+ ldr r2, _08016F60 @ =gDisableStructs
+ ldrb r1, [r6]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ adds r3, r0, r2
+ ldrb r2, [r3, 0x12]
+ lsls r1, r2, 28
+ cmp r1, 0
+ beq _08016F5A
+ lsrs r1, 28
+ subs r1, 0x1
+ movs r0, 0xF
+ ands r1, r0
+ movs r0, 0x10
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3, 0x12]
+ cmp r1, 0
+ bne _08016F5A
+ ldr r0, _08016F64 @ =gStatuses3
+ ldrb r2, [r6]
+ lsls r2, 2
+ adds r2, r0
+ ldr r0, [r2]
+ ldr r1, _08016F68 @ =0xfffffdff
+ ands r0, r1
+ str r0, [r2]
+_08016F5A:
+ movs r1, 0xB0
+ lsls r1, 9
+ b _08017070
+ .align 2, 0
+_08016F60: .4byte gDisableStructs
+_08016F64: .4byte gStatuses3
+_08016F68: .4byte 0xfffffdff
+_08016F6C:
+ ldr r2, _08016F98 @ =gDisableStructs
+ ldrb r1, [r6]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ adds r3, r0, r2
+ ldrb r2, [r3, 0x13]
+ lsls r1, r2, 28
+ cmp r1, 0
+ beq _08016F92
+ lsrs r1, 28
+ subs r1, 0x1
+ movs r0, 0xF
+ ands r1, r0
+ movs r0, 0x10
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3, 0x13]
+_08016F92:
+ movs r1, 0xB0
+ lsls r1, 9
+ b _08017070
+ .align 2, 0
+_08016F98: .4byte gDisableStructs
+_08016F9C:
+ ldr r4, _0801704C @ =gStatuses3
+ ldrb r0, [r6]
+ lsls r0, 2
+ adds r2, r0, r4
+ ldr r1, [r2]
+ movs r3, 0xC0
+ lsls r3, 5
+ adds r0, r1, 0
+ ands r0, r3
+ cmp r0, 0
+ beq _08017042
+ ldr r5, _08017050 @ =0xfffff800
+ adds r0, r1, r5
+ str r0, [r2]
+ ldrb r2, [r6]
+ lsls r0, r2, 2
+ adds r0, r4
+ ldr r0, [r0]
+ ands r0, r3
+ cmp r0, 0
+ bne _08017042
+ ldr r3, _08017054 @ =gBattleMons
+ movs r5, 0x58
+ adds r1, r2, 0
+ muls r1, r5
+ adds r4, r3, 0
+ adds r4, 0x4C
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08017042
+ adds r0, r1, r3
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, 0x48
+ beq _08017042
+ cmp r0, 0xF
+ beq _08017042
+ adds r0, r2, 0
+ bl sub_8025A44
+ lsls r0, 24
+ cmp r0, 0
+ bne _08017042
+ ldrb r0, [r6]
+ bl CancelMultiTurnMoves
+ bl Random
+ ldrb r1, [r6]
+ adds r2, r1, 0
+ muls r2, r5
+ adds r2, r4
+ movs r1, 0x3
+ ands r1, r0
+ adds r1, 0x2
+ ldr r0, [r2]
+ orrs r0, r1
+ str r0, [r2]
+ ldrb r0, [r6]
+ muls r0, r5
+ adds r0, r4
+ str r0, [sp]
+ movs r0, 0
+ movs r1, 0x28
+ movs r2, 0
+ movs r3, 0x4
+ bl EmitSetAttributes
+ ldrb r0, [r6]
+ bl MarkBufferBankForExecution
+ ldr r1, _08017058 @ =gEffectBank
+ ldrb r0, [r6]
+ strb r0, [r1]
+ ldr r0, _0801705C @ =gUnknown_081D964C
+ bl b_call_bc_move_exec
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_08017042:
+ ldr r1, _08017060 @ =0x02000000
+ movs r7, 0xB0
+ lsls r7, 9
+ adds r1, r7
+ b _08017072
+ .align 2, 0
+_0801704C: .4byte gStatuses3
+_08017050: .4byte 0xfffff800
+_08017054: .4byte gBattleMons
+_08017058: .4byte gEffectBank
+_0801705C: .4byte gUnknown_081D964C
+_08017060: .4byte 0x02000000
+_08017064:
+ movs r1, 0xB0
+ lsls r1, 9
+ add r1, r10
+ movs r0, 0
+ strb r0, [r1]
+ ldr r1, _08017084 @ =0x00016001
+_08017070:
+ add r1, r10
+_08017072:
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+_08017078:
+ mov r0, r9
+ cmp r0, 0
+ beq _08017088
+_0801707E:
+ mov r0, r9
+ b _080170B8
+ .align 2, 0
+_08017084: .4byte 0x00016001
+_08017088:
+ ldr r7, _080170C8 @ =0x02000000
+ ldr r2, _080170CC @ =0x00016001
+ adds r0, r7, r2
+ ldr r1, _080170D0 @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ mov r10, r7
+ mov r8, r1
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcs _080170AC
+ movs r3, 0xB0
+ lsls r3, 9
+ adds r0, r7, r3
+ ldrb r0, [r0]
+ cmp r0, 0x13
+ bhi _080170AC
+ bl _08016580
+_080170AC:
+ ldr r0, _080170D4 @ =gHitMarker
+ ldr r1, [r0]
+ ldr r2, _080170D8 @ =0xfeffffdf
+ ands r1, r2
+ str r1, [r0]
+ movs r0, 0
+_080170B8:
+ add sp, 0x8
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080170C8: .4byte 0x02000000
+_080170CC: .4byte 0x00016001
+_080170D0: .4byte gNoOfAllBanks
+_080170D4: .4byte gHitMarker
+_080170D8: .4byte 0xfeffffdf
+ thumb_func_end TurnBasedEffects
+
+ thumb_func_start sub_80170DC
+sub_80170DC: @ 80170DC
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ ldr r2, _08017108 @ =gHitMarker
+ ldr r0, [r2]
+ ldr r1, _0801710C @ =0x01000020
+ orrs r0, r1
+ str r0, [r2]
+ ldr r1, _08017110 @ =0x02000000
+ ldr r3, _08017114 @ =0x00016110
+ adds r0, r1, r3
+ ldrb r0, [r0]
+ mov r8, r1
+ cmp r0, 0
+ beq _08017118
+ cmp r0, 0x1
+ bne _08017104
+ b _08017258
+_08017104:
+ b _08017380
+ .align 2, 0
+_08017108: .4byte gHitMarker
+_0801710C: .4byte 0x01000020
+_08017110: .4byte 0x02000000
+_08017114: .4byte 0x00016110
+_08017118:
+ ldr r2, _0801715C @ =0x00016111
+ add r2, r8
+ ldr r0, _08017160 @ =gNoOfAllBanks
+ ldrb r1, [r2]
+ mov r9, r0
+ ldrb r0, [r0]
+ cmp r1, r0
+ bcc _0801712A
+ b _08017248
+_0801712A:
+ ldr r4, _08017164 @ =gActiveBank
+ adds r5, r2, 0
+ ldr r1, _08017168 @ =gWishFutureKnock
+ mov r12, r1
+ movs r2, 0x8
+ add r2, r12
+ mov r10, r2
+ mov r7, r12
+ adds r7, 0x18
+ ldr r6, _0801716C @ =gBattleTextBuff1
+_0801713E:
+ ldrb r3, [r5]
+ strb r3, [r4]
+ ldr r0, _08017170 @ =gAbsentBankFlags
+ ldrb r1, [r0]
+ ldr r2, _08017174 @ =gBitTable
+ ldrb r0, [r4]
+ lsls r0, 2
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ beq _08017178
+ adds r0, r3, 0x1
+ strb r0, [r5]
+ b _0801723C
+ .align 2, 0
+_0801715C: .4byte 0x00016111
+_08017160: .4byte gNoOfAllBanks
+_08017164: .4byte gActiveBank
+_08017168: .4byte gWishFutureKnock
+_0801716C: .4byte gBattleTextBuff1
+_08017170: .4byte gAbsentBankFlags
+_08017174: .4byte gBitTable
+_08017178:
+ adds r0, r3, 0x1
+ strb r0, [r5]
+ ldr r1, _080171B4 @ =gWishFutureKnock
+ ldrb r0, [r4]
+ adds r1, r0, r1
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _0801723C
+ subs r0, 0x1
+ strb r0, [r1]
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0
+ bne _0801723C
+ ldr r1, _080171B8 @ =gBattleMons
+ ldrb r2, [r4]
+ movs r0, 0x58
+ muls r0, r2
+ adds r0, r1
+ ldrh r0, [r0, 0x28]
+ cmp r0, 0
+ beq _0801723C
+ lsls r0, r2, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ cmp r0, 0xF8
+ bne _080171C0
+ ldr r0, _080171BC @ =gBattleCommunication
+ strb r3, [r0, 0x5]
+ b _080171C6
+ .align 2, 0
+_080171B4: .4byte gWishFutureKnock
+_080171B8: .4byte gBattleMons
+_080171BC: .4byte gBattleCommunication
+_080171C0:
+ ldr r1, _08017220 @ =gBattleCommunication
+ movs r0, 0x1
+ strb r0, [r1, 0x5]
+_080171C6:
+ movs r0, 0xFD
+ strb r0, [r6]
+ movs r0, 0x2
+ strb r0, [r6, 0x1]
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ strb r0, [r6, 0x2]
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ lsrs r0, 8
+ strb r0, [r6, 0x3]
+ movs r0, 0xFF
+ strb r0, [r6, 0x4]
+ ldr r3, _08017224 @ =gBankTarget
+ ldrb r0, [r4]
+ strb r0, [r3]
+ ldr r1, _08017228 @ =gBankAttacker
+ mov r0, r12
+ adds r0, 0x4
+ ldrb r2, [r4]
+ adds r0, r2
+ ldrb r0, [r0]
+ strb r0, [r1]
+ ldr r1, _0801722C @ =gBattleMoveDamage
+ ldrb r0, [r4]
+ lsls r0, 2
+ add r0, r10
+ ldr r0, [r0]
+ str r0, [r1]
+ ldr r2, _08017230 @ =gSpecialStatuses
+ ldrb r1, [r3]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 2
+ adds r2, 0x4
+ adds r0, r2
+ ldr r1, _08017234 @ =0x0000ffff
+ str r1, [r0]
+ ldr r0, _08017238 @ =gUnknown_081D92D7
+ b _08017364
+ .align 2, 0
+_08017220: .4byte gBattleCommunication
+_08017224: .4byte gBankTarget
+_08017228: .4byte gBankAttacker
+_0801722C: .4byte gBattleMoveDamage
+_08017230: .4byte gSpecialStatuses
+_08017234: .4byte 0x0000ffff
+_08017238: .4byte gUnknown_081D92D7
+_0801723C:
+ ldrb r0, [r5]
+ mov r3, r9
+ ldrb r3, [r3]
+ cmp r0, r3
+ bcs _08017248
+ b _0801713E
+_08017248:
+ ldr r1, _0801729C @ =0x00016110
+ add r1, r8
+ movs r2, 0
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r0, _080172A0 @ =0x00016111
+ add r0, r8
+ strb r2, [r0]
+_08017258:
+ ldr r2, _080172A0 @ =0x00016111
+ add r2, r8
+ ldr r0, _080172A4 @ =gNoOfAllBanks
+ ldrb r1, [r2]
+ mov r9, r0
+ ldrb r0, [r0]
+ cmp r1, r0
+ bcc _0801726A
+ b _08017380
+_0801726A:
+ ldr r5, _080172A8 @ =gActiveBank
+ adds r3, r2, 0
+ ldr r4, _080172AC @ =gBattleTextBuff1
+ ldr r7, _080172B0 @ =gDisableStructs
+_08017272:
+ ldr r2, _080172B4 @ =gBankAttacker
+ ldr r1, _080172B8 @ =gTurnOrder
+ ldrb r0, [r3]
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r2]
+ strb r0, [r5]
+ ldr r0, _080172BC @ =gAbsentBankFlags
+ ldrb r1, [r0]
+ ldr r2, _080172C0 @ =gBitTable
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ beq _080172C4
+ ldrb r0, [r3]
+ adds r0, 0x1
+ strb r0, [r3]
+ b _08017374
+ .align 2, 0
+_0801729C: .4byte 0x00016110
+_080172A0: .4byte 0x00016111
+_080172A4: .4byte gNoOfAllBanks
+_080172A8: .4byte gActiveBank
+_080172AC: .4byte gBattleTextBuff1
+_080172B0: .4byte gDisableStructs
+_080172B4: .4byte gBankAttacker
+_080172B8: .4byte gTurnOrder
+_080172BC: .4byte gAbsentBankFlags
+_080172C0: .4byte gBitTable
+_080172C4:
+ ldrb r0, [r3]
+ adds r0, 0x1
+ strb r0, [r3]
+ ldr r6, _08017334 @ =gStatuses3
+ ldrb r2, [r5]
+ lsls r0, r2, 2
+ adds r0, r6
+ ldr r0, [r0]
+ movs r1, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _08017374
+ movs r0, 0xFD
+ strb r0, [r4]
+ movs r0, 0x1
+ strb r0, [r4, 0x1]
+ strb r0, [r4, 0x2]
+ strb r0, [r4, 0x3]
+ lsls r0, r2, 3
+ subs r0, r2
+ lsls r0, 2
+ adds r0, r7
+ ldrb r0, [r0, 0xF]
+ lsls r0, 28
+ lsrs r0, 28
+ strb r0, [r4, 0x4]
+ movs r0, 0xFF
+ strb r0, [r4, 0x5]
+ ldrb r2, [r5]
+ lsls r0, r2, 3
+ subs r0, r2
+ lsls r0, 2
+ adds r4, r0, r7
+ ldrb r3, [r4, 0xF]
+ lsls r1, r3, 28
+ cmp r1, 0
+ bne _08017348
+ lsls r2, 2
+ adds r2, r6
+ ldr r0, [r2]
+ movs r1, 0x21
+ negs r1, r1
+ ands r0, r1
+ str r0, [r2]
+ ldr r3, _08017338 @ =gBattleMoveDamage
+ ldr r2, _0801733C @ =gBattleMons
+ ldrb r1, [r5]
+ movs r0, 0x58
+ muls r0, r1
+ adds r0, r2
+ ldrh r0, [r0, 0x28]
+ str r0, [r3]
+ ldr r1, _08017340 @ =gBattlescriptCurrInstr
+ ldr r0, _08017344 @ =gUnknown_081D9202
+ b _08017360
+ .align 2, 0
+_08017334: .4byte gStatuses3
+_08017338: .4byte gBattleMoveDamage
+_0801733C: .4byte gBattleMons
+_08017340: .4byte gBattlescriptCurrInstr
+_08017344: .4byte gUnknown_081D9202
+_08017348:
+ lsrs r1, 28
+ subs r1, 0x1
+ movs r0, 0xF
+ ands r1, r0
+ movs r2, 0x10
+ negs r2, r2
+ adds r0, r2, 0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r4, 0xF]
+ ldr r1, _0801736C @ =gBattlescriptCurrInstr
+ ldr r0, _08017370 @ =gUnknown_081D921D
+_08017360:
+ str r0, [r1]
+ ldr r0, [r1]
+_08017364:
+ bl b_call_bc_move_exec
+ movs r0, 0x1
+ b _0801738C
+ .align 2, 0
+_0801736C: .4byte gBattlescriptCurrInstr
+_08017370: .4byte gUnknown_081D921D
+_08017374:
+ ldrb r0, [r3]
+ mov r1, r9
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcs _08017380
+ b _08017272
+_08017380:
+ ldr r2, _0801739C @ =gHitMarker
+ ldr r0, [r2]
+ ldr r1, _080173A0 @ =0xfeffffdf
+ ands r0, r1
+ str r0, [r2]
+ movs r0, 0
+_0801738C:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0801739C: .4byte gHitMarker
+_080173A0: .4byte 0xfeffffdf
+ thumb_func_end sub_80170DC
+
+ thumb_func_start sub_80173A4
+sub_80173A4: @ 80173A4
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ ldr r0, _080173C0 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _080173F8
+ b _080176AC
+ .align 2, 0
+_080173C0: .4byte gBattleTypeFlags
+_080173C4:
+ ldr r0, _080173D4 @ =gUnknown_081D8C72
+ bl b_call_bc_move_exec
+ ldr r1, _080173D8 @ =0x00016059
+ add r1, r10
+ movs r0, 0x2
+ b _080173E8
+ .align 2, 0
+_080173D4: .4byte gUnknown_081D8C72
+_080173D8: .4byte 0x00016059
+_080173DC:
+ ldr r0, _080173F0 @ =gUnknown_081D8C7B
+ bl b_call_bc_move_exec
+ ldr r1, _080173F4 @ =0x00016059
+ add r1, r8
+ movs r0, 0x5
+_080173E8:
+ strb r0, [r1]
+_080173EA:
+ movs r0, 0x1
+ b _080176AE
+ .align 2, 0
+_080173F0: .4byte gUnknown_081D8C7B
+_080173F4: .4byte 0x00016059
+_080173F8:
+ ldr r0, _08017414 @ =0x02000000
+ mov r9, r0
+_080173FC:
+ ldr r0, _08017418 @ =0x00016059
+ add r0, r9
+ ldrb r0, [r0]
+ cmp r0, 0x7
+ bls _08017408
+ b _080176A0
+_08017408:
+ lsls r0, 2
+ ldr r1, _0801741C @ =_08017420
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08017414: .4byte 0x02000000
+_08017418: .4byte 0x00016059
+_0801741C: .4byte _08017420
+ .align 2, 0
+_08017420:
+ .4byte _08017440
+ .4byte _08017490
+ .4byte _08017534
+ .4byte _0801757C
+ .4byte _0801758E
+ .4byte _080175FC
+ .4byte _08017638
+ .4byte _080176A0
+_08017440:
+ ldr r1, _08017508 @ =0x0001605a
+ add r1, r9
+ movs r0, 0
+ strb r0, [r1]
+ ldr r1, _0801750C @ =0x00016059
+ add r1, r9
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ movs r5, 0
+ ldr r0, _08017510 @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r5, r0
+ bge _08017490
+ ldr r6, _08017514 @ =gAbsentBankFlags
+_0801745E:
+ ldrb r0, [r6]
+ ldr r2, _08017518 @ =gBitTable
+ lsls r1, r5, 2
+ adds r1, r2
+ ldr r4, [r1]
+ ands r0, r4
+ cmp r0, 0
+ beq _08017486
+ lsls r0, r5, 24
+ lsrs r0, 24
+ movs r1, 0x6
+ movs r2, 0x6
+ bl sub_8018018
+ lsls r0, 24
+ cmp r0, 0
+ bne _08017486
+ ldrb r0, [r6]
+ bics r0, r4
+ strb r0, [r6]
+_08017486:
+ adds r5, 0x1
+ ldr r0, _08017510 @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r5, r0
+ blt _0801745E
+_08017490:
+ ldr r1, _0801751C @ =0x02000000
+ mov r9, r1
+ ldr r0, _08017520 @ =gBank1
+ mov r12, r0
+ ldr r1, _08017524 @ =gBankTarget
+ mov r8, r1
+ mov r10, r9
+ ldr r5, _08017508 @ =0x0001605a
+ add r5, r9
+ ldr r7, _08017528 @ =gBattleMons
+ ldr r6, _0801752C @ =0x00016113
+ add r6, r9
+_080174A8:
+ ldrb r0, [r5]
+ mov r1, r8
+ strb r0, [r1]
+ mov r1, r12
+ strb r0, [r1]
+ ldrb r3, [r5]
+ movs r0, 0x58
+ muls r0, r3
+ adds r0, r7
+ ldrh r0, [r0, 0x28]
+ cmp r0, 0
+ bne _080174EA
+ ldrb r2, [r6]
+ ldr r4, _08017518 @ =gBitTable
+ ldr r1, _08017530 @ =gBattlePartyID
+ lsls r0, r3, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ lsls r0, 2
+ adds r0, r4
+ ldr r0, [r0]
+ ands r2, r0
+ cmp r2, 0
+ bne _080174EA
+ ldr r0, _08017514 @ =gAbsentBankFlags
+ ldrb r1, [r0]
+ lsls r0, r3, 2
+ adds r0, r4
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ bne _080174EA
+ b _080173C4
+_080174EA:
+ ldrb r0, [r5]
+ adds r0, 0x1
+ strb r0, [r5]
+ ldr r1, _08017510 @ =gNoOfAllBanks
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r1]
+ cmp r0, r1
+ bne _080174A8
+ ldr r1, _0801750C @ =0x00016059
+ add r1, r9
+ movs r0, 0x3
+ strb r0, [r1]
+ b _080176A0
+ .align 2, 0
+_08017508: .4byte 0x0001605a
+_0801750C: .4byte 0x00016059
+_08017510: .4byte gNoOfAllBanks
+_08017514: .4byte gAbsentBankFlags
+_08017518: .4byte gBitTable
+_0801751C: .4byte 0x02000000
+_08017520: .4byte gBank1
+_08017524: .4byte gBankTarget
+_08017528: .4byte gBattleMons
+_0801752C: .4byte 0x00016113
+_08017530: .4byte gBattlePartyID
+_08017534:
+ ldr r0, _0801755C @ =gBank1
+ ldrb r0, [r0]
+ bl sub_8015740
+ ldr r2, _08017560 @ =0x02000000
+ ldr r0, _08017564 @ =0x0001605a
+ adds r1, r2, r0
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ ldr r1, _08017568 @ =gNoOfAllBanks
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r1]
+ cmp r0, r1
+ bne _08017570
+ ldr r0, _0801756C @ =0x00016059
+ adds r1, r2, r0
+ movs r0, 0x3
+ b _0801769C
+ .align 2, 0
+_0801755C: .4byte gBank1
+_08017560: .4byte 0x02000000
+_08017564: .4byte 0x0001605a
+_08017568: .4byte gNoOfAllBanks
+_0801756C: .4byte 0x00016059
+_08017570:
+ ldr r0, _08017578 @ =0x00016059
+ adds r1, r2, r0
+ movs r0, 0x1
+ b _0801769C
+ .align 2, 0
+_08017578: .4byte 0x00016059
+_0801757C:
+ ldr r1, _080175D8 @ =0x0001605a
+ add r1, r9
+ movs r0, 0
+ strb r0, [r1]
+ ldr r1, _080175DC @ =0x00016059
+ add r1, r9
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+_0801758E:
+ ldr r7, _080175E0 @ =gBank1
+ ldr r6, _080175E4 @ =gBankTarget
+ ldr r1, _080175E8 @ =0x02000000
+ mov r8, r1
+ ldr r3, _080175D8 @ =0x0001605a
+ add r3, r8
+ ldr r5, _080175EC @ =gBattleMons
+ ldr r4, _080175F0 @ =gBitTable
+_0801759E:
+ ldrb r0, [r3]
+ strb r0, [r6]
+ strb r0, [r7]
+ ldrb r2, [r3]
+ movs r0, 0x58
+ muls r0, r2
+ adds r0, r5
+ ldrh r0, [r0, 0x28]
+ cmp r0, 0
+ bne _080175C4
+ ldr r0, _080175F4 @ =gAbsentBankFlags
+ ldrb r1, [r0]
+ lsls r0, r2, 2
+ adds r0, r4
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ bne _080175C4
+ b _080173DC
+_080175C4:
+ adds r0, r2, 0x1
+ strb r0, [r3]
+ ldr r1, _080175F8 @ =gNoOfAllBanks
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r1]
+ cmp r0, r1
+ bne _0801759E
+ b _08017612
+ .align 2, 0
+_080175D8: .4byte 0x0001605a
+_080175DC: .4byte 0x00016059
+_080175E0: .4byte gBank1
+_080175E4: .4byte gBankTarget
+_080175E8: .4byte 0x02000000
+_080175EC: .4byte gBattleMons
+_080175F0: .4byte gBitTable
+_080175F4: .4byte gAbsentBankFlags
+_080175F8: .4byte gNoOfAllBanks
+_080175FC:
+ ldr r0, _0801761C @ =0x0001605a
+ add r0, r9
+ ldrb r1, [r0]
+ adds r1, 0x1
+ strb r1, [r0]
+ ldr r0, _08017620 @ =gNoOfAllBanks
+ lsls r1, 24
+ lsrs r1, 24
+ ldrb r0, [r0]
+ cmp r1, r0
+ bne _08017628
+_08017612:
+ ldr r1, _08017624 @ =0x00016059
+ add r1, r9
+ movs r0, 0x6
+ strb r0, [r1]
+ b _080176A0
+ .align 2, 0
+_0801761C: .4byte 0x0001605a
+_08017620: .4byte gNoOfAllBanks
+_08017624: .4byte 0x00016059
+_08017628:
+ ldr r1, _08017634 @ =0x00016059
+ add r1, r9
+ movs r0, 0x4
+ strb r0, [r1]
+ b _080176A0
+ .align 2, 0
+_08017634: .4byte 0x00016059
+_08017638:
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x9
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl AbilityBattleEffects
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ beq _08017652
+ b _080173EA
+_08017652:
+ str r0, [sp]
+ movs r0, 0xB
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl AbilityBattleEffects
+ lsls r0, 24
+ cmp r0, 0
+ beq _08017668
+ b _080173EA
+_08017668:
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0x1
+ bl sub_801A02C
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ beq _0801767C
+ b _080173EA
+_0801767C:
+ str r0, [sp]
+ movs r0, 0x6
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl AbilityBattleEffects
+ lsls r0, 24
+ cmp r0, 0
+ beq _08017692
+ b _080173EA
+_08017692:
+ ldr r2, _080176C0 @ =0x02000000
+ ldr r0, _080176C4 @ =0x00016059
+ adds r1, r2, r0
+ ldrb r0, [r1]
+ adds r0, 0x1
+_0801769C:
+ strb r0, [r1]
+ mov r9, r2
+_080176A0:
+ ldr r0, _080176C4 @ =0x00016059
+ add r0, r9
+ ldrb r0, [r0]
+ cmp r0, 0x7
+ beq _080176AC
+ b _080173FC
+_080176AC:
+ movs r0, 0
+_080176AE:
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080176C0: .4byte 0x02000000
+_080176C4: .4byte 0x00016059
+ thumb_func_end sub_80173A4
+
+ thumb_func_start b_clear_atk_up_if_hit_flag_unless_enraged
+b_clear_atk_up_if_hit_flag_unless_enraged: @ 80176C8
+ push {r4-r6,lr}
+ movs r3, 0
+ ldr r0, _08017708 @ =gNoOfAllBanks
+ adds r5, r0, 0
+ ldrb r0, [r5]
+ cmp r3, r0
+ bge _08017700
+ ldr r4, _0801770C @ =gChosenMovesByBanks
+ movs r6, 0x80
+ lsls r6, 16
+ ldr r2, _08017710 @ =gUnknown_02024AD0
+_080176DE:
+ ldr r1, [r2]
+ adds r0, r1, 0
+ ands r0, r6
+ cmp r0, 0
+ beq _080176F4
+ ldrh r0, [r4]
+ cmp r0, 0x63
+ beq _080176F4
+ ldr r0, _08017714 @ =0xff7fffff
+ ands r1, r0
+ str r1, [r2]
+_080176F4:
+ adds r4, 0x2
+ adds r2, 0x58
+ adds r3, 0x1
+ ldrb r0, [r5]
+ cmp r3, r0
+ blt _080176DE
+_08017700:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08017708: .4byte gNoOfAllBanks
+_0801770C: .4byte gChosenMovesByBanks
+_08017710: .4byte gUnknown_02024AD0
+_08017714: .4byte 0xff7fffff
+ thumb_func_end b_clear_atk_up_if_hit_flag_unless_enraged
+
+ thumb_func_start sub_8017718
+sub_8017718: @ 8017718
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x10
+ movs r0, 0
+ mov r9, r0
+ ldr r1, _08017734 @ =0x02016090
+ mov r10, r1
+ ldr r2, _08017738 @ =0xfffe9f70
+ add r2, r10
+ mov r8, r2
+ b _08017746
+ .align 2, 0
+_08017734: .4byte 0x02016090
+_08017738: .4byte 0xfffe9f70
+_0801773C:
+ mov r4, r9
+ cmp r4, 0
+ beq _08017746
+ bl _08017FAC
+_08017746:
+ ldr r0, _08017760 @ =0x000160e7
+ add r0, r8
+ ldrb r0, [r0]
+ cmp r0, 0xE
+ bls _08017754
+ bl _08017F9E
+_08017754:
+ lsls r0, 2
+ ldr r1, _08017764 @ =_08017768
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08017760: .4byte 0x000160e7
+_08017764: .4byte _08017768
+ .align 2, 0
+_08017768:
+ .4byte _080177A4
+ .4byte _080177E4
+ .4byte _08017920
+ .4byte _080179D8
+ .4byte _08017A50
+ .4byte _08017AC8
+ .4byte _08017B1C
+ .4byte _08017B98
+ .4byte _08017C1C
+ .4byte _08017C60
+ .4byte _08017D3C
+ .4byte _08017DC0
+ .4byte _08017E5C
+ .4byte _08017F48
+ .4byte _08017F9E
+_080177A4:
+ ldr r1, _080177D0 @ =gBattleMons
+ ldr r3, _080177D4 @ =gBankAttacker
+ ldrb r2, [r3]
+ movs r0, 0x58
+ muls r2, r0
+ adds r1, 0x50
+ adds r2, r1
+ ldr r0, [r2]
+ ldr r1, _080177D8 @ =0xfdffffff
+ ands r0, r1
+ str r0, [r2]
+ ldr r0, _080177DC @ =gStatuses3
+ ldrb r2, [r3]
+ lsls r2, 2
+ adds r2, r0
+ ldr r0, [r2]
+ ldr r1, _080177E0 @ =0xffffbfff
+ ands r0, r1
+ str r0, [r2]
+ bl _08017F94
+ .align 2, 0
+_080177D0: .4byte gBattleMons
+_080177D4: .4byte gBankAttacker
+_080177D8: .4byte 0xfdffffff
+_080177DC: .4byte gStatuses3
+_080177E0: .4byte 0xffffbfff
+_080177E4:
+ ldr r7, _0801784C @ =gBattleMons
+ ldr r4, _08017850 @ =gBankAttacker
+ ldrb r1, [r4]
+ movs r5, 0x58
+ adds r0, r1, 0
+ muls r0, r5
+ adds r6, r7, 0
+ adds r6, 0x4C
+ adds r0, r6
+ ldr r0, [r0]
+ movs r2, 0x7
+ mov r8, r2
+ ands r0, r2
+ cmp r0, 0
+ bne _08017804
+ b _08017D90
+_08017804:
+ adds r0, r1, 0
+ bl sub_8025A44
+ lsls r0, 24
+ cmp r0, 0
+ beq _08017864
+ ldrb r0, [r4]
+ adds r2, r0, 0
+ muls r2, r5
+ adds r2, r6
+ ldr r0, [r2]
+ movs r1, 0x8
+ negs r1, r1
+ ands r0, r1
+ str r0, [r2]
+ ldrb r0, [r4]
+ adds r2, r0, 0
+ muls r2, r5
+ adds r0, r7, 0
+ adds r0, 0x50
+ adds r2, r0
+ ldr r0, [r2]
+ ldr r1, _08017854 @ =0xf7ffffff
+ ands r0, r1
+ str r0, [r2]
+ bl b_movescr_stack_push_cursor
+ ldr r1, _08017858 @ =gBattleCommunication
+ movs r0, 0x1
+ strb r0, [r1, 0x5]
+ ldr r1, _0801785C @ =gBattlescriptCurrInstr
+ ldr r0, _08017860 @ =gUnknown_081D94FB
+ str r0, [r1]
+ movs r4, 0x2
+ mov r9, r4
+ b _08017D90
+ .align 2, 0
+_0801784C: .4byte gBattleMons
+_08017850: .4byte gBankAttacker
+_08017854: .4byte 0xf7ffffff
+_08017858: .4byte gBattleCommunication
+_0801785C: .4byte gBattlescriptCurrInstr
+_08017860: .4byte gUnknown_081D94FB
+_08017864:
+ ldrb r0, [r4]
+ adds r1, r0, 0
+ muls r1, r5
+ adds r0, r1, r7
+ adds r0, 0x20
+ ldrb r0, [r0]
+ movs r3, 0x1
+ cmp r0, 0x30
+ bne _08017878
+ movs r3, 0x2
+_08017878:
+ adds r2, r1, r6
+ ldr r1, [r2]
+ adds r0, r1, 0
+ mov r7, r8
+ ands r0, r7
+ cmp r0, r3
+ bcs _08017890
+ movs r0, 0x8
+ negs r0, r0
+ ands r1, r0
+ str r1, [r2]
+ b _08017894
+_08017890:
+ subs r0, r1, r3
+ str r0, [r2]
+_08017894:
+ ldr r2, _080178D8 @ =gBattleMons
+ ldr r0, _080178DC @ =gBankAttacker
+ ldrb r1, [r0]
+ movs r0, 0x58
+ muls r1, r0
+ adds r0, r2, 0
+ adds r0, 0x4C
+ adds r0, r1, r0
+ ldr r4, [r0]
+ movs r0, 0x7
+ ands r4, r0
+ cmp r4, 0
+ beq _080178F0
+ ldr r0, _080178E0 @ =gCurrentMove
+ ldrh r0, [r0]
+ cmp r0, 0xAD
+ bne _080178B8
+ b _08017D90
+_080178B8:
+ cmp r0, 0xD6
+ bne _080178BE
+ b _08017D90
+_080178BE:
+ ldr r1, _080178E4 @ =gBattlescriptCurrInstr
+ ldr r0, _080178E8 @ =gUnknown_081D94EE
+ str r0, [r1]
+ ldr r2, _080178EC @ =gHitMarker
+ ldr r0, [r2]
+ movs r1, 0x80
+ lsls r1, 12
+ orrs r0, r1
+ str r0, [r2]
+ movs r0, 0x2
+ mov r9, r0
+ b _08017D90
+ .align 2, 0
+_080178D8: .4byte gBattleMons
+_080178DC: .4byte gBankAttacker
+_080178E0: .4byte gCurrentMove
+_080178E4: .4byte gBattlescriptCurrInstr
+_080178E8: .4byte gUnknown_081D94EE
+_080178EC: .4byte gHitMarker
+_080178F0:
+ adds r2, 0x50
+ adds r2, r1, r2
+ ldr r0, [r2]
+ ldr r1, _08017910 @ =0xf7ffffff
+ ands r0, r1
+ str r0, [r2]
+ bl b_movescr_stack_push_cursor
+ ldr r0, _08017914 @ =gBattleCommunication
+ strb r4, [r0, 0x5]
+ ldr r1, _08017918 @ =gBattlescriptCurrInstr
+ ldr r0, _0801791C @ =gUnknown_081D94FB
+ str r0, [r1]
+ movs r1, 0x2
+ b _08017D8E
+ .align 2, 0
+_08017910: .4byte 0xf7ffffff
+_08017914: .4byte gBattleCommunication
+_08017918: .4byte gBattlescriptCurrInstr
+_0801791C: .4byte gUnknown_081D94FB
+_08017920:
+ ldr r1, _0801797C @ =gBattleMons
+ ldr r7, _08017980 @ =gBankAttacker
+ ldrb r0, [r7]
+ movs r6, 0x58
+ muls r0, r6
+ adds r5, r1, 0
+ adds r5, 0x4C
+ adds r0, r5
+ ldr r0, [r0]
+ movs r1, 0x20
+ ands r0, r1
+ cmp r0, 0
+ bne _0801793C
+ b _08017F94
+_0801793C:
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x5
+ bl __umodsi3
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, 0
+ beq _080179A8
+ ldr r2, _08017984 @ =gBattleMoves
+ ldr r0, _08017988 @ =gCurrentMove
+ ldrh r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0]
+ cmp r0, 0x7D
+ beq _08017998
+ ldr r1, _0801798C @ =gBattlescriptCurrInstr
+ ldr r0, _08017990 @ =gUnknown_081D9545
+ str r0, [r1]
+ ldr r2, _08017994 @ =gHitMarker
+ ldr r0, [r2]
+ movs r1, 0x80
+ lsls r1, 2
+ orrs r0, r1
+ str r0, [r2]
+ b _080179C8
+ .align 2, 0
+_0801797C: .4byte gBattleMons
+_08017980: .4byte gBankAttacker
+_08017984: .4byte gBattleMoves
+_08017988: .4byte gCurrentMove
+_0801798C: .4byte gBattlescriptCurrInstr
+_08017990: .4byte gUnknown_081D9545
+_08017994: .4byte gHitMarker
+_08017998:
+ ldr r2, _080179A0 @ =0x02000000
+ ldr r7, _080179A4 @ =0x000160e7
+ adds r1, r2, r7
+ b _08017D96
+ .align 2, 0
+_080179A0: .4byte 0x02000000
+_080179A4: .4byte 0x000160e7
+_080179A8:
+ ldrb r0, [r7]
+ adds r2, r0, 0
+ muls r2, r6
+ adds r2, r5
+ ldr r0, [r2]
+ movs r1, 0x21
+ negs r1, r1
+ ands r0, r1
+ str r0, [r2]
+ bl b_movescr_stack_push_cursor
+ ldr r1, _080179CC @ =gBattlescriptCurrInstr
+ ldr r0, _080179D0 @ =gUnknown_081D9552
+ str r0, [r1]
+ ldr r0, _080179D4 @ =gBattleCommunication
+ strb r4, [r0, 0x5]
+_080179C8:
+ movs r0, 0x2
+ b _08017E3C
+ .align 2, 0
+_080179CC: .4byte gBattlescriptCurrInstr
+_080179D0: .4byte gUnknown_081D9552
+_080179D4: .4byte gBattleCommunication
+_080179D8:
+ ldr r1, _08017A30 @ =gBattleMons
+ ldr r0, _08017A34 @ =gBankAttacker
+ ldrb r2, [r0]
+ movs r0, 0x58
+ muls r0, r2
+ adds r0, r1
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, 0x36
+ beq _080179EE
+ b _08017D90
+_080179EE:
+ ldr r0, _08017A38 @ =gDisableStructs
+ lsls r1, r2, 3
+ subs r1, r2
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1, 0x18]
+ lsls r0, 31
+ cmp r0, 0
+ bne _08017A02
+ b _08017D90
+_08017A02:
+ adds r0, r2, 0
+ bl CancelMultiTurnMoves
+ ldr r2, _08017A3C @ =gHitMarker
+ ldr r0, [r2]
+ movs r1, 0x80
+ lsls r1, 12
+ orrs r0, r1
+ str r0, [r2]
+ ldr r1, _08017A40 @ =gBattleCommunication
+ movs r0, 0
+ strb r0, [r1, 0x5]
+ ldr r1, _08017A44 @ =gBattlescriptCurrInstr
+ ldr r0, _08017A48 @ =gUnknown_081D9977
+ str r0, [r1]
+ ldr r2, _08017A4C @ =gBattleMoveFlags
+ ldrb r0, [r2]
+ movs r1, 0x1
+ orrs r0, r1
+ strb r0, [r2]
+ movs r2, 0x1
+ mov r9, r2
+ b _08017D90
+ .align 2, 0
+_08017A30: .4byte gBattleMons
+_08017A34: .4byte gBankAttacker
+_08017A38: .4byte gDisableStructs
+_08017A3C: .4byte gHitMarker
+_08017A40: .4byte gBattleCommunication
+_08017A44: .4byte gBattlescriptCurrInstr
+_08017A48: .4byte gUnknown_081D9977
+_08017A4C: .4byte gBattleMoveFlags
+_08017A50:
+ ldr r1, _08017AA4 @ =gBattleMons
+ ldr r3, _08017AA8 @ =gBankAttacker
+ ldrb r2, [r3]
+ movs r0, 0x58
+ muls r0, r2
+ adds r1, 0x50
+ adds r2, r0, r1
+ ldr r1, [r2]
+ movs r0, 0x80
+ lsls r0, 15
+ ands r0, r1
+ cmp r0, 0
+ beq _08017A9C
+ ldr r0, _08017AAC @ =0xffbfffff
+ ands r1, r0
+ str r1, [r2]
+ ldr r2, _08017AB0 @ =gDisableStructs
+ ldrb r1, [r3]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ adds r0, r2
+ movs r1, 0
+ strb r1, [r0, 0x19]
+ ldrb r0, [r3]
+ bl CancelMultiTurnMoves
+ ldr r1, _08017AB4 @ =gBattlescriptCurrInstr
+ ldr r0, _08017AB8 @ =gUnknown_081D7956
+ str r0, [r1]
+ ldr r2, _08017ABC @ =gHitMarker
+ ldr r0, [r2]
+ movs r1, 0x80
+ lsls r1, 12
+ orrs r0, r1
+ str r0, [r2]
+ movs r7, 0x1
+ mov r9, r7
+_08017A9C:
+ ldr r2, _08017AC0 @ =0x02000000
+ ldr r0, _08017AC4 @ =0x000160e7
+ adds r1, r2, r0
+ b _08017D96
+ .align 2, 0
+_08017AA4: .4byte gBattleMons
+_08017AA8: .4byte gBankAttacker
+_08017AAC: .4byte 0xffbfffff
+_08017AB0: .4byte gDisableStructs
+_08017AB4: .4byte gBattlescriptCurrInstr
+_08017AB8: .4byte gUnknown_081D7956
+_08017ABC: .4byte gHitMarker
+_08017AC0: .4byte 0x02000000
+_08017AC4: .4byte 0x000160e7
+_08017AC8:
+ ldr r1, _08017B08 @ =gBattleMons
+ ldr r3, _08017B0C @ =gBankAttacker
+ ldrb r2, [r3]
+ movs r0, 0x58
+ muls r0, r2
+ adds r1, 0x50
+ adds r2, r0, r1
+ ldr r1, [r2]
+ movs r0, 0x8
+ ands r0, r1
+ cmp r0, 0
+ bne _08017AE2
+ b _08017D90
+_08017AE2:
+ movs r0, 0x9
+ negs r0, r0
+ ands r1, r0
+ str r1, [r2]
+ ldr r0, _08017B10 @ =gProtectStructs
+ ldrb r2, [r3]
+ lsls r2, 4
+ adds r2, r0
+ ldrb r0, [r2, 0x2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2, 0x2]
+ ldrb r0, [r3]
+ bl CancelMultiTurnMoves
+ ldr r1, _08017B14 @ =gBattlescriptCurrInstr
+ ldr r0, _08017B18 @ =gUnknown_081D9573
+ b _08017D7E
+ .align 2, 0
+_08017B08: .4byte gBattleMons
+_08017B0C: .4byte gBankAttacker
+_08017B10: .4byte gProtectStructs
+_08017B14: .4byte gBattlescriptCurrInstr
+_08017B18: .4byte gUnknown_081D9573
+_08017B1C:
+ ldr r0, _08017B74 @ =gDisableStructs
+ ldr r3, _08017B78 @ =gBankAttacker
+ ldrb r2, [r3]
+ lsls r1, r2, 3
+ subs r1, r2
+ lsls r1, 2
+ adds r1, r0
+ ldr r0, _08017B7C @ =gCurrentMove
+ ldrh r1, [r1, 0x4]
+ ldrh r0, [r0]
+ cmp r1, r0
+ beq _08017B36
+ b _08017D90
+_08017B36:
+ cmp r1, 0
+ bne _08017B3C
+ b _08017D90
+_08017B3C:
+ ldr r0, _08017B80 @ =gProtectStructs
+ lsls r2, 4
+ adds r2, r0
+ ldrb r0, [r2, 0x1]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2, 0x1]
+ ldr r0, _08017B84 @ =0x02000000
+ ldrb r1, [r3]
+ ldr r7, _08017B88 @ =0x00016003
+ adds r0, r7
+ strb r1, [r0]
+ ldrb r0, [r3]
+ bl CancelMultiTurnMoves
+ ldr r1, _08017B8C @ =gBattlescriptCurrInstr
+ ldr r0, _08017B90 @ =gUnknown_081D9139
+ str r0, [r1]
+ ldr r2, _08017B94 @ =gHitMarker
+ ldr r0, [r2]
+ movs r1, 0x80
+ lsls r1, 12
+ orrs r0, r1
+ str r0, [r2]
+ movs r0, 0x1
+ mov r9, r0
+ b _08017D90
+ .align 2, 0
+_08017B74: .4byte gDisableStructs
+_08017B78: .4byte gBankAttacker
+_08017B7C: .4byte gCurrentMove
+_08017B80: .4byte gProtectStructs
+_08017B84: .4byte 0x02000000
+_08017B88: .4byte 0x00016003
+_08017B8C: .4byte gBattlescriptCurrInstr
+_08017B90: .4byte gUnknown_081D9139
+_08017B94: .4byte gHitMarker
+_08017B98:
+ ldr r0, _08017BF4 @ =gDisableStructs
+ ldr r4, _08017BF8 @ =gBankAttacker
+ ldrb r3, [r4]
+ lsls r1, r3, 3
+ subs r1, r3
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1, 0x13]
+ lsls r0, 28
+ cmp r0, 0
+ beq _08017BEC
+ ldr r2, _08017BFC @ =gBattleMoves
+ ldr r0, _08017C00 @ =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 _08017BEC
+ ldr r0, _08017C04 @ =gProtectStructs
+ lsls r2, r3, 4
+ adds r2, r0
+ ldrb r0, [r2, 0x2]
+ movs r1, 0x1
+ orrs r0, r1
+ strb r0, [r2, 0x2]
+ ldrb r0, [r4]
+ bl CancelMultiTurnMoves
+ ldr r1, _08017C08 @ =gBattlescriptCurrInstr
+ ldr r0, _08017C0C @ =gUnknown_081D938F
+ str r0, [r1]
+ ldr r2, _08017C10 @ =gHitMarker
+ ldr r0, [r2]
+ movs r1, 0x80
+ lsls r1, 12
+ orrs r0, r1
+ str r0, [r2]
+ movs r7, 0x1
+ mov r9, r7
+_08017BEC:
+ ldr r2, _08017C14 @ =0x02000000
+ ldr r0, _08017C18 @ =0x000160e7
+ adds r1, r2, r0
+ b _08017D96
+ .align 2, 0
+_08017BF4: .4byte gDisableStructs
+_08017BF8: .4byte gBankAttacker
+_08017BFC: .4byte gBattleMoves
+_08017C00: .4byte gCurrentMove
+_08017C04: .4byte gProtectStructs
+_08017C08: .4byte gBattlescriptCurrInstr
+_08017C0C: .4byte gUnknown_081D938F
+_08017C10: .4byte gHitMarker
+_08017C14: .4byte 0x02000000
+_08017C18: .4byte 0x000160e7
+_08017C1C:
+ ldr r4, _08017C4C @ =gBankAttacker
+ ldrb r0, [r4]
+ ldr r1, _08017C50 @ =gCurrentMove
+ ldrh r1, [r1]
+ bl sub_8015D5C
+ lsls r0, 24
+ cmp r0, 0
+ bne _08017C30
+ b _08017D90
+_08017C30:
+ ldr r0, _08017C54 @ =gProtectStructs
+ ldrb r2, [r4]
+ lsls r2, 4
+ adds r2, r0
+ ldrb r0, [r2, 0x1]
+ movs r1, 0x20
+ orrs r0, r1
+ strb r0, [r2, 0x1]
+ ldrb r0, [r4]
+ bl CancelMultiTurnMoves
+ ldr r1, _08017C58 @ =gBattlescriptCurrInstr
+ ldr r0, _08017C5C @ =gUnknown_081D9459
+ b _08017D7E
+ .align 2, 0
+_08017C4C: .4byte gBankAttacker
+_08017C50: .4byte gCurrentMove
+_08017C54: .4byte gProtectStructs
+_08017C58: .4byte gBattlescriptCurrInstr
+_08017C5C: .4byte gUnknown_081D9459
+_08017C60:
+ ldr r7, _08017CAC @ =gBattleMons
+ ldr r5, _08017CB0 @ =gBankAttacker
+ ldrb r0, [r5]
+ movs r6, 0x58
+ muls r0, r6
+ adds r4, r7, 0
+ adds r4, 0x50
+ adds r2, r0, r4
+ ldr r1, [r2]
+ movs r3, 0x7
+ adds r0, r1, 0
+ ands r0, r3
+ cmp r0, 0
+ bne _08017C7E
+ b _08017F94
+_08017C7E:
+ subs r0, r1, 0x1
+ str r0, [r2]
+ ldrb r0, [r5]
+ muls r0, r6
+ adds r0, r4
+ ldr r0, [r0]
+ ands r0, r3
+ cmp r0, 0
+ beq _08017D24
+ bl Random
+ movs r1, 0x1
+ movs r2, 0x1
+ ands r2, r0
+ cmp r2, 0
+ beq _08017CB8
+ ldr r1, _08017CB4 @ =gBattleCommunication
+ movs r0, 0
+ strb r0, [r1, 0x5]
+ bl b_movescr_stack_push_cursor
+ b _08017D02
+ .align 2, 0
+_08017CAC: .4byte gBattleMons
+_08017CB0: .4byte gBankAttacker
+_08017CB4: .4byte gBattleCommunication
+_08017CB8:
+ ldr r0, _08017D08 @ =gBattleCommunication
+ movs r4, 0x1
+ strb r1, [r0, 0x5]
+ ldr r1, _08017D0C @ =gBankTarget
+ ldrb r0, [r5]
+ strb r0, [r1]
+ ldrb r0, [r5]
+ adds r1, r0, 0
+ muls r1, r6
+ adds r1, r7
+ movs r0, 0x28
+ str r0, [sp]
+ str r2, [sp, 0x4]
+ ldrb r0, [r5]
+ str r0, [sp, 0x8]
+ ldrb r0, [r5]
+ str r0, [sp, 0xC]
+ adds r0, r1, 0
+ movs r2, 0x1
+ movs r3, 0
+ bl CalculateBaseDamage
+ ldr r1, _08017D10 @ =gBattleMoveDamage
+ str r0, [r1]
+ ldr r0, _08017D14 @ =gProtectStructs
+ ldrb r1, [r5]
+ lsls r1, 4
+ adds r1, r0
+ ldrb r0, [r1, 0x1]
+ orrs r0, r4
+ strb r0, [r1, 0x1]
+ ldr r2, _08017D18 @ =gHitMarker
+ ldr r0, [r2]
+ movs r1, 0x80
+ lsls r1, 12
+ orrs r0, r1
+ str r0, [r2]
+_08017D02:
+ ldr r1, _08017D1C @ =gBattlescriptCurrInstr
+ ldr r0, _08017D20 @ =gUnknown_081D9595
+ b _08017D2C
+ .align 2, 0
+_08017D08: .4byte gBattleCommunication
+_08017D0C: .4byte gBankTarget
+_08017D10: .4byte gBattleMoveDamage
+_08017D14: .4byte gProtectStructs
+_08017D18: .4byte gHitMarker
+_08017D1C: .4byte gBattlescriptCurrInstr
+_08017D20: .4byte gUnknown_081D9595
+_08017D24:
+ bl b_movescr_stack_push_cursor
+ ldr r1, _08017D34 @ =gBattlescriptCurrInstr
+ ldr r0, _08017D38 @ =gUnknown_081D95D4
+_08017D2C:
+ str r0, [r1]
+ movs r7, 0x1
+ b _08017F8E
+ .align 2, 0
+_08017D34: .4byte gBattlescriptCurrInstr
+_08017D38: .4byte gUnknown_081D95D4
+_08017D3C:
+ ldr r1, _08017DA0 @ =gBattleMons
+ ldr r4, _08017DA4 @ =gBankAttacker
+ ldrb r2, [r4]
+ movs r0, 0x58
+ muls r0, r2
+ adds r1, 0x4C
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _08017D90
+ bl Random
+ lsls r0, 16
+ movs r1, 0xC0
+ lsls r1, 10
+ ands r1, r0
+ cmp r1, 0
+ bne _08017D90
+ ldr r0, _08017DA8 @ =gProtectStructs
+ ldrb r2, [r4]
+ lsls r2, 4
+ adds r2, r0
+ ldrb r0, [r2]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2]
+ ldrb r0, [r4]
+ bl CancelMultiTurnMoves
+ ldr r1, _08017DAC @ =gBattlescriptCurrInstr
+ ldr r0, _08017DB0 @ =gUnknown_081D9566
+_08017D7E:
+ str r0, [r1]
+ ldr r2, _08017DB4 @ =gHitMarker
+ ldr r0, [r2]
+ movs r1, 0x80
+ lsls r1, 12
+ orrs r0, r1
+ str r0, [r2]
+ movs r1, 0x1
+_08017D8E:
+ mov r9, r1
+_08017D90:
+ ldr r2, _08017DB8 @ =0x02000000
+ ldr r4, _08017DBC @ =0x000160e7
+ adds r1, r2, r4
+_08017D96:
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ mov r8, r2
+ b _08017F9E
+ .align 2, 0
+_08017DA0: .4byte gBattleMons
+_08017DA4: .4byte gBankAttacker
+_08017DA8: .4byte gProtectStructs
+_08017DAC: .4byte gBattlescriptCurrInstr
+_08017DB0: .4byte gUnknown_081D9566
+_08017DB4: .4byte gHitMarker
+_08017DB8: .4byte 0x02000000
+_08017DBC: .4byte 0x000160e7
+_08017DC0:
+ ldr r1, _08017DFC @ =gBattleMons
+ ldr r4, _08017E00 @ =gBankAttacker
+ ldrb r2, [r4]
+ movs r0, 0x58
+ muls r0, r2
+ adds r1, 0x50
+ adds r0, r1
+ ldr r1, [r0]
+ movs r0, 0xF0
+ lsls r0, 12
+ ands r1, r0
+ cmp r1, 0
+ bne _08017DDC
+ b _08017F94
+_08017DDC:
+ lsrs r0, r1, 16
+ bl CountTrailingZeroBits
+ ldr r1, _08017E04 @ =0x02000000
+ ldr r7, _08017E08 @ =0x00016003
+ adds r1, r7
+ strb r0, [r1]
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ cmp r1, 0
+ beq _08017E0C
+ bl b_movescr_stack_push_cursor
+ b _08017E34
+ .align 2, 0
+_08017DFC: .4byte gBattleMons
+_08017E00: .4byte gBankAttacker
+_08017E04: .4byte 0x02000000
+_08017E08: .4byte 0x00016003
+_08017E0C:
+ ldr r0, _08017E44 @ =gUnknown_081D9608
+ bl b_movescr_stack_push
+ ldr r2, _08017E48 @ =gHitMarker
+ ldr r0, [r2]
+ movs r1, 0x80
+ lsls r1, 12
+ orrs r0, r1
+ str r0, [r2]
+ ldr r0, _08017E4C @ =gProtectStructs
+ ldrb r2, [r4]
+ lsls r2, 4
+ adds r2, r0
+ ldrb r0, [r2, 0x1]
+ movs r1, 0x40
+ orrs r0, r1
+ strb r0, [r2, 0x1]
+ ldrb r0, [r4]
+ bl CancelMultiTurnMoves
+_08017E34:
+ ldr r1, _08017E50 @ =gBattlescriptCurrInstr
+ ldr r0, _08017E54 @ =gUnknown_081D95FB
+ str r0, [r1]
+ movs r0, 0x1
+_08017E3C:
+ mov r9, r0
+ ldr r1, _08017E58 @ =0x02000000
+ mov r8, r1
+ b _08017F94
+ .align 2, 0
+_08017E44: .4byte gUnknown_081D9608
+_08017E48: .4byte gHitMarker
+_08017E4C: .4byte gProtectStructs
+_08017E50: .4byte gBattlescriptCurrInstr
+_08017E54: .4byte gUnknown_081D95FB
+_08017E58: .4byte 0x02000000
+_08017E5C:
+ ldr r1, _08017E98 @ =gBattleMons
+ ldr r6, _08017E9C @ =gBankAttacker
+ ldrb r0, [r6]
+ movs r5, 0x58
+ muls r0, r5
+ adds r1, 0x50
+ adds r3, r0, r1
+ ldr r2, [r3]
+ movs r4, 0xC0
+ lsls r4, 2
+ adds r0, r2, 0
+ ands r0, r4
+ cmp r0, 0
+ bne _08017E7A
+ b _08017F94
+_08017E7A:
+ ldr r7, _08017EA0 @ =0xffffff00
+ adds r0, r2, r7
+ str r0, [r3]
+ ldrb r0, [r6]
+ muls r0, r5
+ adds r1, r0, r1
+ ldr r2, [r1]
+ adds r0, r2, 0
+ ands r0, r4
+ cmp r0, 0
+ beq _08017EAC
+ ldr r1, _08017EA4 @ =gBattlescriptCurrInstr
+ ldr r0, _08017EA8 @ =gUnknown_081D90A7
+ b _08017F38
+ .align 2, 0
+_08017E98: .4byte gBattleMons
+_08017E9C: .4byte gBankAttacker
+_08017EA0: .4byte 0xffffff00
+_08017EA4: .4byte gBattlescriptCurrInstr
+_08017EA8: .4byte gUnknown_081D90A7
+_08017EAC:
+ ldr r0, _08017F0C @ =0xffffefff
+ ands r2, r0
+ str r2, [r1]
+ ldr r2, _08017F10 @ =gTakenDmg
+ ldrb r0, [r6]
+ lsls r0, 2
+ adds r0, r2
+ ldr r0, [r0]
+ cmp r0, 0
+ beq _08017F34
+ ldr r1, _08017F14 @ =gCurrentMove
+ movs r0, 0x75
+ strh r0, [r1]
+ ldrb r0, [r6]
+ lsls r0, 2
+ adds r0, r2
+ ldr r0, [r0]
+ lsls r0, 1
+ mov r1, r10
+ str r0, [r1]
+ ldr r4, _08017F18 @ =gBankTarget
+ ldr r1, _08017F1C @ =gTakenDmgBanks
+ ldrb r0, [r6]
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r4]
+ ldr r0, _08017F20 @ =gAbsentBankFlags
+ ldrb r1, [r0]
+ ldr r2, _08017F24 @ =gBitTable
+ ldrb r0, [r4]
+ lsls r0, 2
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ beq _08017EFE
+ movs r0, 0x75
+ movs r1, 0x1
+ bl sub_801B5C0
+ strb r0, [r4]
+_08017EFE:
+ ldr r1, _08017F28 @ =gBattlescriptCurrInstr
+ ldr r0, _08017F2C @ =gUnknown_081D90B2
+ str r0, [r1]
+ ldr r2, _08017F30 @ =0x02000000
+ mov r8, r2
+ b _08017F3A
+ .align 2, 0
+_08017F0C: .4byte 0xffffefff
+_08017F10: .4byte gTakenDmg
+_08017F14: .4byte gCurrentMove
+_08017F18: .4byte gBankTarget
+_08017F1C: .4byte gTakenDmgBanks
+_08017F20: .4byte gAbsentBankFlags
+_08017F24: .4byte gBitTable
+_08017F28: .4byte gBattlescriptCurrInstr
+_08017F2C: .4byte gUnknown_081D90B2
+_08017F30: .4byte 0x02000000
+_08017F34:
+ ldr r1, _08017F40 @ =gBattlescriptCurrInstr
+ ldr r0, _08017F44 @ =gUnknown_081D90F1
+_08017F38:
+ str r0, [r1]
+_08017F3A:
+ movs r4, 0x1
+ mov r9, r4
+ b _08017F94
+ .align 2, 0
+_08017F40: .4byte gBattlescriptCurrInstr
+_08017F44: .4byte gUnknown_081D90F1
+_08017F48:
+ ldr r1, _08017FEC @ =gBattleMons
+ ldr r0, _08017FF0 @ =gBankAttacker
+ ldrb r2, [r0]
+ movs r0, 0x58
+ muls r0, r2
+ adds r1, 0x4C
+ adds r4, r0, r1
+ ldr r3, [r4]
+ movs r0, 0x20
+ ands r0, r3
+ cmp r0, 0
+ beq _08017F94
+ ldr r2, _08017FF4 @ =gBattleMoves
+ ldr r0, _08017FF8 @ =gCurrentMove
+ ldrh r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0]
+ cmp r0, 0x7D
+ bne _08017F8C
+ movs r0, 0x21
+ negs r0, r0
+ ands r3, r0
+ str r3, [r4]
+ bl b_movescr_stack_push_cursor
+ ldr r1, _08017FFC @ =gBattlescriptCurrInstr
+ ldr r0, _08018000 @ =gUnknown_081D9552
+ str r0, [r1]
+ ldr r1, _08018004 @ =gBattleCommunication
+ movs r0, 0x1
+ strb r0, [r1, 0x5]
+_08017F8C:
+ movs r7, 0x2
+_08017F8E:
+ mov r9, r7
+ ldr r0, _08018008 @ =0x02000000
+ mov r8, r0
+_08017F94:
+ ldr r1, _0801800C @ =0x000160e7
+ add r1, r8
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+_08017F9E:
+ ldr r0, _0801800C @ =0x000160e7
+ add r0, r8
+ ldrb r0, [r0]
+ cmp r0, 0xE
+ beq _08017FAC
+ bl _0801773C
+_08017FAC:
+ mov r1, r9
+ cmp r1, 0x2
+ bne _08017FD8
+ ldr r4, _08018010 @ =gActiveBank
+ ldr r0, _08017FF0 @ =gBankAttacker
+ ldrb r0, [r0]
+ strb r0, [r4]
+ ldrb r1, [r4]
+ movs r0, 0x58
+ muls r0, r1
+ ldr r1, _08018014 @ =gUnknown_02024ACC
+ adds r0, r1
+ str r0, [sp]
+ movs r0, 0
+ movs r1, 0x28
+ movs r2, 0
+ movs r3, 0x4
+ bl EmitSetAttributes
+ ldrb r0, [r4]
+ bl MarkBufferBankForExecution
+_08017FD8:
+ mov r0, r9
+ 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
+_08017FEC: .4byte gBattleMons
+_08017FF0: .4byte gBankAttacker
+_08017FF4: .4byte gBattleMoves
+_08017FF8: .4byte gCurrentMove
+_08017FFC: .4byte gBattlescriptCurrInstr
+_08018000: .4byte gUnknown_081D9552
+_08018004: .4byte gBattleCommunication
+_08018008: .4byte 0x02000000
+_0801800C: .4byte 0x000160e7
+_08018010: .4byte gActiveBank
+_08018014: .4byte gUnknown_02024ACC
+ thumb_func_end sub_8017718
+
+ thumb_func_start sub_8018018
+sub_8018018: @ 8018018
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r3, r4, 0
+ lsls r1, 24
+ lsrs r1, 24
+ mov r10, r1
+ lsls r2, 24
+ lsrs r2, 24
+ mov r9, r2
+ ldr r0, _08018044 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _08018048
+ movs r0, 0
+ b _08018198
+ .align 2, 0
+_08018044: .4byte gBattleTypeFlags
+_08018048:
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _080180D4
+ adds r0, r4, 0
+ bl sub_803FC34
+ lsls r0, 24
+ lsrs r7, r0, 24
+ adds r0, r4, 0
+ bl GetBankSide
+ lsls r0, 24
+ ldr r1, _080180CC @ =gEnemyParty
+ mov r8, r1
+ cmp r0, 0
+ bne _0801806E
+ ldr r2, _080180D0 @ =gPlayerParty
+ mov r8, r2
+_0801806E:
+ adds r0, r7, 0
+ bl sub_803FBFC
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r0, r6, 1
+ adds r5, r0, r6
+ adds r0, r5, 0x3
+ cmp r5, r0
+ bge _080180BA
+ adds r7, r0, 0
+_08018084:
+ 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 _080180B4
+ adds r0, r4, 0
+ movs r1, 0x41
+ bl GetMonData
+ cmp r0, 0
+ beq _080180B4
+ adds r0, r4, 0
+ movs r1, 0x41
+ bl GetMonData
+ movs r1, 0xCE
+ lsls r1, 1
+ cmp r0, r1
+ bne _080180BA
+_080180B4:
+ adds r5, 0x1
+ cmp r5, r7
+ blt _08018084
+_080180BA:
+ movs r1, 0
+ lsls r0, r6, 1
+ adds r0, r6
+ adds r0, 0x3
+ cmp r5, r0
+ bne _080180C8
+ movs r1, 0x1
+_080180C8:
+ adds r0, r1, 0
+ b _08018198
+ .align 2, 0
+_080180CC: .4byte gEnemyParty
+_080180D0: .4byte gPlayerParty
+_080180D4:
+ adds r0, r3, 0
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08018100
+ movs r0, 0x1
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r7, r0, 24
+ movs r0, 0x3
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r2, _080180FC @ =gEnemyParty
+ mov r8, r2
+ b _08018118
+ .align 2, 0
+_080180FC: .4byte gEnemyParty
+_08018100:
+ movs r0, 0
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r7, r0, 24
+ movs r0, 0x2
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r0, _080181A8 @ =gPlayerParty
+ mov r8, r0
+_08018118:
+ mov r1, r10
+ cmp r1, 0x6
+ bne _08018128
+ ldr r1, _080181AC @ =gBattlePartyID
+ lsls r0, r7, 1
+ adds r0, r1
+ ldrb r0, [r0]
+ mov r10, r0
+_08018128:
+ mov r2, r9
+ cmp r2, 0x6
+ bne _08018138
+ ldr r1, _080181AC @ =gBattlePartyID
+ lsls r0, r6, 1
+ adds r0, r1
+ ldrb r0, [r0]
+ mov r9, r0
+_08018138:
+ movs r5, 0
+_0801813A:
+ 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 _0801818A
+ adds r0, r4, 0
+ movs r1, 0x41
+ bl GetMonData
+ cmp r0, 0
+ beq _0801818A
+ adds r0, r4, 0
+ movs r1, 0x41
+ bl GetMonData
+ movs r1, 0xCE
+ lsls r1, 1
+ cmp r0, r1
+ beq _0801818A
+ cmp r5, r10
+ beq _0801818A
+ cmp r5, r9
+ beq _0801818A
+ ldr r1, _080181B0 @ =0x02000000
+ ldr r2, _080181B4 @ =0x00016068
+ adds r0, r7, r2
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r5, r0
+ beq _0801818A
+ adds r0, r6, r2
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r5, r0
+ bne _08018190
+_0801818A:
+ adds r5, 0x1
+ cmp r5, 0x5
+ ble _0801813A
+_08018190:
+ movs r0, 0
+ cmp r5, 0x6
+ bne _08018198
+ movs r0, 0x1
+_08018198:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080181A8: .4byte gPlayerParty
+_080181AC: .4byte gBattlePartyID
+_080181B0: .4byte 0x02000000
+_080181B4: .4byte 0x00016068
+ thumb_func_end sub_8018018
+
+ thumb_func_start castform_switch
+castform_switch: @ 80181B8
+ push {r4-r6,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r5, 0
+ ldr r1, _08018228 @ =gBattleMons
+ movs r0, 0x58
+ muls r0, r6
+ adds r4, r0, r1
+ ldrh r1, [r4]
+ ldr r0, _0801822C @ =SPECIES_CASTFORM
+ cmp r1, r0
+ bne _0801825C
+ adds r0, r4, 0
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, 0x3B
+ bne _0801825C
+ ldrh r0, [r4, 0x28]
+ cmp r0, 0
+ beq _0801825C
+ str r5, [sp]
+ movs r0, 0x13
+ movs r1, 0
+ movs r2, 0xD
+ movs r3, 0
+ bl AbilityBattleEffects
+ lsls r0, 24
+ cmp r0, 0
+ bne _0801820A
+ str r5, [sp]
+ movs r0, 0x13
+ movs r1, 0
+ movs r2, 0x4D
+ movs r3, 0
+ bl AbilityBattleEffects
+ lsls r0, 24
+ cmp r0, 0
+ beq _08018230
+_0801820A:
+ adds r2, r4, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0
+ beq _08018230
+ adds r1, r4, 0
+ adds r1, 0x22
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _08018230
+ strb r5, [r2]
+ strb r5, [r1]
+ movs r0, 0x1
+ b _08018314
+ .align 2, 0
+_08018228: .4byte gBattleMons
+_0801822C: .4byte SPECIES_CASTFORM
+_08018230:
+ 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 _0801825C
+ str r0, [sp]
+ movs r0, 0x13
+ movs r1, 0
+ movs r2, 0x4D
+ movs r3, 0
+ bl AbilityBattleEffects
+ lsls r0, 24
+ cmp r0, 0
+ beq _08018260
+_0801825C:
+ movs r0, 0
+ b _08018314
+_08018260:
+ ldr r1, _0801831C @ =gBattleWeather
+ ldrh r0, [r1]
+ movs r2, 0xE7
+ ands r2, r0
+ adds r4, r1, 0
+ cmp r2, 0
+ bne _0801828E
+ ldr r1, _08018320 @ =gBattleMons
+ movs r0, 0x58
+ muls r0, r6
+ adds r1, r0, r1
+ adds r3, r1, 0
+ adds r3, 0x21
+ ldrb r0, [r3]
+ cmp r0, 0
+ beq _0801828E
+ adds r1, 0x22
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _0801828E
+ strb r2, [r3]
+ strb r2, [r1]
+ movs r5, 0x1
+_0801828E:
+ ldrh r1, [r4]
+ movs r0, 0x60
+ ands r0, r1
+ cmp r0, 0
+ beq _080182BA
+ ldr r1, _08018320 @ =gBattleMons
+ movs r0, 0x58
+ muls r0, r6
+ adds r1, r0, r1
+ adds r2, r1, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0xA
+ beq _080182BA
+ adds r1, 0x22
+ ldrb r0, [r1]
+ cmp r0, 0xA
+ beq _080182BA
+ movs r0, 0xA
+ strb r0, [r2]
+ strb r0, [r1]
+ movs r5, 0x2
+_080182BA:
+ ldrh r1, [r4]
+ movs r0, 0x7
+ ands r0, r1
+ cmp r0, 0
+ beq _080182E6
+ ldr r1, _08018320 @ =gBattleMons
+ movs r0, 0x58
+ muls r0, r6
+ adds r1, r0, r1
+ adds r2, r1, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0xB
+ beq _080182E6
+ adds r1, 0x22
+ ldrb r0, [r1]
+ cmp r0, 0xB
+ beq _080182E6
+ movs r0, 0xB
+ strb r0, [r2]
+ strb r0, [r1]
+ movs r5, 0x3
+_080182E6:
+ ldrh r1, [r4]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _08018312
+ ldr r1, _08018320 @ =gBattleMons
+ movs r0, 0x58
+ muls r0, r6
+ adds r1, r0, r1
+ adds r2, r1, 0
+ adds r2, 0x21
+ ldrb r0, [r2]
+ cmp r0, 0xF
+ beq _08018312
+ adds r1, 0x22
+ ldrb r0, [r1]
+ cmp r0, 0xF
+ beq _08018312
+ movs r0, 0xF
+ strb r0, [r2]
+ strb r0, [r1]
+ movs r5, 0x4
+_08018312:
+ adds r0, r5, 0
+_08018314:
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0801831C: .4byte gBattleWeather
+_08018320: .4byte gBattleMons
+ thumb_func_end castform_switch
+
+ thumb_func_start AbilityBattleEffects
+AbilityBattleEffects: @ 8018324
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x28
+ ldr r4, [sp, 0x48]
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x4]
+ lsls r1, 24
+ lsrs r1, 24
+ mov r10, r1
+ lsls r2, 24
+ lsrs r6, r2, 24
+ lsls r3, 24
+ lsrs r3, 24
+ mov r8, r3
+ lsls r4, 16
+ lsrs r4, 16
+ movs r0, 0
+ mov r9, r0
+ ldr r5, _08018380 @ =gBankAttacker
+ ldr r1, _08018384 @ =gNoOfAllBanks
+ ldrb r0, [r5]
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _08018360
+ mov r1, r10
+ strb r1, [r5]
+_08018360:
+ ldrb r0, [r5]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _08018390
+ ldr r1, _08018388 @ =gBattlePartyID
+ ldrb r0, [r5]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r1, r0
+ ldr r0, _0801838C @ =gPlayerParty
+ b _080183A0
+ .align 2, 0
+_08018380: .4byte gBankAttacker
+_08018384: .4byte gNoOfAllBanks
+_08018388: .4byte gBattlePartyID
+_0801838C: .4byte gPlayerParty
+_08018390:
+ ldr r1, _080183D0 @ =gBattlePartyID
+ ldrb r0, [r5]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r1, r0
+ ldr r0, _080183D4 @ =gEnemyParty
+_080183A0:
+ adds r7, r1, r0
+ ldr r5, _080183D8 @ =gBankTarget
+ ldr r1, _080183DC @ =gNoOfAllBanks
+ ldrb r0, [r5]
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _080183B2
+ mov r2, r10
+ strb r2, [r5]
+_080183B2:
+ ldrb r0, [r5]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080183E4
+ ldr r1, _080183D0 @ =gBattlePartyID
+ ldrb r0, [r5]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r1, r0
+ ldr r0, _080183E0 @ =gPlayerParty
+ b _080183F4
+ .align 2, 0
+_080183D0: .4byte gBattlePartyID
+_080183D4: .4byte gEnemyParty
+_080183D8: .4byte gBankTarget
+_080183DC: .4byte gNoOfAllBanks
+_080183E0: .4byte gPlayerParty
+_080183E4:
+ ldr r1, _08018444 @ =gBattlePartyID
+ ldrb r0, [r5]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r1, r0
+ ldr r0, _08018448 @ =gEnemyParty
+_080183F4:
+ adds r5, r1, r0
+ adds r0, r7, 0
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r0, 16
+ str r0, [sp, 0x8]
+ adds r0, r7, 0
+ movs r1, 0
+ bl GetMonData
+ str r0, [sp, 0x10]
+ adds r0, r5, 0
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r0, 16
+ str r0, [sp, 0xC]
+ adds r0, r5, 0
+ movs r1, 0
+ bl GetMonData
+ str r0, [sp, 0x14]
+ ldr r0, _0801844C @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _08018436
+ bl _08019F92
+_08018436:
+ mov r3, r8
+ cmp r3, 0
+ beq _08018454
+ ldr r0, _08018450 @ =gLastUsedAbility
+ strb r3, [r0]
+ mov r8, r0
+ b _0801846A
+ .align 2, 0
+_08018444: .4byte gBattlePartyID
+_08018448: .4byte gEnemyParty
+_0801844C: .4byte gBattleTypeFlags
+_08018450: .4byte gLastUsedAbility
+_08018454:
+ ldr r2, _08018474 @ =gLastUsedAbility
+ ldr r1, _08018478 @ =gBattleMons
+ movs r0, 0x58
+ mov r5, r10
+ muls r5, r0
+ adds r0, r5, 0
+ adds r0, r1
+ adds r0, 0x20
+ ldrb r0, [r0]
+ strb r0, [r2]
+ mov r8, r2
+_0801846A:
+ cmp r4, 0
+ beq _0801847C
+ adds r3, r4, 0
+ b _08018480
+ .align 2, 0
+_08018474: .4byte gLastUsedAbility
+_08018478: .4byte gBattleMons
+_0801847C:
+ ldr r0, _08018494 @ =gCurrentMove
+ ldrh r3, [r0]
+_08018480:
+ ldr r1, _08018498 @ =0x02000000
+ ldr r2, _0801849C @ =0x0001601c
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ adds r7, r1, 0
+ cmp r0, 0
+ beq _080184A0
+ movs r4, 0x3F
+ ands r4, r0
+ b _080184AC
+ .align 2, 0
+_08018494: .4byte gCurrentMove
+_08018498: .4byte 0x02000000
+_0801849C: .4byte 0x0001601c
+_080184A0:
+ ldr r1, _080184C0 @ =gBattleMoves
+ lsls r0, r3, 1
+ adds r0, r3
+ lsls r0, 2
+ adds r0, r1
+ ldrb r4, [r0, 0x2]
+_080184AC:
+ ldr r5, [sp, 0x4]
+ cmp r5, 0x13
+ bls _080184B6
+ bl _08019F76
+_080184B6:
+ lsls r0, r5, 2
+ ldr r1, _080184C4 @ =_080184C8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080184C0: .4byte gBattleMoves
+_080184C4: .4byte _080184C8
+ .align 2, 0
+_080184C8:
+ .4byte _08018518
+ .4byte _08018814
+ .4byte _08018A40
+ .4byte _08018AD8
+ .4byte _08018CF0
+ .4byte _08019448
+ .4byte _080197B4
+ .4byte _08019804
+ .4byte _08019880
+ .4byte _080198FC
+ .4byte _08019B1C
+ .4byte _08019940
+ .4byte _08019B60
+ .4byte _08019BBC
+ .4byte _08019C18
+ .4byte _08019D18
+ .4byte _08019D5C
+ .4byte _08019DB8
+ .4byte _08019F44
+ .4byte _08019CD4
+_08018518:
+ ldr r2, _0801854C @ =gBankAttacker
+ ldr r0, _08018550 @ =gNoOfAllBanks
+ ldrb r1, [r2]
+ adds r5, r0, 0
+ ldrb r0, [r5]
+ cmp r1, r0
+ bcc _0801852A
+ mov r1, r10
+ strb r1, [r2]
+_0801852A:
+ mov r2, r8
+ ldrb r0, [r2]
+ cmp r0, 0x2D
+ bne _08018534
+ b _080186B8
+_08018534:
+ cmp r0, 0x2D
+ bgt _08018564
+ cmp r0, 0xD
+ bne _0801853E
+ b _080187DC
+_0801853E:
+ cmp r0, 0xD
+ bgt _08018554
+ cmp r0, 0x2
+ bne _08018548
+ b _08018680
+_08018548:
+ bl _08019F76
+ .align 2, 0
+_0801854C: .4byte gBankAttacker
+_08018550: .4byte gNoOfAllBanks
+_08018554:
+ cmp r0, 0x16
+ bne _0801855A
+ b _08018728
+_0801855A:
+ cmp r0, 0x24
+ bne _08018560
+ b _080187A0
+_08018560:
+ bl _08019F76
+_08018564:
+ cmp r0, 0x46
+ bne _0801856A
+ b _080186F0
+_0801856A:
+ cmp r0, 0x46
+ bgt _08018578
+ cmp r0, 0x3B
+ bne _08018574
+ b _0801875C
+_08018574:
+ bl _08019F76
+_08018578:
+ cmp r0, 0x4D
+ bne _0801857E
+ b _080187DC
+_0801857E:
+ cmp r0, 0xFF
+ beq _08018586
+ bl _08019F76
+_08018586:
+ bl weather_get_current
+ lsls r0, 24
+ lsrs r0, 24
+ subs r0, 0x3
+ cmp r0, 0xA
+ bhi _0801864C
+ lsls r0, 2
+ ldr r1, _080185A0 @ =_080185A4
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080185A0: .4byte _080185A4
+ .align 2, 0
+_080185A4:
+ .4byte _080185D0
+ .4byte _0801864C
+ .4byte _080185D0
+ .4byte _0801864C
+ .4byte _0801864C
+ .4byte _080185F8
+ .4byte _0801864C
+ .4byte _0801864C
+ .4byte _0801864C
+ .4byte _08018620
+ .4byte _080185D0
+_080185D0:
+ ldr r2, _080185EC @ =gBattleWeather
+ ldrh r1, [r2]
+ movs r0, 0x7
+ ands r0, r1
+ cmp r0, 0
+ bne _0801864C
+ movs r0, 0x5
+ strh r0, [r2]
+ ldr r0, _080185F0 @ =0x02000000
+ ldr r3, _080185F4 @ =0x000160a4
+ adds r2, r0, r3
+ movs r1, 0xA
+ b _08018638
+ .align 2, 0
+_080185EC: .4byte gBattleWeather
+_080185F0: .4byte 0x02000000
+_080185F4: .4byte 0x000160a4
+_080185F8:
+ ldr r3, _08018614 @ =gBattleWeather
+ ldrh r1, [r3]
+ movs r2, 0x18
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _0801864C
+ strh r2, [r3]
+ ldr r0, _08018618 @ =0x02000000
+ ldr r3, _0801861C @ =0x000160a4
+ adds r2, r0, r3
+ movs r1, 0xC
+ b _08018638
+ .align 2, 0
+_08018614: .4byte gBattleWeather
+_08018618: .4byte 0x02000000
+_0801861C: .4byte 0x000160a4
+_08018620:
+ ldr r3, _08018668 @ =gBattleWeather
+ ldrh r1, [r3]
+ movs r2, 0x60
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _0801864C
+ strh r2, [r3]
+ ldr r0, _0801866C @ =0x02000000
+ ldr r3, _08018670 @ =0x000160a4
+ adds r2, r0, r3
+ movs r1, 0xB
+_08018638:
+ strb r1, [r2]
+ ldr r5, _08018674 @ =0x00016003
+ adds r0, r5
+ mov r1, r10
+ strb r1, [r0]
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_0801864C:
+ mov r2, r9
+ cmp r2, 0
+ bne _08018656
+ bl _08019F92
+_08018656:
+ bl weather_get_current
+ ldr r1, _08018678 @ =gBattleCommunication
+ strb r0, [r1, 0x5]
+ ldr r0, _0801867C @ =gUnknown_081D901D
+ bl b_push_move_exec
+ bl _08019F76
+ .align 2, 0
+_08018668: .4byte gBattleWeather
+_0801866C: .4byte 0x02000000
+_08018670: .4byte 0x000160a4
+_08018674: .4byte 0x00016003
+_08018678: .4byte gBattleCommunication
+_0801867C: .4byte gUnknown_081D901D
+_08018680:
+ ldr r2, _080186A8 @ =gBattleWeather
+ ldrh r1, [r2]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _08018690
+ bl _08019F76
+_08018690:
+ movs r0, 0x5
+ strh r0, [r2]
+ ldr r0, _080186AC @ =gUnknown_081D9704
+ bl b_push_move_exec
+ ldr r0, _080186B0 @ =0x02000000
+ ldr r3, _080186B4 @ =0x00016003
+ adds r0, r3
+ mov r5, r10
+ strb r5, [r0]
+ bl _08019F22
+ .align 2, 0
+_080186A8: .4byte gBattleWeather
+_080186AC: .4byte gUnknown_081D9704
+_080186B0: .4byte 0x02000000
+_080186B4: .4byte 0x00016003
+_080186B8:
+ ldr r2, _080186E0 @ =gBattleWeather
+ ldrh r1, [r2]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080186C8
+ bl _08019F76
+_080186C8:
+ movs r0, 0x18
+ strh r0, [r2]
+ ldr r0, _080186E4 @ =gUnknown_081D9744
+ bl b_push_move_exec
+ ldr r0, _080186E8 @ =0x02000000
+ ldr r1, _080186EC @ =0x00016003
+ adds r0, r1
+ mov r2, r10
+ strb r2, [r0]
+ bl _08019F22
+ .align 2, 0
+_080186E0: .4byte gBattleWeather
+_080186E4: .4byte gUnknown_081D9744
+_080186E8: .4byte 0x02000000
+_080186EC: .4byte 0x00016003
+_080186F0:
+ ldr r2, _08018718 @ =gBattleWeather
+ ldrh r1, [r2]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _08018700
+ bl _08019F76
+_08018700:
+ movs r0, 0x60
+ strh r0, [r2]
+ ldr r0, _0801871C @ =gUnknown_081D97FE
+ bl b_push_move_exec
+ ldr r0, _08018720 @ =0x02000000
+ ldr r3, _08018724 @ =0x00016003
+ adds r0, r3
+ mov r5, r10
+ strb r5, [r0]
+ bl _08019F22
+ .align 2, 0
+_08018718: .4byte gBattleWeather
+_0801871C: .4byte gUnknown_081D97FE
+_08018720: .4byte 0x02000000
+_08018724: .4byte 0x00016003
+_08018728:
+ ldr r0, _08018754 @ =gSpecialStatuses
+ mov r1, r10
+ lsls r2, r1, 2
+ adds r1, r2, r1
+ lsls r1, 2
+ adds r3, r1, r0
+ ldrb r0, [r3]
+ lsls r0, 28
+ cmp r0, 0
+ bge _08018740
+ bl _08019F76
+_08018740:
+ ldr r1, _08018758 @ =gStatuses3
+ adds r1, r2, r1
+ ldr r0, [r1]
+ movs r2, 0x80
+ lsls r2, 12
+ orrs r0, r2
+ str r0, [r1]
+ ldrb r0, [r3]
+ movs r1, 0x8
+ b _080187CA
+ .align 2, 0
+_08018754: .4byte gSpecialStatuses
+_08018758: .4byte gStatuses3
+_0801875C:
+ mov r0, r10
+ bl castform_switch
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ cmp r0, 0
+ bne _08018770
+ bl _08019F92
+_08018770:
+ ldr r0, _08018790 @ =gUnknown_081D977D
+ bl b_push_move_exec
+ ldr r0, _08018794 @ =0x02000000
+ ldr r2, _08018798 @ =0x00016003
+ adds r1, r0, r2
+ mov r3, r10
+ strb r3, [r1]
+ mov r1, r9
+ subs r1, 0x1
+ ldr r5, _0801879C @ =0x0001609b
+ adds r0, r5
+ strb r1, [r0]
+ bl _08019F76
+ .align 2, 0
+_08018790: .4byte gUnknown_081D977D
+_08018794: .4byte 0x02000000
+_08018798: .4byte 0x00016003
+_0801879C: .4byte 0x0001609b
+_080187A0:
+ ldr r0, _080187D4 @ =gSpecialStatuses
+ mov r1, r10
+ lsls r2, r1, 2
+ adds r1, r2, r1
+ lsls r1, 2
+ adds r3, r1, r0
+ ldrb r0, [r3]
+ lsls r0, 27
+ cmp r0, 0
+ bge _080187B8
+ bl _08019F76
+_080187B8:
+ ldr r1, _080187D8 @ =gStatuses3
+ adds r1, r2, r1
+ ldr r0, [r1]
+ movs r2, 0x80
+ lsls r2, 13
+ orrs r0, r2
+ str r0, [r1]
+ ldrb r0, [r3]
+ movs r1, 0x10
+_080187CA:
+ orrs r0, r1
+ strb r0, [r3]
+ bl _08019F76
+ .align 2, 0
+_080187D4: .4byte gSpecialStatuses
+_080187D8: .4byte gStatuses3
+_080187DC:
+ movs r6, 0
+ ldrb r5, [r5]
+ cmp r6, r5
+ bcc _080187E8
+ bl _08019F76
+_080187E8:
+ adds r0, r6, 0
+ bl castform_switch
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ cmp r0, 0
+ beq _080187FC
+ bl _08019E14
+_080187FC:
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r0, _08018810 @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r6, r0
+ bcc _080187E8
+ bl _08019F76
+ .align 2, 0
+_08018810: .4byte gNoOfAllBanks
+_08018814:
+ ldr r2, _08018844 @ =gBattleMons
+ movs r0, 0x58
+ mov r1, r10
+ muls r1, r0
+ adds r4, r1, r2
+ ldrh r0, [r4, 0x28]
+ cmp r0, 0
+ bne _08018828
+ bl _08019F76
+_08018828:
+ ldr r0, _08018848 @ =gBankAttacker
+ mov r3, r10
+ strb r3, [r0]
+ mov r3, r8
+ ldrb r5, [r3]
+ cmp r5, 0x2C
+ beq _0801885A
+ cmp r5, 0x2C
+ bgt _0801884C
+ cmp r5, 0x3
+ bne _08018840
+ b _080189B8
+_08018840:
+ bl _08019F76
+ .align 2, 0
+_08018844: .4byte gBattleMons
+_08018848: .4byte gBankAttacker
+_0801884C:
+ cmp r5, 0x36
+ bne _08018852
+ b _08018A18
+_08018852:
+ cmp r5, 0x3D
+ beq _080188DC
+ bl _08019F76
+_0801885A:
+ 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 _08018876
+ bl _08019F76
+_08018876:
+ str r0, [sp]
+ movs r0, 0x13
+ movs r1, 0
+ movs r2, 0x4D
+ movs r3, 0
+ bl AbilityBattleEffects
+ lsls r0, 24
+ cmp r0, 0
+ beq _0801888E
+ bl _08019F76
+_0801888E:
+ ldr r0, _080188D0 @ =gBattleWeather
+ ldrh r1, [r0]
+ movs r0, 0x7
+ ands r0, r1
+ cmp r0, 0
+ bne _0801889E
+ bl _08019F76
+_0801889E:
+ ldrh r0, [r4, 0x2C]
+ ldrh r1, [r4, 0x28]
+ cmp r0, r1
+ bhi _080188AA
+ bl _08019F76
+_080188AA:
+ mov r2, r8
+ strb r5, [r2]
+ ldr r0, _080188D4 @ =gUnknown_081D9730
+ bl b_push_move_exec
+ ldr r1, _080188D8 @ =gBattleMoveDamage
+ ldrh r0, [r4, 0x2C]
+ lsrs r0, 4
+ str r0, [r1]
+ cmp r0, 0
+ bne _080188C4
+ movs r0, 0x1
+ str r0, [r1]
+_080188C4:
+ ldr r0, [r1]
+ negs r0, r0
+ str r0, [r1]
+ bl _08019F22
+ .align 2, 0
+_080188D0: .4byte gBattleWeather
+_080188D4: .4byte gUnknown_081D9730
+_080188D8: .4byte gBattleMoveDamage
+_080188DC:
+ adds r0, r2, 0
+ adds r0, 0x4C
+ adds r5, r1, r0
+ ldrb r0, [r5]
+ cmp r0, 0
+ bne _080188EC
+ bl _08019F76
+_080188EC:
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x3
+ bl __umodsi3
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, 0
+ beq _08018906
+ bl _08019F76
+_08018906:
+ ldr r0, [r5]
+ movs r1, 0x88
+ ands r0, r1
+ cmp r0, 0
+ beq _08018918
+ ldr r0, _08018990 @ =gBattleTextBuff1
+ ldr r1, _08018994 @ =gStatusConditionString_PoisonJpn
+ bl StringCopy
+_08018918:
+ ldr r0, [r5]
+ movs r1, 0x7
+ ands r0, r1
+ cmp r0, 0
+ beq _0801892A
+ ldr r0, _08018990 @ =gBattleTextBuff1
+ ldr r1, _08018998 @ =gStatusConditionString_SleepJpn
+ bl StringCopy
+_0801892A:
+ ldr r0, [r5]
+ movs r1, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _0801893C
+ ldr r0, _08018990 @ =gBattleTextBuff1
+ ldr r1, _0801899C @ =gStatusConditionString_ParalysisJpn
+ bl StringCopy
+_0801893C:
+ ldr r0, [r5]
+ movs r1, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _0801894E
+ ldr r0, _08018990 @ =gBattleTextBuff1
+ ldr r1, _080189A0 @ =gStatusConditionString_BurnJpn
+ bl StringCopy
+_0801894E:
+ ldr r0, [r5]
+ movs r1, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _08018960
+ ldr r0, _08018990 @ =gBattleTextBuff1
+ ldr r1, _080189A4 @ =gStatusConditionString_IceJpn
+ bl StringCopy
+_08018960:
+ str r4, [r5]
+ ldr r0, _080189A8 @ =0x02000000
+ ldr r4, _080189AC @ =gActiveBank
+ mov r3, r10
+ strb r3, [r4]
+ ldr r1, _080189B0 @ =0x00016003
+ adds r0, r1
+ strb r3, [r0]
+ ldr r0, _080189B4 @ =gUnknown_081D9758
+ bl b_push_move_exec
+ str r5, [sp]
+ movs r0, 0
+ movs r1, 0x28
+ movs r2, 0
+ movs r3, 0x4
+ bl EmitSetAttributes
+ ldrb r0, [r4]
+ bl MarkBufferBankForExecution
+ bl _08019F22
+ .align 2, 0
+_08018990: .4byte gBattleTextBuff1
+_08018994: .4byte gStatusConditionString_PoisonJpn
+_08018998: .4byte gStatusConditionString_SleepJpn
+_0801899C: .4byte gStatusConditionString_ParalysisJpn
+_080189A0: .4byte gStatusConditionString_BurnJpn
+_080189A4: .4byte gStatusConditionString_IceJpn
+_080189A8: .4byte 0x02000000
+_080189AC: .4byte gActiveBank
+_080189B0: .4byte 0x00016003
+_080189B4: .4byte gUnknown_081D9758
+_080189B8:
+ ldrb r2, [r4, 0x1B]
+ movs r0, 0x1B
+ ldrsb r0, [r4, r0]
+ cmp r0, 0xB
+ ble _080189C6
+ bl _08019F76
+_080189C6:
+ ldr r0, _08018A04 @ =gDisableStructs
+ mov r3, r10
+ lsls r1, r3, 3
+ subs r1, r3
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1, 0x16]
+ cmp r0, 0x2
+ bne _080189DC
+ bl _08019F76
+_080189DC:
+ adds r0, r2, 0x1
+ movs r2, 0
+ strb r0, [r4, 0x1B]
+ ldr r5, _08018A08 @ =0x000160a4
+ adds r1, r7, r5
+ movs r0, 0x11
+ strb r0, [r1]
+ ldr r1, _08018A0C @ =0x000160a5
+ adds r0, r7, r1
+ strb r2, [r0]
+ ldr r0, _08018A10 @ =gUnknown_081D9718
+ bl b_push_move_exec
+ ldr r2, _08018A14 @ =0x00016003
+ adds r0, r7, r2
+ mov r3, r10
+ strb r3, [r0]
+ bl _08019F22
+ .align 2, 0
+_08018A04: .4byte gDisableStructs
+_08018A08: .4byte 0x000160a4
+_08018A0C: .4byte 0x000160a5
+_08018A10: .4byte gUnknown_081D9718
+_08018A14: .4byte 0x00016003
+_08018A18:
+ ldr r2, _08018A3C @ =gDisableStructs
+ ldrb r0, [r0]
+ lsls r1, r0, 3
+ subs r1, r0
+ lsls r1, 2
+ adds r1, r2
+ ldrb r3, [r1, 0x18]
+ lsls r0, r3, 31
+ lsrs r0, 31
+ movs r2, 0x1
+ eors r2, r0
+ movs r0, 0x2
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r2
+ strb r0, [r1, 0x18]
+ bl _08019F76
+ .align 2, 0
+_08018A3C: .4byte gDisableStructs
+_08018A40:
+ mov r5, r8
+ ldrb r0, [r5]
+ cmp r0, 0x2B
+ beq _08018A4C
+ bl _08019F76
+_08018A4C:
+ movs r4, 0
+ ldr r0, _08018ABC @ =gUnknown_081FA724
+ ldrh r2, [r0]
+ ldr r5, _08018AC0 @ =0x0000ffff
+ adds r1, r0, 0
+ cmp r2, r5
+ bne _08018A5E
+ bl _08019F76
+_08018A5E:
+ cmp r2, r3
+ beq _08018A76
+ adds r2, r1, 0
+_08018A64:
+ adds r2, 0x2
+ adds r4, 0x1
+ ldrh r0, [r2]
+ cmp r0, r5
+ bne _08018A72
+ bl _08019F76
+_08018A72:
+ cmp r0, r3
+ bne _08018A64
+_08018A76:
+ lsls r0, r4, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ ldr r0, _08018AC0 @ =0x0000ffff
+ cmp r1, r0
+ bne _08018A86
+ bl _08019F76
+_08018A86:
+ ldr r1, _08018AC4 @ =gBattleMons
+ ldr r0, _08018AC8 @ =gBankAttacker
+ ldrb r2, [r0]
+ movs r0, 0x58
+ muls r0, r2
+ adds r1, 0x50
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 5
+ ands r0, r1
+ cmp r0, 0
+ beq _08018AAC
+ ldr r0, _08018ACC @ =gHitMarker
+ ldr r1, [r0]
+ movs r2, 0x80
+ lsls r2, 4
+ orrs r1, r2
+ str r1, [r0]
+_08018AAC:
+ ldr r1, _08018AD0 @ =gBattlescriptCurrInstr
+ ldr r0, _08018AD4 @ =gUnknown_081D98F3
+ str r0, [r1]
+ movs r0, 0x1
+ mov r9, r0
+ bl _08019F7C
+ .align 2, 0
+_08018ABC: .4byte gUnknown_081FA724
+_08018AC0: .4byte 0x0000ffff
+_08018AC4: .4byte gBattleMons
+_08018AC8: .4byte gBankAttacker
+_08018ACC: .4byte gHitMarker
+_08018AD0: .4byte gBattlescriptCurrInstr
+_08018AD4: .4byte gUnknown_081D98F3
+_08018AD8:
+ cmp r3, 0
+ bne _08018AE0
+ bl _08019F76
+_08018AE0:
+ mov r1, r8
+ ldrb r0, [r1]
+ cmp r0, 0xB
+ beq _08018B50
+ cmp r0, 0xB
+ bgt _08018AF2
+ cmp r0, 0xA
+ beq _08018AF8
+ b _08018C6A
+_08018AF2:
+ cmp r0, 0x12
+ beq _08018BA8
+ b _08018C6A
+_08018AF8:
+ cmp r4, 0xD
+ beq _08018AFE
+ b _08018C6A
+_08018AFE:
+ ldr r0, _08018B28 @ =gBattleMoves
+ lsls r1, r3, 1
+ adds r1, r3
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1, 0x1]
+ cmp r0, 0
+ bne _08018B10
+ b _08018C6A
+_08018B10:
+ ldr r1, _08018B2C @ =gProtectStructs
+ ldr r0, _08018B30 @ =gBankAttacker
+ ldrb r0, [r0]
+ lsls r0, 4
+ adds r0, r1
+ ldrb r0, [r0, 0x2]
+ lsls r0, 28
+ cmp r0, 0
+ bge _08018B3C
+ ldr r1, _08018B34 @ =gBattlescriptCurrInstr
+ ldr r0, _08018B38 @ =gUnknown_081D9843
+ b _08018B40
+ .align 2, 0
+_08018B28: .4byte gBattleMoves
+_08018B2C: .4byte gProtectStructs
+_08018B30: .4byte gBankAttacker
+_08018B34: .4byte gBattlescriptCurrInstr
+_08018B38: .4byte gUnknown_081D9843
+_08018B3C:
+ ldr r1, _08018B48 @ =gBattlescriptCurrInstr
+ ldr r0, _08018B4C @ =gUnknown_081D9842
+_08018B40:
+ str r0, [r1]
+ movs r2, 0x1
+ b _08018C68
+ .align 2, 0
+_08018B48: .4byte gBattlescriptCurrInstr
+_08018B4C: .4byte gUnknown_081D9842
+_08018B50:
+ cmp r4, 0xB
+ beq _08018B56
+ b _08018C6A
+_08018B56:
+ ldr r0, _08018B80 @ =gBattleMoves
+ lsls r1, r3, 1
+ adds r1, r3
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1, 0x1]
+ cmp r0, 0
+ bne _08018B68
+ b _08018C6A
+_08018B68:
+ ldr r1, _08018B84 @ =gProtectStructs
+ ldr r0, _08018B88 @ =gBankAttacker
+ ldrb r0, [r0]
+ lsls r0, 4
+ adds r0, r1
+ ldrb r0, [r0, 0x2]
+ lsls r0, 28
+ cmp r0, 0
+ bge _08018B94
+ ldr r1, _08018B8C @ =gBattlescriptCurrInstr
+ ldr r0, _08018B90 @ =gUnknown_081D9843
+ b _08018B98
+ .align 2, 0
+_08018B80: .4byte gBattleMoves
+_08018B84: .4byte gProtectStructs
+_08018B88: .4byte gBankAttacker
+_08018B8C: .4byte gBattlescriptCurrInstr
+_08018B90: .4byte gUnknown_081D9843
+_08018B94:
+ ldr r1, _08018BA0 @ =gBattlescriptCurrInstr
+ ldr r0, _08018BA4 @ =gUnknown_081D9842
+_08018B98:
+ str r0, [r1]
+ movs r3, 0x1
+ mov r9, r3
+ b _08018C6A
+ .align 2, 0
+_08018BA0: .4byte gBattlescriptCurrInstr
+_08018BA4: .4byte gUnknown_081D9842
+_08018BA8:
+ cmp r4, 0xA
+ bne _08018C6A
+ ldr r1, _08018BF4 @ =gBattleMons
+ movs r0, 0x58
+ mov r5, r10
+ muls r5, r0
+ adds r0, r5, 0
+ adds r1, 0x4C
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x20
+ ands r0, r1
+ cmp r0, 0
+ bne _08018C6A
+ ldr r2, _08018BF8 @ =0x02017100
+ mov r0, r10
+ lsls r1, r0, 2
+ adds r0, r1, r2
+ ldr r3, [r0]
+ movs r4, 0x1
+ ands r3, r4
+ adds r5, r1, 0
+ cmp r3, 0
+ bne _08018C30
+ ldr r0, _08018BFC @ =gBattleCommunication
+ strb r3, [r0, 0x5]
+ ldr r1, _08018C00 @ =gProtectStructs
+ ldr r0, _08018C04 @ =gBankAttacker
+ ldrb r0, [r0]
+ lsls r0, 4
+ adds r0, r1
+ ldrb r0, [r0, 0x2]
+ lsls r0, 28
+ cmp r0, 0
+ bge _08018C10
+ ldr r1, _08018C08 @ =gBattlescriptCurrInstr
+ ldr r0, _08018C0C @ =gUnknown_081D987C
+ b _08018C14
+ .align 2, 0
+_08018BF4: .4byte gBattleMons
+_08018BF8: .4byte 0x02017100
+_08018BFC: .4byte gBattleCommunication
+_08018C00: .4byte gProtectStructs
+_08018C04: .4byte gBankAttacker
+_08018C08: .4byte gBattlescriptCurrInstr
+_08018C0C: .4byte gUnknown_081D987C
+_08018C10:
+ ldr r1, _08018C28 @ =gBattlescriptCurrInstr
+ ldr r0, _08018C2C @ =gUnknown_081D987B
+_08018C14:
+ str r0, [r1]
+ adds r0, r5, r2
+ ldr r1, [r0]
+ movs r2, 0x1
+ orrs r1, r2
+ str r1, [r0]
+ movs r1, 0x2
+ mov r9, r1
+ b _08018C6A
+ .align 2, 0
+_08018C28: .4byte gBattlescriptCurrInstr
+_08018C2C: .4byte gUnknown_081D987B
+_08018C30:
+ ldr r0, _08018C4C @ =gBattleCommunication
+ strb r4, [r0, 0x5]
+ ldr r1, _08018C50 @ =gProtectStructs
+ ldr r0, _08018C54 @ =gBankAttacker
+ ldrb r0, [r0]
+ lsls r0, 4
+ adds r0, r1
+ ldrb r0, [r0, 0x2]
+ lsls r0, 28
+ cmp r0, 0
+ bge _08018C60
+ ldr r1, _08018C58 @ =gBattlescriptCurrInstr
+ ldr r0, _08018C5C @ =gUnknown_081D987C
+ b _08018C64
+ .align 2, 0
+_08018C4C: .4byte gBattleCommunication
+_08018C50: .4byte gProtectStructs
+_08018C54: .4byte gBankAttacker
+_08018C58: .4byte gBattlescriptCurrInstr
+_08018C5C: .4byte gUnknown_081D987C
+_08018C60:
+ ldr r1, _08018CA4 @ =gBattlescriptCurrInstr
+ ldr r0, _08018CA8 @ =gUnknown_081D987B
+_08018C64:
+ str r0, [r1]
+ movs r2, 0x2
+_08018C68:
+ mov r9, r2
+_08018C6A:
+ mov r3, r9
+ cmp r3, 0x1
+ beq _08018C74
+ bl _08019F76
+_08018C74:
+ ldr r1, _08018CAC @ =gBattleMons
+ movs r0, 0x58
+ mov r5, r10
+ muls r5, r0
+ adds r0, r5, 0
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x2C]
+ ldrh r2, [r1, 0x28]
+ cmp r0, r2
+ bne _08018CD0
+ ldr r1, _08018CB0 @ =gProtectStructs
+ ldr r0, _08018CB4 @ =gBankAttacker
+ ldrb r0, [r0]
+ lsls r0, 4
+ adds r0, r1
+ ldrb r0, [r0, 0x2]
+ lsls r0, 28
+ cmp r0, 0
+ bge _08018CBC
+ ldr r1, _08018CA4 @ =gBattlescriptCurrInstr
+ ldr r0, _08018CB8 @ =gUnknown_081D9866
+ str r0, [r1]
+ bl _08019F76
+ .align 2, 0
+_08018CA4: .4byte gBattlescriptCurrInstr
+_08018CA8: .4byte gUnknown_081D987B
+_08018CAC: .4byte gBattleMons
+_08018CB0: .4byte gProtectStructs
+_08018CB4: .4byte gBankAttacker
+_08018CB8: .4byte gUnknown_081D9866
+_08018CBC:
+ ldr r1, _08018CC8 @ =gBattlescriptCurrInstr
+ ldr r0, _08018CCC @ =gUnknown_081D9865
+ str r0, [r1]
+ bl _08019F76
+ .align 2, 0
+_08018CC8: .4byte gBattlescriptCurrInstr
+_08018CCC: .4byte gUnknown_081D9865
+_08018CD0:
+ ldr r2, _08018CEC @ =gBattleMoveDamage
+ ldrh r0, [r1, 0x2C]
+ lsrs r0, 2
+ str r0, [r2]
+ cmp r0, 0
+ bne _08018CE0
+ mov r3, r9
+ str r3, [r2]
+_08018CE0:
+ ldr r0, [r2]
+ negs r0, r0
+ str r0, [r2]
+ bl _08019F76
+ .align 2, 0
+_08018CEC: .4byte gBattleMoveDamage
+_08018CF0:
+ mov r5, r8
+ ldrb r0, [r5]
+ subs r0, 0x9
+ cmp r0, 0x2F
+ bls _08018CFE
+ bl _08019F76
+_08018CFE:
+ lsls r0, 2
+ ldr r1, _08018D08 @ =_08018D0C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08018D08: .4byte _08018D0C
+ .align 2, 0
+_08018D0C:
+ .4byte _08019128
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08018DCC
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08018E94
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08018F54
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _0801904C
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019204
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _08019F76
+ .4byte _080192E0
+_08018DCC:
+ ldr r0, _08018E74 @ =gBattleMoveFlags
+ ldrb r1, [r0]
+ movs r0, 0x29
+ ands r0, r1
+ cmp r0, 0
+ beq _08018DDC
+ bl _08019F76
+_08018DDC:
+ cmp r3, 0xA5
+ bne _08018DE4
+ bl _08019F76
+_08018DE4:
+ ldr r0, _08018E78 @ =gBattleMoves
+ lsls r1, r3, 1
+ adds r1, r3
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1, 0x1]
+ cmp r0, 0
+ bne _08018DF8
+ bl _08019F76
+_08018DF8:
+ ldr r2, _08018E7C @ =gSpecialStatuses
+ ldr r0, _08018E80 @ =gBankTarget
+ ldrb r1, [r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r1, r0, 2
+ adds r0, r2, 0
+ adds r0, 0x8
+ adds r0, r1, r0
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _08018E20
+ adds r0, r2, 0
+ adds r0, 0xC
+ adds r0, r1, r0
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _08018E20
+ bl _08019F76
+_08018E20:
+ ldr r1, _08018E84 @ =gBattleMons
+ movs r0, 0x58
+ mov r2, r10
+ muls r2, r0
+ adds r0, r2, 0
+ adds r1, r0, r1
+ adds r3, r1, 0
+ adds r3, 0x21
+ ldrb r0, [r3]
+ cmp r0, r4
+ bne _08018E3A
+ bl _08019F76
+_08018E3A:
+ adds r2, r1, 0
+ adds r2, 0x22
+ ldrb r0, [r2]
+ cmp r0, r4
+ bne _08018E48
+ bl _08019F76
+_08018E48:
+ ldrh r0, [r1, 0x28]
+ cmp r0, 0
+ bne _08018E52
+ bl _08019F76
+_08018E52:
+ strb r4, [r3]
+ strb r4, [r2]
+ ldr r1, _08018E88 @ =gBattleTextBuff1
+ movs r0, 0xFD
+ strb r0, [r1]
+ movs r0, 0x3
+ strb r0, [r1, 0x1]
+ strb r4, [r1, 0x2]
+ movs r0, 0xFF
+ strb r0, [r1, 0x3]
+ bl b_movescr_stack_push_cursor
+ ldr r1, _08018E8C @ =gBattlescriptCurrInstr
+ ldr r0, _08018E90 @ =gUnknown_081D9921
+ str r0, [r1]
+ bl _08019F22
+ .align 2, 0
+_08018E74: .4byte gBattleMoveFlags
+_08018E78: .4byte gBattleMoves
+_08018E7C: .4byte gSpecialStatuses
+_08018E80: .4byte gBankTarget
+_08018E84: .4byte gBattleMons
+_08018E88: .4byte gBattleTextBuff1
+_08018E8C: .4byte gBattlescriptCurrInstr
+_08018E90: .4byte gUnknown_081D9921
+_08018E94:
+ ldr r0, _08018F2C @ =gBattleMoveFlags
+ ldrb r1, [r0]
+ movs r0, 0x29
+ ands r0, r1
+ cmp r0, 0
+ beq _08018EA4
+ bl _08019F76
+_08018EA4:
+ ldr r1, _08018F30 @ =gBattleMons
+ ldr r0, _08018F34 @ =gBankAttacker
+ ldrb r2, [r0]
+ movs r0, 0x58
+ muls r0, r2
+ adds r4, r0, r1
+ ldrh r0, [r4, 0x28]
+ cmp r0, 0
+ bne _08018EBA
+ bl _08019F76
+_08018EBA:
+ ldr r0, _08018F38 @ =gProtectStructs
+ lsls r1, r2, 4
+ adds r1, r0
+ ldrb r0, [r1, 0x1]
+ lsls r0, 31
+ cmp r0, 0
+ beq _08018ECC
+ bl _08019F76
+_08018ECC:
+ ldr r2, _08018F3C @ =gSpecialStatuses
+ ldr r0, _08018F40 @ =gBankTarget
+ ldrb r1, [r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r1, r0, 2
+ adds r0, r2, 0
+ adds r0, 0x8
+ adds r0, r1, r0
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _08018EF4
+ adds r0, r2, 0
+ adds r0, 0xC
+ adds r0, r1, r0
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _08018EF4
+ bl _08019F76
+_08018EF4:
+ ldr r1, _08018F44 @ =gBattleMoves
+ lsls r0, r3, 1
+ adds r0, r3
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0, 0x8]
+ movs r2, 0x1
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _08018F0E
+ bl _08019F76
+_08018F0E:
+ ldr r1, _08018F48 @ =gBattleMoveDamage
+ ldrh r0, [r4, 0x2C]
+ lsrs r0, 4
+ str r0, [r1]
+ cmp r0, 0
+ bne _08018F1C
+ str r2, [r1]
+_08018F1C:
+ bl b_movescr_stack_push_cursor
+ ldr r1, _08018F4C @ =gBattlescriptCurrInstr
+ ldr r0, _08018F50 @ =gUnknown_081D9928
+ str r0, [r1]
+ bl _08019F22
+ .align 2, 0
+_08018F2C: .4byte gBattleMoveFlags
+_08018F30: .4byte gBattleMons
+_08018F34: .4byte gBankAttacker
+_08018F38: .4byte gProtectStructs
+_08018F3C: .4byte gSpecialStatuses
+_08018F40: .4byte gBankTarget
+_08018F44: .4byte gBattleMoves
+_08018F48: .4byte gBattleMoveDamage
+_08018F4C: .4byte gBattlescriptCurrInstr
+_08018F50: .4byte gUnknown_081D9928
+_08018F54:
+ ldr r0, _08019020 @ =gBattleMoveFlags
+ ldrb r1, [r0]
+ movs r0, 0x29
+ ands r0, r1
+ cmp r0, 0
+ beq _08018F64
+ bl _08019F76
+_08018F64:
+ ldr r1, _08019024 @ =gBattleMons
+ ldr r0, _08019028 @ =gBankAttacker
+ ldrb r2, [r0]
+ movs r0, 0x58
+ muls r0, r2
+ adds r0, r1
+ ldrh r0, [r0, 0x28]
+ cmp r0, 0
+ bne _08018F7A
+ bl _08019F76
+_08018F7A:
+ ldr r0, _0801902C @ =gProtectStructs
+ lsls r1, r2, 4
+ adds r1, r0
+ ldrb r0, [r1, 0x1]
+ lsls r0, 31
+ cmp r0, 0
+ beq _08018F8C
+ bl _08019F76
+_08018F8C:
+ ldr r2, _08019030 @ =gSpecialStatuses
+ ldr r0, _08019034 @ =gBankTarget
+ ldrb r1, [r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r1, r0, 2
+ adds r0, r2, 0
+ adds r0, 0x8
+ adds r0, r1, r0
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _08018FB4
+ adds r0, r2, 0
+ adds r0, 0xC
+ adds r0, r1, r0
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _08018FB4
+ bl _08019F76
+_08018FB4:
+ ldr r1, _08019038 @ =gBattleMoves
+ lsls r0, r3, 1
+ adds r0, r3
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0, 0x8]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _08018FCC
+ bl _08019F76
+_08018FCC:
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0xA
+ bl __umodsi3
+ lsls r0, 16
+ cmp r0, 0
+ beq _08018FE4
+ bl _08019F76
+_08018FE4:
+ ldr r5, _0801903C @ =gBattleCommunication
+ movs r4, 0x3
+_08018FE8:
+ bl Random
+ ands r0, r4
+ strb r0, [r5, 0x3]
+ cmp r0, 0
+ beq _08018FE8
+ ldr r1, _0801903C @ =gBattleCommunication
+ ldrb r0, [r1, 0x3]
+ cmp r0, 0x3
+ bne _08019000
+ adds r0, 0x2
+ strb r0, [r1, 0x3]
+_08019000:
+ ldrb r0, [r1, 0x3]
+ adds r0, 0x40
+ strb r0, [r1, 0x3]
+ bl b_movescr_stack_push_cursor
+ ldr r1, _08019040 @ =gBattlescriptCurrInstr
+ ldr r0, _08019044 @ =gUnknown_081D9950
+ str r0, [r1]
+ ldr r2, _08019048 @ =gHitMarker
+ ldr r0, [r2]
+ movs r1, 0x80
+ lsls r1, 6
+ orrs r0, r1
+ str r0, [r2]
+ bl _08019F22
+ .align 2, 0
+_08019020: .4byte gBattleMoveFlags
+_08019024: .4byte gBattleMons
+_08019028: .4byte gBankAttacker
+_0801902C: .4byte gProtectStructs
+_08019030: .4byte gSpecialStatuses
+_08019034: .4byte gBankTarget
+_08019038: .4byte gBattleMoves
+_0801903C: .4byte gBattleCommunication
+_08019040: .4byte gBattlescriptCurrInstr
+_08019044: .4byte gUnknown_081D9950
+_08019048: .4byte gHitMarker
+_0801904C:
+ ldr r0, _080190FC @ =gBattleMoveFlags
+ ldrb r1, [r0]
+ movs r0, 0x29
+ ands r0, r1
+ cmp r0, 0
+ beq _0801905C
+ bl _08019F76
+_0801905C:
+ ldr r1, _08019100 @ =gBattleMons
+ ldr r0, _08019104 @ =gBankAttacker
+ ldrb r2, [r0]
+ movs r0, 0x58
+ muls r0, r2
+ adds r0, r1
+ ldrh r0, [r0, 0x28]
+ cmp r0, 0
+ bne _08019072
+ bl _08019F76
+_08019072:
+ ldr r0, _08019108 @ =gProtectStructs
+ lsls r1, r2, 4
+ adds r1, r0
+ ldrb r0, [r1, 0x1]
+ lsls r0, 31
+ cmp r0, 0
+ beq _08019084
+ bl _08019F76
+_08019084:
+ ldr r2, _0801910C @ =gSpecialStatuses
+ ldr r0, _08019110 @ =gBankTarget
+ ldrb r1, [r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r1, r0, 2
+ adds r0, r2, 0
+ adds r0, 0x8
+ adds r0, r1, r0
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _080190AC
+ adds r0, r2, 0
+ adds r0, 0xC
+ adds r0, r1, r0
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _080190AC
+ bl _08019F76
+_080190AC:
+ ldr r1, _08019114 @ =gBattleMoves
+ lsls r0, r3, 1
+ adds r0, r3
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0, 0x8]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _080190C4
+ bl _08019F76
+_080190C4:
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x3
+ bl __umodsi3
+ lsls r0, 16
+ cmp r0, 0
+ beq _080190DC
+ bl _08019F76
+_080190DC:
+ ldr r1, _08019118 @ =gBattleCommunication
+ movs r0, 0x42
+ strb r0, [r1, 0x3]
+ bl b_movescr_stack_push_cursor
+ ldr r1, _0801911C @ =gBattlescriptCurrInstr
+ ldr r0, _08019120 @ =gUnknown_081D9950
+ str r0, [r1]
+ ldr r2, _08019124 @ =gHitMarker
+ ldr r0, [r2]
+ movs r1, 0x80
+ lsls r1, 6
+ orrs r0, r1
+ str r0, [r2]
+ bl _08019F22
+ .align 2, 0
+_080190FC: .4byte gBattleMoveFlags
+_08019100: .4byte gBattleMons
+_08019104: .4byte gBankAttacker
+_08019108: .4byte gProtectStructs
+_0801910C: .4byte gSpecialStatuses
+_08019110: .4byte gBankTarget
+_08019114: .4byte gBattleMoves
+_08019118: .4byte gBattleCommunication
+_0801911C: .4byte gBattlescriptCurrInstr
+_08019120: .4byte gUnknown_081D9950
+_08019124: .4byte gHitMarker
+_08019128:
+ ldr r0, _080191D8 @ =gBattleMoveFlags
+ ldrb r1, [r0]
+ movs r0, 0x29
+ ands r0, r1
+ cmp r0, 0
+ beq _08019138
+ bl _08019F76
+_08019138:
+ ldr r1, _080191DC @ =gBattleMons
+ ldr r0, _080191E0 @ =gBankAttacker
+ ldrb r2, [r0]
+ movs r0, 0x58
+ muls r0, r2
+ adds r0, r1
+ ldrh r0, [r0, 0x28]
+ cmp r0, 0
+ bne _0801914E
+ bl _08019F76
+_0801914E:
+ ldr r0, _080191E4 @ =gProtectStructs
+ lsls r1, r2, 4
+ adds r1, r0
+ ldrb r0, [r1, 0x1]
+ lsls r0, 31
+ cmp r0, 0
+ beq _08019160
+ bl _08019F76
+_08019160:
+ ldr r2, _080191E8 @ =gSpecialStatuses
+ ldr r0, _080191EC @ =gBankTarget
+ ldrb r1, [r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r1, r0, 2
+ adds r0, r2, 0
+ adds r0, 0x8
+ adds r0, r1, r0
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _08019188
+ adds r0, r2, 0
+ adds r0, 0xC
+ adds r0, r1, r0
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _08019188
+ bl _08019F76
+_08019188:
+ ldr r1, _080191F0 @ =gBattleMoves
+ lsls r0, r3, 1
+ adds r0, r3
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0, 0x8]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _080191A0
+ bl _08019F76
+_080191A0:
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x3
+ bl __umodsi3
+ lsls r0, 16
+ cmp r0, 0
+ beq _080191B8
+ bl _08019F76
+_080191B8:
+ ldr r1, _080191F4 @ =gBattleCommunication
+ movs r0, 0x45
+ strb r0, [r1, 0x3]
+ bl b_movescr_stack_push_cursor
+ ldr r1, _080191F8 @ =gBattlescriptCurrInstr
+ ldr r0, _080191FC @ =gUnknown_081D9950
+ str r0, [r1]
+ ldr r2, _08019200 @ =gHitMarker
+ ldr r0, [r2]
+ movs r1, 0x80
+ lsls r1, 6
+ orrs r0, r1
+ str r0, [r2]
+ bl _08019F22
+ .align 2, 0
+_080191D8: .4byte gBattleMoveFlags
+_080191DC: .4byte gBattleMons
+_080191E0: .4byte gBankAttacker
+_080191E4: .4byte gProtectStructs
+_080191E8: .4byte gSpecialStatuses
+_080191EC: .4byte gBankTarget
+_080191F0: .4byte gBattleMoves
+_080191F4: .4byte gBattleCommunication
+_080191F8: .4byte gBattlescriptCurrInstr
+_080191FC: .4byte gUnknown_081D9950
+_08019200: .4byte gHitMarker
+_08019204:
+ ldr r0, _080192B4 @ =gBattleMoveFlags
+ ldrb r1, [r0]
+ movs r0, 0x29
+ ands r0, r1
+ cmp r0, 0
+ beq _08019214
+ bl _08019F76
+_08019214:
+ ldr r1, _080192B8 @ =gBattleMons
+ ldr r0, _080192BC @ =gBankAttacker
+ ldrb r2, [r0]
+ movs r0, 0x58
+ muls r0, r2
+ adds r0, r1
+ ldrh r0, [r0, 0x28]
+ cmp r0, 0
+ bne _0801922A
+ bl _08019F76
+_0801922A:
+ ldr r0, _080192C0 @ =gProtectStructs
+ lsls r1, r2, 4
+ adds r1, r0
+ ldrb r0, [r1, 0x1]
+ lsls r0, 31
+ cmp r0, 0
+ beq _0801923C
+ bl _08019F76
+_0801923C:
+ ldr r1, _080192C4 @ =gBattleMoves
+ lsls r0, r3, 1
+ adds r0, r3
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0, 0x8]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _08019254
+ bl _08019F76
+_08019254:
+ ldr r2, _080192C8 @ =gSpecialStatuses
+ ldr r0, _080192CC @ =gBankTarget
+ ldrb r1, [r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r1, r0, 2
+ adds r0, r2, 0
+ adds r0, 0x8
+ adds r0, r1, r0
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _0801927C
+ adds r0, r2, 0
+ adds r0, 0xC
+ adds r0, r1, r0
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _0801927C
+ bl _08019F76
+_0801927C:
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x3
+ bl __umodsi3
+ lsls r0, 16
+ cmp r0, 0
+ beq _08019294
+ bl _08019F76
+_08019294:
+ ldr r1, _080192D0 @ =gBattleCommunication
+ movs r0, 0x43
+ strb r0, [r1, 0x3]
+ bl b_movescr_stack_push_cursor
+ ldr r1, _080192D4 @ =gBattlescriptCurrInstr
+ ldr r0, _080192D8 @ =gUnknown_081D9950
+ str r0, [r1]
+ ldr r2, _080192DC @ =gHitMarker
+ ldr r0, [r2]
+ movs r1, 0x80
+ lsls r1, 6
+ orrs r0, r1
+ str r0, [r2]
+ bl _08019F22
+ .align 2, 0
+_080192B4: .4byte gBattleMoveFlags
+_080192B8: .4byte gBattleMons
+_080192BC: .4byte gBankAttacker
+_080192C0: .4byte gProtectStructs
+_080192C4: .4byte gBattleMoves
+_080192C8: .4byte gSpecialStatuses
+_080192CC: .4byte gBankTarget
+_080192D0: .4byte gBattleCommunication
+_080192D4: .4byte gBattlescriptCurrInstr
+_080192D8: .4byte gUnknown_081D9950
+_080192DC: .4byte gHitMarker
+_080192E0:
+ ldr r0, _08019420 @ =gBattleMoveFlags
+ ldrb r1, [r0]
+ movs r0, 0x29
+ ands r0, r1
+ cmp r0, 0
+ beq _080192F0
+ bl _08019F76
+_080192F0:
+ ldr r5, _08019424 @ =gBattleMons
+ ldr r7, _08019428 @ =gBankAttacker
+ ldrb r1, [r7]
+ movs r6, 0x58
+ adds r0, r1, 0
+ muls r0, r6
+ adds r0, r5
+ ldrh r0, [r0, 0x28]
+ cmp r0, 0
+ bne _08019308
+ bl _08019F76
+_08019308:
+ ldr r0, _0801942C @ =gProtectStructs
+ lsls r1, 4
+ adds r1, r0
+ ldrb r0, [r1, 0x1]
+ lsls r0, 31
+ cmp r0, 0
+ beq _0801931A
+ bl _08019F76
+_0801931A:
+ ldr r1, _08019430 @ =gBattleMoves
+ lsls r0, r3, 1
+ adds r0, r3
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0, 0x8]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _08019332
+ bl _08019F76
+_08019332:
+ ldr r3, _08019434 @ =gSpecialStatuses
+ ldr r0, _08019438 @ =gBankTarget
+ mov r8, r0
+ ldrb r1, [r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r2, r0, 2
+ adds r0, r3, 0
+ adds r0, 0x8
+ adds r0, r2, r0
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _0801935C
+ adds r0, r3, 0
+ adds r0, 0xC
+ adds r0, r2, r0
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _0801935C
+ bl _08019F76
+_0801935C:
+ adds r0, r1, 0
+ muls r0, r6
+ adds r0, r5
+ ldrh r0, [r0, 0x28]
+ cmp r0, 0
+ bne _0801936C
+ bl _08019F76
+_0801936C:
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x3
+ bl __umodsi3
+ lsls r0, 16
+ cmp r0, 0
+ beq _08019384
+ bl _08019F76
+_08019384:
+ ldrb r0, [r7]
+ muls r0, r6
+ adds r0, r5
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, 0xC
+ bne _08019396
+ bl _08019F76
+_08019396:
+ ldr r0, [sp, 0x8]
+ ldr r1, [sp, 0x10]
+ bl GetGenderFromSpeciesAndPersonality
+ adds r4, r0, 0
+ ldr r0, [sp, 0xC]
+ ldr r1, [sp, 0x14]
+ bl GetGenderFromSpeciesAndPersonality
+ lsls r4, 24
+ lsls r0, 24
+ cmp r4, r0
+ bne _080193B4
+ bl _08019F76
+_080193B4:
+ ldrb r0, [r7]
+ muls r0, r6
+ adds r4, r5, 0
+ adds r4, 0x50
+ adds r0, r4
+ ldr r0, [r0]
+ movs r1, 0xF0
+ lsls r1, 12
+ ands r0, r1
+ cmp r0, 0
+ beq _080193CE
+ bl _08019F76
+_080193CE:
+ ldr r0, [sp, 0x8]
+ ldr r1, [sp, 0x10]
+ bl GetGenderFromSpeciesAndPersonality
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xFF
+ bne _080193E2
+ bl _08019F76
+_080193E2:
+ ldr r0, [sp, 0xC]
+ ldr r1, [sp, 0x14]
+ bl GetGenderFromSpeciesAndPersonality
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0xFF
+ bne _080193F6
+ bl _08019F76
+_080193F6:
+ ldrb r0, [r7]
+ adds r2, r0, 0
+ muls r2, r6
+ adds r2, r4
+ ldr r1, _0801943C @ =gBitTable
+ mov r3, r8
+ ldrb r0, [r3]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, [r0]
+ lsls r1, 16
+ ldr r0, [r2]
+ orrs r0, r1
+ str r0, [r2]
+ bl b_movescr_stack_push_cursor
+ ldr r1, _08019440 @ =gBattlescriptCurrInstr
+ ldr r0, _08019444 @ =gUnknown_081D9943
+ str r0, [r1]
+ bl _08019F22
+ .align 2, 0
+_08019420: .4byte gBattleMoveFlags
+_08019424: .4byte gBattleMons
+_08019428: .4byte gBankAttacker
+_0801942C: .4byte gProtectStructs
+_08019430: .4byte gBattleMoves
+_08019434: .4byte gSpecialStatuses
+_08019438: .4byte gBankTarget
+_0801943C: .4byte gBitTable
+_08019440: .4byte gBattlescriptCurrInstr
+_08019444: .4byte gUnknown_081D9943
+_08019448:
+ movs r5, 0
+ mov r10, r5
+ ldr r0, _0801947C @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r10, r0
+ bcc _08019458
+ bl _08019F76
+_08019458:
+ ldr r1, _08019480 @ =gBattleMons
+ movs r0, 0x58
+ mov r2, r10
+ muls r2, r0
+ adds r0, r2, 0
+ adds r0, r1
+ adds r0, 0x20
+ ldrb r0, [r0]
+ subs r0, 0x7
+ adds r2, r1, 0
+ cmp r0, 0x41
+ bls _08019472
+ b _080196D6
+_08019472:
+ lsls r0, 2
+ ldr r1, _08019484 @ =_08019488
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0801947C: .4byte gNoOfAllBanks
+_08019480: .4byte gBattleMons
+_08019484: .4byte _08019488
+ .align 2, 0
+_08019488:
+ .4byte _080195EC
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196B0
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _08019614
+ .4byte _080196D6
+ .4byte _08019590
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080195BC
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _08019680
+ .4byte _08019650
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _080196D6
+ .4byte _08019614
+_08019590:
+ movs r0, 0x58
+ mov r3, r10
+ muls r3, r0
+ adds r0, r3, 0
+ adds r1, r2, 0
+ adds r1, 0x4C
+ adds r0, r1
+ ldr r0, [r0]
+ ldr r1, _080195B0 @ =0x00000f88
+ ands r0, r1
+ cmp r0, 0
+ bne _080195AA
+ b _080196D6
+_080195AA:
+ ldr r0, _080195B4 @ =gBattleTextBuff1
+ ldr r1, _080195B8 @ =gStatusConditionString_PoisonJpn
+ b _0801969C
+ .align 2, 0
+_080195B0: .4byte 0x00000f88
+_080195B4: .4byte gBattleTextBuff1
+_080195B8: .4byte gStatusConditionString_PoisonJpn
+_080195BC:
+ movs r0, 0x58
+ mov r1, r10
+ muls r1, r0
+ adds r0, r1, 0
+ adds r1, r2, 0
+ adds r1, 0x50
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x7
+ ands r0, r1
+ cmp r0, 0
+ bne _080195D6
+ b _080196D6
+_080195D6:
+ ldr r0, _080195E4 @ =gBattleTextBuff1
+ ldr r1, _080195E8 @ =gStatusConditionString_ConfusionJpn
+ bl StringCopy
+ movs r2, 0x2
+ mov r9, r2
+ b _080196DC
+ .align 2, 0
+_080195E4: .4byte gBattleTextBuff1
+_080195E8: .4byte gStatusConditionString_ConfusionJpn
+_080195EC:
+ movs r0, 0x58
+ mov r3, r10
+ muls r3, r0
+ adds r0, r3, 0
+ adds r1, r2, 0
+ adds r1, 0x4C
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _080196D6
+ ldr r0, _0801960C @ =gBattleTextBuff1
+ ldr r1, _08019610 @ =gStatusConditionString_ParalysisJpn
+ b _0801969C
+ .align 2, 0
+_0801960C: .4byte gBattleTextBuff1
+_08019610: .4byte gStatusConditionString_ParalysisJpn
+_08019614:
+ movs r0, 0x58
+ mov r3, r10
+ muls r3, r0
+ adds r0, r2, 0
+ adds r0, 0x4C
+ adds r0, r3, r0
+ ldr r0, [r0]
+ movs r1, 0x7
+ ands r0, r1
+ cmp r0, 0
+ beq _080196D6
+ adds r2, 0x50
+ adds r2, r3, r2
+ ldr r0, [r2]
+ ldr r1, _08019644 @ =0xf7ffffff
+ ands r0, r1
+ str r0, [r2]
+ ldr r0, _08019648 @ =gBattleTextBuff1
+ ldr r1, _0801964C @ =gStatusConditionString_SleepJpn
+ bl StringCopy
+ movs r0, 0x1
+ mov r9, r0
+ b _080196DC
+ .align 2, 0
+_08019644: .4byte 0xf7ffffff
+_08019648: .4byte gBattleTextBuff1
+_0801964C: .4byte gStatusConditionString_SleepJpn
+_08019650:
+ movs r0, 0x58
+ mov r1, r10
+ muls r1, r0
+ adds r0, r1, 0
+ adds r1, r2, 0
+ adds r1, 0x4C
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080196D6
+ ldr r0, _08019678 @ =gBattleTextBuff1
+ ldr r1, _0801967C @ =gStatusConditionString_BurnJpn
+ bl StringCopy
+ movs r2, 0x1
+ mov r9, r2
+ b _080196DC
+ .align 2, 0
+_08019678: .4byte gBattleTextBuff1
+_0801967C: .4byte gStatusConditionString_BurnJpn
+_08019680:
+ movs r0, 0x58
+ mov r3, r10
+ muls r3, r0
+ adds r0, r3, 0
+ adds r1, r2, 0
+ adds r1, 0x4C
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080196D6
+ ldr r0, _080196A8 @ =gBattleTextBuff1
+ ldr r1, _080196AC @ =gStatusConditionString_IceJpn
+_0801969C:
+ bl StringCopy
+ movs r5, 0x1
+ mov r9, r5
+ b _080196DC
+ .align 2, 0
+_080196A8: .4byte gBattleTextBuff1
+_080196AC: .4byte gStatusConditionString_IceJpn
+_080196B0:
+ movs r0, 0x58
+ mov r1, r10
+ muls r1, r0
+ adds r0, r1, 0
+ adds r1, r2, 0
+ adds r1, 0x50
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0xF0
+ lsls r1, 12
+ ands r0, r1
+ cmp r0, 0
+ beq _080196D6
+ ldr r0, _080196EC @ =gBattleTextBuff1
+ ldr r1, _080196F0 @ =gStatusConditionString_LoveJpn
+ bl StringCopy
+ movs r2, 0x3
+ mov r9, r2
+_080196D6:
+ mov r3, r9
+ cmp r3, 0
+ beq _08019798
+_080196DC:
+ mov r5, r9
+ cmp r5, 0x2
+ beq _08019710
+ cmp r5, 0x2
+ bgt _080196F4
+ cmp r5, 0x1
+ beq _080196FC
+ b _0801973C
+ .align 2, 0
+_080196EC: .4byte gBattleTextBuff1
+_080196F0: .4byte gStatusConditionString_LoveJpn
+_080196F4:
+ mov r0, r9
+ cmp r0, 0x3
+ beq _08019728
+ b _0801973C
+_080196FC:
+ ldr r1, _0801970C @ =gBattleMons
+ movs r0, 0x58
+ mov r2, r10
+ muls r2, r0
+ adds r1, 0x4C
+ adds r2, r1
+ movs r0, 0
+ b _0801973A
+ .align 2, 0
+_0801970C: .4byte gBattleMons
+_08019710:
+ ldr r1, _08019724 @ =gBattleMons
+ movs r0, 0x58
+ mov r2, r10
+ muls r2, r0
+ adds r1, 0x50
+ adds r2, r1
+ ldr r0, [r2]
+ movs r1, 0x8
+ negs r1, r1
+ b _08019738
+ .align 2, 0
+_08019724: .4byte gBattleMons
+_08019728:
+ ldr r1, _08019778 @ =gBattleMons
+ movs r0, 0x58
+ mov r2, r10
+ muls r2, r0
+ adds r1, 0x50
+ adds r2, r1
+ ldr r0, [r2]
+ ldr r1, _0801977C @ =0xfff0ffff
+_08019738:
+ ands r0, r1
+_0801973A:
+ str r0, [r2]
+_0801973C:
+ bl b_movescr_stack_push_cursor
+ ldr r1, _08019780 @ =gBattlescriptCurrInstr
+ ldr r0, _08019784 @ =gUnknown_081D9956
+ str r0, [r1]
+ ldr r0, _08019788 @ =0x02000000
+ ldr r1, _0801978C @ =0x00016003
+ adds r0, r1
+ mov r2, r10
+ strb r2, [r0]
+ ldr r4, _08019790 @ =gActiveBank
+ strb r2, [r4]
+ ldrb r1, [r4]
+ movs r0, 0x58
+ muls r0, r1
+ ldr r1, _08019794 @ =gUnknown_02024ACC
+ adds r0, r1
+ str r0, [sp]
+ movs r0, 0
+ movs r1, 0x28
+ movs r2, 0
+ movs r3, 0x4
+ bl EmitSetAttributes
+ ldrb r0, [r4]
+ bl MarkBufferBankForExecution
+ bl _08019F92
+ .align 2, 0
+_08019778: .4byte gBattleMons
+_0801977C: .4byte 0xfff0ffff
+_08019780: .4byte gBattlescriptCurrInstr
+_08019784: .4byte gUnknown_081D9956
+_08019788: .4byte 0x02000000
+_0801978C: .4byte 0x00016003
+_08019790: .4byte gActiveBank
+_08019794: .4byte gUnknown_02024ACC
+_08019798:
+ mov r0, r10
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ ldr r0, _080197B0 @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r10, r0
+ bcs _080197AC
+ b _08019458
+_080197AC:
+ bl _08019F76
+ .align 2, 0
+_080197B0: .4byte gNoOfAllBanks
+_080197B4:
+ movs r3, 0
+ mov r10, r3
+ ldr r0, _080197FC @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r10, r0
+ bcc _080197C2
+ b _08019F76
+_080197C2:
+ ldr r4, _08019800 @ =gBattleMons
+_080197C4:
+ movs r0, 0x58
+ mov r5, r10
+ muls r5, r0
+ adds r0, r5, 0
+ adds r0, r4
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, 0x3B
+ bne _080197E8
+ mov r0, r10
+ bl castform_switch
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ cmp r0, 0
+ beq _080197E8
+ b _08019E40
+_080197E8:
+ mov r0, r10
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r10, r0
+ ldr r0, _080197FC @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r10, r0
+ bcc _080197C4
+ b _08019F76
+ .align 2, 0
+_080197FC: .4byte gNoOfAllBanks
+_08019800: .4byte gBattleMons
+_08019804:
+ mov r1, r8
+ ldrb r0, [r1]
+ cmp r0, 0x1C
+ beq _0801980E
+ b _08019F76
+_0801980E:
+ ldr r4, _08019860 @ =gHitMarker
+ ldr r1, [r4]
+ movs r0, 0x80
+ lsls r0, 7
+ ands r0, r1
+ cmp r0, 0
+ bne _0801981E
+ b _08019F76
+_0801981E:
+ ldr r0, _08019864 @ =0xffffbfff
+ ands r1, r0
+ str r1, [r4]
+ ldr r3, _08019868 @ =0x000160ca
+ adds r2, r7, r3
+ ldrb r1, [r2]
+ movs r0, 0x3F
+ ands r0, r1
+ strb r0, [r2]
+ cmp r0, 0x6
+ bne _08019838
+ movs r0, 0x2
+ strb r0, [r2]
+_08019838:
+ ldr r1, _0801986C @ =gBattleCommunication
+ ldrb r0, [r2]
+ adds r0, 0x40
+ strb r0, [r1, 0x3]
+ ldr r0, _08019870 @ =gBankTarget
+ ldrb r1, [r0]
+ ldr r5, _08019874 @ =0x00016003
+ adds r0, r7, r5
+ strb r1, [r0]
+ bl b_movescr_stack_push_cursor
+ ldr r1, _08019878 @ =gBattlescriptCurrInstr
+ ldr r0, _0801987C @ =gUnknown_081D9953
+ str r0, [r1]
+ ldr r0, [r4]
+ movs r1, 0x80
+ lsls r1, 6
+ orrs r0, r1
+ str r0, [r4]
+ b _08019F22
+ .align 2, 0
+_08019860: .4byte gHitMarker
+_08019864: .4byte 0xffffbfff
+_08019868: .4byte 0x000160ca
+_0801986C: .4byte gBattleCommunication
+_08019870: .4byte gBankTarget
+_08019874: .4byte 0x00016003
+_08019878: .4byte gBattlescriptCurrInstr
+_0801987C: .4byte gUnknown_081D9953
+_08019880:
+ mov r1, r8
+ ldrb r0, [r1]
+ cmp r0, 0x1C
+ beq _0801988A
+ b _08019F76
+_0801988A:
+ ldr r4, _080198DC @ =gHitMarker
+ ldr r1, [r4]
+ movs r0, 0x80
+ lsls r0, 7
+ ands r0, r1
+ cmp r0, 0
+ bne _0801989A
+ b _08019F76
+_0801989A:
+ ldr r0, _080198E0 @ =0xffffbfff
+ ands r1, r0
+ str r1, [r4]
+ ldr r3, _080198E4 @ =0x000160ca
+ adds r2, r7, r3
+ ldrb r1, [r2]
+ movs r0, 0x3F
+ ands r0, r1
+ strb r0, [r2]
+ cmp r0, 0x6
+ bne _080198B4
+ movs r0, 0x2
+ strb r0, [r2]
+_080198B4:
+ ldr r1, _080198E8 @ =gBattleCommunication
+ ldrb r0, [r2]
+ strb r0, [r1, 0x3]
+ ldr r0, _080198EC @ =gBankAttacker
+ ldrb r1, [r0]
+ ldr r5, _080198F0 @ =0x00016003
+ adds r0, r7, r5
+ strb r1, [r0]
+ bl b_movescr_stack_push_cursor
+ ldr r1, _080198F4 @ =gBattlescriptCurrInstr
+ ldr r0, _080198F8 @ =gUnknown_081D9953
+ str r0, [r1]
+ ldr r0, [r4]
+ movs r1, 0x80
+ lsls r1, 6
+ orrs r0, r1
+ str r0, [r4]
+ b _08019F22
+ .align 2, 0
+_080198DC: .4byte gHitMarker
+_080198E0: .4byte 0xffffbfff
+_080198E4: .4byte 0x000160ca
+_080198E8: .4byte gBattleCommunication
+_080198EC: .4byte gBankAttacker
+_080198F0: .4byte 0x00016003
+_080198F4: .4byte gBattlescriptCurrInstr
+_080198F8: .4byte gUnknown_081D9953
+_080198FC:
+ movs r4, 0
+ ldr r0, _08019934 @ =gNoOfAllBanks
+ ldrb r1, [r0]
+ cmp r4, r1
+ blt _08019908
+ b _08019F76
+_08019908:
+ ldr r0, _08019938 @ =gBattleMons
+ adds r5, r1, 0
+ ldr r2, _0801993C @ =gStatuses3
+ adds r3, r0, 0
+ adds r3, 0x20
+ movs r6, 0x80
+ lsls r6, 12
+_08019916:
+ ldrb r1, [r3]
+ cmp r1, 0x16
+ bne _08019926
+ ldr r0, [r2]
+ ands r0, r6
+ cmp r0, 0
+ beq _08019926
+ b _08019E6C
+_08019926:
+ adds r2, 0x4
+ adds r3, 0x58
+ adds r4, 0x1
+ cmp r4, r5
+ blt _08019916
+ b _08019F76
+ .align 2, 0
+_08019934: .4byte gNoOfAllBanks
+_08019938: .4byte gBattleMons
+_0801993C: .4byte gStatuses3
+_08019940:
+ movs r4, 0
+ ldr r0, _08019A1C @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ blt _0801994C
+ b _08019F76
+_0801994C:
+ ldr r0, _08019A20 @ =gActiveBank
+ mov r8, r0
+ ldr r1, _08019A24 @ =gBattleMons
+ adds r1, 0x20
+ str r1, [sp, 0x1C]
+ movs r2, 0
+ str r2, [sp, 0x20]
+_0801995A:
+ ldr r3, [sp, 0x1C]
+ ldrb r0, [r3]
+ cmp r0, 0x24
+ beq _08019964
+ b _08019AF6
+_08019964:
+ ldr r0, _08019A28 @ =gStatuses3
+ ldr r5, [sp, 0x20]
+ adds r0, r5, r0
+ ldr r1, [r0]
+ movs r0, 0x80
+ lsls r0, 13
+ ands r1, r0
+ str r5, [sp, 0x18]
+ cmp r1, 0
+ bne _0801997A
+ b _08019AF6
+_0801997A:
+ lsls r0, r4, 24
+ lsrs r0, 24
+ bl GetBankIdentity
+ movs r1, 0x1
+ adds r5, r0, 0
+ eors r5, r1
+ ands r5, r1
+ adds r0, r5, 0
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r6, r0, 24
+ adds r0, r5, 0x2
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r0, _08019A2C @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r2, 0x1
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _080199AE
+ b _08019ABC
+_080199AE:
+ movs r1, 0x58
+ adds r0, r6, 0
+ muls r0, r1
+ ldr r3, _08019A24 @ =gBattleMons
+ adds r1, r0, r3
+ adds r0, r1, 0
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08019A78
+ ldrh r0, [r1, 0x28]
+ cmp r0, 0
+ beq _08019A34
+ movs r1, 0x58
+ adds r0, r7, 0
+ muls r0, r1
+ adds r1, r0, r3
+ adds r0, r1, 0
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08019A34
+ ldrh r0, [r1, 0x28]
+ cmp r0, 0
+ beq _08019A34
+ str r2, [sp, 0x24]
+ bl Random
+ ldr r2, [sp, 0x24]
+ adds r1, r2, 0
+ ands r1, r0
+ lsls r1, 1
+ orrs r5, r1
+ adds r0, r5, 0
+ bl GetBankByPlayerAI
+ mov r2, r8
+ strb r0, [r2]
+ ldrb r0, [r2]
+ movs r3, 0x58
+ muls r0, r3
+ ldr r5, _08019A24 @ =gBattleMons
+ adds r0, r5
+ adds r0, 0x20
+ ldrb r0, [r0]
+ ldr r1, [sp, 0x1C]
+ strb r0, [r1]
+ ldrb r0, [r2]
+ muls r0, r3
+ adds r0, r5
+ adds r0, 0x20
+ ldrb r0, [r0]
+ ldr r2, _08019A30 @ =gLastUsedAbility
+ strb r0, [r2]
+ b _08019AE4
+ .align 2, 0
+_08019A1C: .4byte gNoOfAllBanks
+_08019A20: .4byte gActiveBank
+_08019A24: .4byte gBattleMons
+_08019A28: .4byte gStatuses3
+_08019A2C: .4byte gBattleTypeFlags
+_08019A30: .4byte gLastUsedAbility
+_08019A34:
+ ldr r3, _08019A74 @ =gBattleMons
+ movs r2, 0x58
+ adds r0, r6, 0
+ muls r0, r2
+ adds r1, r0, r3
+ adds r0, r1, 0
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08019A78
+ ldrh r0, [r1, 0x28]
+ cmp r0, 0
+ beq _08019A78
+ mov r5, r8
+ strb r6, [r5]
+ adds r1, r4, 0
+ muls r1, r2
+ adds r1, r3
+ ldrb r0, [r5]
+ muls r0, r2
+ adds r0, r3
+ adds r0, 0x20
+ ldrb r0, [r0]
+ adds r1, 0x20
+ strb r0, [r1]
+ ldrb r0, [r5]
+ muls r0, r2
+ adds r0, r3
+ adds r0, 0x20
+ ldrb r0, [r0]
+ b _08019AE0
+ .align 2, 0
+_08019A74: .4byte gBattleMons
+_08019A78:
+ ldr r3, _08019AB8 @ =gBattleMons
+ movs r2, 0x58
+ adds r0, r7, 0
+ muls r0, r2
+ adds r1, r0, r3
+ adds r0, r1, 0
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08019AEE
+ ldrh r0, [r1, 0x28]
+ cmp r0, 0
+ beq _08019AEE
+ mov r5, r8
+ strb r7, [r5]
+ adds r1, r4, 0
+ muls r1, r2
+ adds r1, r3
+ ldrb r0, [r5]
+ muls r0, r2
+ adds r0, r3
+ adds r0, 0x20
+ ldrb r0, [r0]
+ adds r1, 0x20
+ strb r0, [r1]
+ ldrb r0, [r5]
+ muls r0, r2
+ adds r0, r3
+ adds r0, 0x20
+ ldrb r0, [r0]
+ b _08019AE0
+ .align 2, 0
+_08019AB8: .4byte gBattleMons
+_08019ABC:
+ mov r2, r8
+ strb r6, [r2]
+ movs r3, 0x58
+ adds r0, r6, 0
+ muls r0, r3
+ ldr r5, _08019B10 @ =gBattleMons
+ adds r0, r5
+ adds r2, r0, 0
+ adds r2, 0x20
+ ldrb r1, [r2]
+ cmp r1, 0
+ beq _08019AEE
+ ldrh r0, [r0, 0x28]
+ cmp r0, 0
+ beq _08019AEE
+ ldr r0, [sp, 0x1C]
+ strb r1, [r0]
+ ldrb r0, [r2]
+_08019AE0:
+ ldr r1, _08019B14 @ =gLastUsedAbility
+ strb r0, [r1]
+_08019AE4:
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_08019AEE:
+ mov r2, r9
+ cmp r2, 0
+ beq _08019AF6
+ b _08019E88
+_08019AF6:
+ ldr r3, [sp, 0x1C]
+ adds r3, 0x58
+ str r3, [sp, 0x1C]
+ ldr r5, [sp, 0x20]
+ adds r5, 0x4
+ str r5, [sp, 0x20]
+ adds r4, 0x1
+ ldr r0, _08019B18 @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ bge _08019B0E
+ b _0801995A
+_08019B0E:
+ b _08019F76
+ .align 2, 0
+_08019B10: .4byte gBattleMons
+_08019B14: .4byte gLastUsedAbility
+_08019B18: .4byte gNoOfAllBanks
+_08019B1C:
+ movs r4, 0
+ ldr r0, _08019B54 @ =gNoOfAllBanks
+ ldrb r1, [r0]
+ cmp r4, r1
+ blt _08019B28
+ b _08019F76
+_08019B28:
+ ldr r0, _08019B58 @ =gBattleMons
+ adds r5, r1, 0
+ ldr r2, _08019B5C @ =gStatuses3
+ adds r3, r0, 0
+ adds r3, 0x20
+ movs r6, 0x80
+ lsls r6, 12
+_08019B36:
+ ldrb r1, [r3]
+ cmp r1, 0x16
+ bne _08019B46
+ ldr r0, [r2]
+ ands r0, r6
+ cmp r0, 0
+ beq _08019B46
+ b _08019F04
+_08019B46:
+ adds r2, 0x4
+ adds r3, 0x58
+ adds r4, 0x1
+ cmp r4, r5
+ blt _08019B36
+ b _08019F76
+ .align 2, 0
+_08019B54: .4byte gNoOfAllBanks
+_08019B58: .4byte gBattleMons
+_08019B5C: .4byte gStatuses3
+_08019B60:
+ mov r0, r10
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r4, 0
+ ldr r0, _08019BB0 @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ blt _08019B76
+ b _08019F76
+_08019B76:
+ ldr r7, _08019BB4 @ =gBattleMons
+_08019B78:
+ lsls r0, r4, 24
+ lsrs r0, 24
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ adds r3, r4, 0x1
+ cmp r0, r5
+ beq _08019BA2
+ movs r0, 0x58
+ muls r0, r4
+ adds r0, r7
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, r6
+ bne _08019BA2
+ ldr r0, _08019BB8 @ =gLastUsedAbility
+ strb r6, [r0]
+ lsls r0, r3, 24
+ lsrs r0, 24
+ mov r9, r0
+_08019BA2:
+ adds r4, r3, 0
+ ldr r0, _08019BB0 @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ blt _08019B78
+ b _08019F76
+ .align 2, 0
+_08019BB0: .4byte gNoOfAllBanks
+_08019BB4: .4byte gBattleMons
+_08019BB8: .4byte gLastUsedAbility
+_08019BBC:
+ mov r0, r10
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r4, 0
+ ldr r0, _08019C0C @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ blt _08019BD2
+ b _08019F76
+_08019BD2:
+ ldr r7, _08019C10 @ =gBattleMons
+_08019BD4:
+ lsls r0, r4, 24
+ lsrs r0, 24
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ adds r3, r4, 0x1
+ cmp r0, r5
+ bne _08019BFE
+ movs r0, 0x58
+ muls r0, r4
+ adds r0, r7
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, r6
+ bne _08019BFE
+ ldr r0, _08019C14 @ =gLastUsedAbility
+ strb r6, [r0]
+ lsls r0, r3, 24
+ lsrs r0, 24
+ mov r9, r0
+_08019BFE:
+ adds r4, r3, 0
+ ldr r0, _08019C0C @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ blt _08019BD4
+ b _08019F76
+ .align 2, 0
+_08019C0C: .4byte gNoOfAllBanks
+_08019C10: .4byte gBattleMons
+_08019C14: .4byte gLastUsedAbility
+_08019C18:
+ mov r1, r8
+ ldrb r0, [r1]
+ cmp r0, 0xFD
+ beq _08019C40
+ cmp r0, 0xFE
+ beq _08019C78
+ movs r4, 0
+ ldr r0, _08019C38 @ =gNoOfAllBanks
+ adds r5, r0, 0
+ ldrb r2, [r5]
+ cmp r4, r2
+ blt _08019C32
+ b _08019F76
+_08019C32:
+ ldr r2, _08019C3C @ =gBattleMons
+ b _08019CB0
+ .align 2, 0
+_08019C38: .4byte gNoOfAllBanks
+_08019C3C: .4byte gBattleMons
+_08019C40:
+ movs r4, 0
+ ldr r0, _08019C70 @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ blt _08019C4C
+ b _08019F76
+_08019C4C:
+ ldr r5, _08019C74 @ =gStatuses3
+ movs r2, 0x80
+ lsls r2, 9
+ adds r1, r0, 0
+_08019C54:
+ lsls r0, r4, 2
+ adds r0, r5
+ ldr r0, [r0]
+ ands r0, r2
+ adds r3, r4, 0x1
+ cmp r0, 0
+ beq _08019C68
+ lsls r0, r3, 24
+ lsrs r0, 24
+ mov r9, r0
+_08019C68:
+ adds r4, r3, 0
+ cmp r4, r1
+ blt _08019C54
+ b _08019F76
+ .align 2, 0
+_08019C70: .4byte gNoOfAllBanks
+_08019C74: .4byte gStatuses3
+_08019C78:
+ movs r4, 0
+ ldr r0, _08019CA8 @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ blt _08019C84
+ b _08019F76
+_08019C84:
+ ldr r5, _08019CAC @ =gStatuses3
+ movs r2, 0x80
+ lsls r2, 10
+ adds r1, r0, 0
+_08019C8C:
+ lsls r0, r4, 2
+ adds r0, r5
+ ldr r0, [r0]
+ ands r0, r2
+ adds r3, r4, 0x1
+ cmp r0, 0
+ beq _08019CA0
+ lsls r0, r3, 24
+ lsrs r0, 24
+ mov r9, r0
+_08019CA0:
+ adds r4, r3, 0
+ cmp r4, r1
+ blt _08019C8C
+ b _08019F76
+ .align 2, 0
+_08019CA8: .4byte gNoOfAllBanks
+_08019CAC: .4byte gStatuses3
+_08019CB0:
+ movs r0, 0x58
+ muls r0, r4
+ adds r0, r2
+ adds r0, 0x20
+ ldrb r0, [r0]
+ adds r3, r4, 0x1
+ cmp r0, r6
+ bne _08019CCA
+ mov r0, r8
+ strb r6, [r0]
+ lsls r0, r3, 24
+ lsrs r0, 24
+ mov r9, r0
+_08019CCA:
+ adds r4, r3, 0
+ ldrb r1, [r5]
+ cmp r4, r1
+ blt _08019CB0
+ b _08019F76
+_08019CD4:
+ movs r4, 0
+ ldr r0, _08019D10 @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ blt _08019CE0
+ b _08019F76
+_08019CE0:
+ ldr r7, _08019D14 @ =gBattleMons
+ adds r2, r0, 0
+ movs r5, 0x58
+_08019CE6:
+ adds r0, r4, 0
+ muls r0, r5
+ adds r1, r0, r7
+ adds r0, r1, 0
+ adds r0, 0x20
+ ldrb r0, [r0]
+ adds r3, r4, 0x1
+ cmp r0, r6
+ bne _08019D08
+ ldrh r0, [r1, 0x28]
+ cmp r0, 0
+ beq _08019D08
+ mov r0, r8
+ strb r6, [r0]
+ lsls r0, r3, 24
+ lsrs r0, 24
+ mov r9, r0
+_08019D08:
+ adds r4, r3, 0
+ cmp r4, r2
+ blt _08019CE6
+ b _08019F76
+ .align 2, 0
+_08019D10: .4byte gNoOfAllBanks
+_08019D14: .4byte gBattleMons
+_08019D18:
+ movs r4, 0
+ ldr r0, _08019D50 @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ blt _08019D24
+ b _08019F76
+_08019D24:
+ ldr r7, _08019D54 @ =gBattleMons
+ adds r1, r0, 0
+ movs r5, 0x58
+ ldr r2, _08019D58 @ =gLastUsedAbility
+_08019D2C:
+ adds r0, r4, 0
+ muls r0, r5
+ adds r0, r7
+ adds r0, 0x20
+ ldrb r0, [r0]
+ adds r3, r4, 0x1
+ cmp r0, r6
+ bne _08019D48
+ cmp r4, r10
+ beq _08019D48
+ strb r6, [r2]
+ lsls r0, r3, 24
+ lsrs r0, 24
+ mov r9, r0
+_08019D48:
+ adds r4, r3, 0
+ cmp r4, r1
+ blt _08019D2C
+ b _08019F76
+ .align 2, 0
+_08019D50: .4byte gNoOfAllBanks
+_08019D54: .4byte gBattleMons
+_08019D58: .4byte gLastUsedAbility
+_08019D5C:
+ mov r0, r10
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r4, 0
+ ldr r0, _08019DAC @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ blt _08019D72
+ b _08019F76
+_08019D72:
+ ldr r7, _08019DB0 @ =gBattleMons
+_08019D74:
+ lsls r0, r4, 24
+ lsrs r0, 24
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, r5
+ beq _08019DA0
+ movs r0, 0x58
+ muls r0, r4
+ adds r0, r7
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, r6
+ bne _08019DA0
+ ldr r0, _08019DB4 @ =gLastUsedAbility
+ strb r6, [r0]
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_08019DA0:
+ adds r4, 0x1
+ ldr r0, _08019DAC @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ blt _08019D74
+ b _08019F76
+ .align 2, 0
+_08019DAC: .4byte gNoOfAllBanks
+_08019DB0: .4byte gBattleMons
+_08019DB4: .4byte gLastUsedAbility
+_08019DB8:
+ mov r0, r10
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r4, 0
+ ldr r0, _08019E08 @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ blt _08019DCE
+ b _08019F76
+_08019DCE:
+ ldr r7, _08019E0C @ =gBattleMons
+_08019DD0:
+ lsls r0, r4, 24
+ lsrs r0, 24
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, r5
+ bne _08019DFC
+ movs r0, 0x58
+ muls r0, r4
+ adds r0, r7
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, r6
+ bne _08019DFC
+ ldr r0, _08019E10 @ =gLastUsedAbility
+ strb r6, [r0]
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_08019DFC:
+ adds r4, 0x1
+ ldr r0, _08019E08 @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ blt _08019DD0
+ b _08019F76
+ .align 2, 0
+_08019E08: .4byte gNoOfAllBanks
+_08019E0C: .4byte gBattleMons
+_08019E10: .4byte gLastUsedAbility
+_08019E14:
+ ldr r0, _08019E30 @ =gUnknown_081D977D
+ bl b_push_move_exec
+ ldr r0, _08019E34 @ =0x02000000
+ ldr r2, _08019E38 @ =0x00016003
+ adds r1, r0, r2
+ strb r6, [r1]
+ mov r1, r9
+ subs r1, 0x1
+ ldr r3, _08019E3C @ =0x0001609b
+ adds r0, r3
+ strb r1, [r0]
+ b _08019F76
+ .align 2, 0
+_08019E30: .4byte gUnknown_081D977D
+_08019E34: .4byte 0x02000000
+_08019E38: .4byte 0x00016003
+_08019E3C: .4byte 0x0001609b
+_08019E40:
+ ldr r0, _08019E5C @ =gUnknown_081D977D
+ bl b_push_move_exec
+ ldr r0, _08019E60 @ =0x02000000
+ ldr r5, _08019E64 @ =0x00016003
+ adds r1, r0, r5
+ mov r2, r10
+ strb r2, [r1]
+ mov r1, r9
+ subs r1, 0x1
+ ldr r3, _08019E68 @ =0x0001609b
+ adds r0, r3
+ strb r1, [r0]
+ b _08019F92
+ .align 2, 0
+_08019E5C: .4byte gUnknown_081D977D
+_08019E60: .4byte 0x02000000
+_08019E64: .4byte 0x00016003
+_08019E68: .4byte 0x0001609b
+_08019E6C:
+ mov r5, r8
+ strb r1, [r5]
+ ldr r0, [r2]
+ ldr r1, _08019E80 @ =0xfff7ffff
+ ands r0, r1
+ str r0, [r2]
+ ldr r0, _08019E84 @ =gUnknown_081D978C
+ bl b_push_move_exec
+ b _08019F1A
+ .align 2, 0
+_08019E80: .4byte 0xfff7ffff
+_08019E84: .4byte gUnknown_081D978C
+_08019E88:
+ ldr r0, _08019EDC @ =gUnknown_081D9726
+ bl b_push_move_exec
+ ldr r1, _08019EE0 @ =gStatuses3
+ ldr r2, [sp, 0x18]
+ adds r1, r2, r1
+ ldr r0, [r1]
+ ldr r2, _08019EE4 @ =0xffefffff
+ ands r0, r2
+ str r0, [r1]
+ ldr r0, _08019EE8 @ =0x02000000
+ ldr r3, _08019EEC @ =0x00016003
+ adds r0, r3
+ strb r4, [r0]
+ ldr r1, _08019EF0 @ =gBattleTextBuff1
+ movs r4, 0xFD
+ strb r4, [r1]
+ movs r0, 0x4
+ strb r0, [r1, 0x1]
+ ldr r2, _08019EF4 @ =gActiveBank
+ ldrb r0, [r2]
+ strb r0, [r1, 0x2]
+ ldr r3, _08019EF8 @ =gBattlePartyID
+ ldrb r0, [r2]
+ lsls r0, 1
+ adds r0, r3
+ ldrh r0, [r0]
+ strb r0, [r1, 0x3]
+ movs r0, 0xFF
+ strb r0, [r1, 0x4]
+ ldr r1, _08019EFC @ =gBattleTextBuff2
+ strb r4, [r1]
+ movs r0, 0x9
+ strb r0, [r1, 0x1]
+ ldr r0, _08019F00 @ =gLastUsedAbility
+ ldrb r0, [r0]
+ strb r0, [r1, 0x2]
+ movs r0, 0x1
+ negs r0, r0
+ strb r0, [r1, 0x3]
+ b _08019F76
+ .align 2, 0
+_08019EDC: .4byte gUnknown_081D9726
+_08019EE0: .4byte gStatuses3
+_08019EE4: .4byte 0xffefffff
+_08019EE8: .4byte 0x02000000
+_08019EEC: .4byte 0x00016003
+_08019EF0: .4byte gBattleTextBuff1
+_08019EF4: .4byte gActiveBank
+_08019EF8: .4byte gBattlePartyID
+_08019EFC: .4byte gBattleTextBuff2
+_08019F00: .4byte gLastUsedAbility
+_08019F04:
+ mov r5, r8
+ strb r1, [r5]
+ ldr r0, [r2]
+ ldr r1, _08019F30 @ =0xfff7ffff
+ ands r0, r1
+ str r0, [r2]
+ bl b_movescr_stack_push_cursor
+ ldr r1, _08019F34 @ =gBattlescriptCurrInstr
+ ldr r0, _08019F38 @ =gUnknown_081D9795
+ str r0, [r1]
+_08019F1A:
+ ldr r0, _08019F3C @ =0x02000000
+ ldr r1, _08019F40 @ =0x000160dd
+ adds r0, r1
+ strb r4, [r0]
+_08019F22:
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ b _08019F76
+ .align 2, 0
+_08019F30: .4byte 0xfff7ffff
+_08019F34: .4byte gBattlescriptCurrInstr
+_08019F38: .4byte gUnknown_081D9795
+_08019F3C: .4byte 0x02000000
+_08019F40: .4byte 0x000160dd
+_08019F44:
+ movs r4, 0
+ ldr r0, _08019FA4 @ =gNoOfAllBanks
+ ldrb r1, [r0]
+ cmp r4, r1
+ bge _08019F76
+ ldr r0, _08019FA8 @ =gBattleMons
+ adds r2, r1, 0
+ adds r1, r0, 0
+ adds r1, 0x20
+ ldr r3, _08019FAC @ =gLastUsedAbility
+_08019F58:
+ ldrb r0, [r1]
+ cmp r0, r6
+ bne _08019F6E
+ cmp r4, r10
+ beq _08019F6E
+ strb r6, [r3]
+ mov r0, r9
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+_08019F6E:
+ adds r1, 0x58
+ adds r4, 0x1
+ cmp r4, r2
+ blt _08019F58
+_08019F76:
+ mov r2, r9
+ cmp r2, 0
+ beq _08019F92
+_08019F7C:
+ ldr r3, [sp, 0x4]
+ cmp r3, 0xB
+ bhi _08019F92
+ ldr r1, _08019FAC @ =gLastUsedAbility
+ ldrb r0, [r1]
+ cmp r0, 0xFF
+ beq _08019F92
+ adds r1, r0, 0
+ mov r0, r10
+ bl sub_81074C4
+_08019F92:
+ mov r0, r9
+ add sp, 0x28
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08019FA4: .4byte gNoOfAllBanks
+_08019FA8: .4byte gBattleMons
+_08019FAC: .4byte gLastUsedAbility
+ thumb_func_end AbilityBattleEffects
+
+ thumb_func_start b_call_bc_move_exec
+b_call_bc_move_exec: @ 8019FB0
+ ldr r1, _08019FD8 @ =gBattlescriptCurrInstr
+ str r0, [r1]
+ ldr r3, _08019FDC @ =0x02017140
+ adds r2, r3, 0
+ adds r2, 0x20
+ ldrb r0, [r2]
+ adds r1, r0, 0x1
+ strb r1, [r2]
+ lsls r0, 24
+ lsrs r0, 22
+ adds r0, r3
+ ldr r2, _08019FE0 @ =gBattleMainFunc
+ ldr r1, [r2]
+ str r1, [r0]
+ ldr r0, _08019FE4 @ =sub_8013F54
+ str r0, [r2]
+ ldr r1, _08019FE8 @ =gFightStateTracker
+ movs r0, 0
+ strb r0, [r1]
+ bx lr
+ .align 2, 0
+_08019FD8: .4byte gBattlescriptCurrInstr
+_08019FDC: .4byte 0x02017140
+_08019FE0: .4byte gBattleMainFunc
+_08019FE4: .4byte sub_8013F54
+_08019FE8: .4byte gFightStateTracker
+ thumb_func_end b_call_bc_move_exec
+
+ thumb_func_start b_push_move_exec
+b_push_move_exec: @ 8019FEC
+ push {r4,lr}
+ adds r4, r0, 0
+ bl b_movescr_stack_push_cursor
+ ldr r0, _0801A01C @ =gBattlescriptCurrInstr
+ str r4, [r0]
+ ldr r3, _0801A020 @ =0x02017140
+ adds r2, r3, 0
+ adds r2, 0x20
+ ldrb r0, [r2]
+ adds r1, r0, 0x1
+ strb r1, [r2]
+ lsls r0, 24
+ lsrs r0, 22
+ adds r0, r3
+ ldr r2, _0801A024 @ =gBattleMainFunc
+ ldr r1, [r2]
+ str r1, [r0]
+ ldr r0, _0801A028 @ =sub_8013FBC
+ str r0, [r2]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0801A01C: .4byte gBattlescriptCurrInstr
+_0801A020: .4byte 0x02017140
+_0801A024: .4byte gBattleMainFunc
+_0801A028: .4byte sub_8013FBC
+ thumb_func_end b_push_move_exec
+
+ thumb_func_start sub_801A02C
+sub_801A02C: @ 801A02C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x2C
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x8]
+ lsls r1, 24
+ lsrs r7, r1, 24
+ lsls r2, 24
+ lsrs r6, r2, 24
+ movs r0, 0
+ mov r10, r0
+ movs r1, 0
+ str r1, [sp, 0xC]
+ add r0, sp, 0x4
+ strb r1, [r0]
+ ldr r4, _0801A078 @ =gLastUsedItem
+ ldr r1, _0801A07C @ =gBattleMons
+ movs r0, 0x58
+ muls r0, r7
+ adds r0, r1
+ ldrh r0, [r0, 0x2E]
+ strh r0, [r4]
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0xAF
+ bne _0801A084
+ ldr r1, _0801A080 @ =gEnigmaBerries
+ lsls r0, r7, 3
+ subs r0, r7
+ lsls r0, 2
+ adds r0, r1
+ ldrb r5, [r0, 0x7]
+ ldrb r0, [r0, 0x1A]
+ b _0801A098
+ .align 2, 0
+_0801A078: .4byte gLastUsedItem
+_0801A07C: .4byte gBattleMons
+_0801A080: .4byte gEnigmaBerries
+_0801A084:
+ ldrh r0, [r4]
+ bl ItemId_GetHoldEffect
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldrh r0, [r4]
+ bl ItemId_GetHoldEffectParam
+ lsls r0, 24
+ lsrs r0, 24
+_0801A098:
+ mov r9, r0
+ ldr r1, _0801A0C0 @ =gBattleMons
+ ldr r0, _0801A0C4 @ =gBankAttacker
+ ldrb r2, [r0]
+ movs r0, 0x58
+ muls r0, r2
+ adds r0, r1
+ ldrh r0, [r0, 0x2E]
+ str r0, [sp, 0x14]
+ cmp r0, 0xAF
+ bne _0801A0CC
+ ldr r1, _0801A0C8 @ =gEnigmaBerries
+ lsls r0, r2, 3
+ subs r0, r2
+ lsls r0, 2
+ adds r0, r1
+ ldrb r3, [r0, 0x7]
+ mov r8, r3
+ ldrb r0, [r0, 0x1A]
+ b _0801A0E2
+ .align 2, 0
+_0801A0C0: .4byte gBattleMons
+_0801A0C4: .4byte gBankAttacker
+_0801A0C8: .4byte gEnigmaBerries
+_0801A0CC:
+ ldr r0, [sp, 0x14]
+ bl ItemId_GetHoldEffect
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldr r0, [sp, 0x14]
+ bl ItemId_GetHoldEffectParam
+ lsls r0, 24
+ lsrs r0, 24
+_0801A0E2:
+ str r0, [sp, 0x10]
+ ldr r2, _0801A118 @ =gBattleMons
+ ldr r0, _0801A11C @ =gBankTarget
+ ldrb r1, [r0]
+ movs r0, 0x58
+ muls r0, r1
+ adds r0, r2
+ ldrh r4, [r0, 0x2E]
+ cmp r4, 0xAF
+ beq _0801A102
+ adds r0, r4, 0
+ bl ItemId_GetHoldEffect
+ adds r0, r4, 0
+ bl ItemId_GetHoldEffectParam
+_0801A102:
+ ldr r4, [sp, 0x8]
+ cmp r4, 0x4
+ bls _0801A10C
+ bl _0801B3CA
+_0801A10C:
+ lsls r0, r4, 2
+ ldr r1, _0801A120 @ =_0801A124
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0801A118: .4byte gBattleMons
+_0801A11C: .4byte gBankTarget
+_0801A120: .4byte _0801A124
+ .align 2, 0
+_0801A124:
+ .4byte _0801A138
+ .4byte _0801A1D4
+ .4byte _0801B3CA
+ .4byte _0801AE0C
+ .4byte _0801B26C
+_0801A138:
+ cmp r5, 0x17
+ beq _0801A15C
+ cmp r5, 0x20
+ beq _0801A144
+ bl _0801B3CA
+_0801A144:
+ ldr r0, _0801A154 @ =0x02000000
+ ldr r5, _0801A158 @ =0x00016056
+ adds r0, r5
+ movs r1, 0x2
+ strb r1, [r0]
+ bl _0801B3CA
+ .align 2, 0
+_0801A154: .4byte 0x02000000
+_0801A158: .4byte 0x00016056
+_0801A15C:
+ ldr r0, _0801A1B8 @ =gBattleMons
+ mov r8, r0
+ movs r0, 0x58
+ adds r1, r7, 0
+ muls r1, r0
+ mov r0, r8
+ adds r0, 0x18
+ adds r1, r0
+ movs r2, 0x6
+ movs r3, 0x7
+ mov r10, r3
+_0801A172:
+ movs r0, 0
+ ldrsb r0, [r1, r0]
+ cmp r0, 0x5
+ bgt _0801A180
+ strb r2, [r1]
+ movs r4, 0x5
+ str r4, [sp, 0xC]
+_0801A180:
+ adds r1, 0x1
+ movs r5, 0x1
+ negs r5, r5
+ add r10, r5
+ mov r0, r10
+ cmp r0, 0
+ bge _0801A172
+ ldr r1, [sp, 0xC]
+ cmp r1, 0
+ bne _0801A198
+ bl _0801B3CA
+_0801A198:
+ ldr r0, _0801A1BC @ =0x02000000
+ ldr r2, _0801A1C0 @ =0x00016003
+ adds r0, r2
+ strb r7, [r0]
+ ldr r0, _0801A1C4 @ =gStringBank
+ strb r7, [r0]
+ ldr r1, _0801A1C8 @ =gActiveBank
+ ldr r0, _0801A1CC @ =gBankAttacker
+ strb r7, [r0]
+ strb r7, [r1]
+ ldr r0, _0801A1D0 @ =gUnknown_081D9A5E
+ bl b_call_bc_move_exec
+ bl _0801B3CA
+ .align 2, 0
+_0801A1B8: .4byte gBattleMons
+_0801A1BC: .4byte 0x02000000
+_0801A1C0: .4byte 0x00016003
+_0801A1C4: .4byte gStringBank
+_0801A1C8: .4byte gActiveBank
+_0801A1CC: .4byte gBankAttacker
+_0801A1D0: .4byte gUnknown_081D9A5E
+_0801A1D4:
+ ldr r1, _0801A1FC @ =gBattleMons
+ movs r0, 0x58
+ muls r0, r7
+ adds r0, r1
+ ldrh r0, [r0, 0x28]
+ mov r8, r1
+ cmp r0, 0
+ bne _0801A1E8
+ bl _0801B3CA
+_0801A1E8:
+ subs r0, r5, 0x1
+ cmp r0, 0x2A
+ bls _0801A1F2
+ bl _0801AD5A
+_0801A1F2:
+ lsls r0, 2
+ ldr r1, _0801A200 @ =_0801A204
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0801A1FC: .4byte gBattleMons
+_0801A200: .4byte _0801A204
+ .align 2, 0
+_0801A204:
+ .4byte _0801A2B0
+ .4byte _0801AAC8
+ .4byte _0801AB84
+ .4byte _0801AAF8
+ .4byte _0801AB2C
+ .4byte _0801AB5C
+ .4byte _0801A2F8
+ .4byte _0801ABC8
+ .4byte _0801ABF8
+ .4byte _0801A4CC
+ .4byte _0801A548
+ .4byte _0801A5C4
+ .4byte _0801A634
+ .4byte _0801A6C8
+ .4byte _0801A75C
+ .4byte _0801A7D4
+ .4byte _0801A838
+ .4byte _0801A89C
+ .4byte _0801A900
+ .4byte _0801A97C
+ .4byte _0801A9C8
+ .4byte _0801AD5A
+ .4byte _0801A3F8
+ .4byte _0801AD5A
+ .4byte _0801AD5A
+ .4byte _0801AD5A
+ .4byte _0801AD5A
+ .4byte _0801AD24
+ .4byte _0801AD5A
+ .4byte _0801AD5A
+ .4byte _0801AD5A
+ .4byte _0801AD5A
+ .4byte _0801AD5A
+ .4byte _0801AD5A
+ .4byte _0801AD5A
+ .4byte _0801AD5A
+ .4byte _0801AD5A
+ .4byte _0801AD5A
+ .4byte _0801AD5A
+ .4byte _0801AD5A
+ .4byte _0801AD5A
+ .4byte _0801AD5A
+ .4byte _0801A46C
+_0801A2B0:
+ movs r0, 0x58
+ muls r0, r7
+ mov r3, r8
+ adds r2, r0, r3
+ ldrh r0, [r2, 0x2C]
+ ldrh r1, [r2, 0x28]
+ lsrs r0, 1
+ cmp r1, r0
+ bls _0801A2C6
+ bl _0801AD5A
+_0801A2C6:
+ cmp r6, 0
+ beq _0801A2CE
+ bl _0801AD5A
+_0801A2CE:
+ ldr r4, _0801A2F0 @ =gBattleMoveDamage
+ mov r5, r9
+ str r5, [r4]
+ ldrh r3, [r2, 0x28]
+ adds r0, r3, r5
+ ldrh r1, [r2, 0x2C]
+ cmp r0, r1
+ ble _0801A2E2
+ subs r0, r1, r3
+ str r0, [r4]
+_0801A2E2:
+ ldr r0, [r4]
+ negs r0, r0
+ str r0, [r4]
+ ldr r0, _0801A2F4 @ =gUnknown_081D9A74
+ bl b_call_bc_move_exec
+ b _0801A752
+ .align 2, 0
+_0801A2F0: .4byte gBattleMoveDamage
+_0801A2F4: .4byte gUnknown_081D9A74
+_0801A2F8:
+ cmp r6, 0
+ beq _0801A300
+ bl _0801AD5A
+_0801A300:
+ adds r0, r7, 0
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0801A324
+ ldr r1, _0801A31C @ =gBattlePartyID
+ lsls r0, r7, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r1, r0
+ ldr r0, _0801A320 @ =gPlayerParty
+ b _0801A332
+ .align 2, 0
+_0801A31C: .4byte gBattlePartyID
+_0801A320: .4byte gPlayerParty
+_0801A324:
+ ldr r1, _0801A3A0 @ =gBattlePartyID
+ lsls r0, r7, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r1, r0
+ ldr r0, _0801A3A4 @ =gEnemyParty
+_0801A332:
+ adds r4, r1, r0
+ movs r1, 0
+ mov r10, r1
+ add r5, sp, 0x4
+_0801A33A:
+ mov r1, r10
+ adds r1, 0xD
+ adds r0, r4, 0
+ bl GetMonData
+ lsls r0, 16
+ lsrs r6, r0, 16
+ mov r1, r10
+ adds r1, 0x11
+ adds r0, r4, 0
+ bl GetMonData
+ strb r0, [r5]
+ adds r0, r4, 0
+ movs r1, 0x15
+ bl GetMonData
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r6, 0
+ beq _0801A36A
+ ldrb r0, [r5]
+ cmp r0, 0
+ beq _0801A374
+_0801A36A:
+ movs r2, 0x1
+ add r10, r2
+ mov r3, r10
+ cmp r3, 0x3
+ ble _0801A33A
+_0801A374:
+ mov r4, r10
+ cmp r4, 0x4
+ bne _0801A37E
+ bl _0801AD5A
+_0801A37E:
+ lsls r2, r4, 24
+ lsrs r2, 24
+ adds r0, r6, 0
+ bl CalculatePPWithBonus
+ lsls r0, 24
+ lsrs r2, r0, 24
+ add r0, sp, 0x4
+ ldrb r0, [r0]
+ mov r5, r9
+ adds r1, r0, r5
+ cmp r1, r2
+ ble _0801A3A8
+ add r0, sp, 0x4
+ strb r2, [r0]
+ b _0801A3AC
+ .align 2, 0
+_0801A3A0: .4byte gBattlePartyID
+_0801A3A4: .4byte gEnemyParty
+_0801A3A8:
+ add r0, sp, 0x4
+ strb r1, [r0]
+_0801A3AC:
+ ldr r1, _0801A3EC @ =gBattleTextBuff1
+ movs r0, 0xFD
+ strb r0, [r1]
+ movs r0, 0x2
+ strb r0, [r1, 0x1]
+ strb r6, [r1, 0x2]
+ lsrs r0, r6, 8
+ strb r0, [r1, 0x3]
+ movs r0, 0xFF
+ strb r0, [r1, 0x4]
+ ldr r0, _0801A3F0 @ =gUnknown_081D9A91
+ bl b_call_bc_move_exec
+ mov r1, r10
+ adds r1, 0x9
+ lsls r1, 24
+ lsrs r1, 24
+ add r0, sp, 0x4
+ str r0, [sp]
+ movs r0, 0
+ movs r2, 0
+ movs r3, 0x1
+ bl EmitSetAttributes
+ ldr r0, _0801A3F4 @ =gActiveBank
+ ldrb r0, [r0]
+ bl MarkBufferBankForExecution
+ movs r1, 0x3
+ str r1, [sp, 0xC]
+ bl _0801AD62
+ .align 2, 0
+_0801A3EC: .4byte gBattleTextBuff1
+_0801A3F0: .4byte gUnknown_081D9A91
+_0801A3F4: .4byte gActiveBank
+_0801A3F8:
+ ldr r0, _0801A450 @ =gBattleMons
+ movs r1, 0x58
+ muls r1, r7
+ adds r0, 0x18
+ adds r1, r0
+ movs r2, 0x6
+ movs r3, 0x7
+ mov r10, r3
+_0801A408:
+ movs r0, 0
+ ldrsb r0, [r1, r0]
+ cmp r0, 0x5
+ bgt _0801A416
+ strb r2, [r1]
+ movs r4, 0x5
+ str r4, [sp, 0xC]
+_0801A416:
+ adds r1, 0x1
+ movs r5, 0x1
+ negs r5, r5
+ add r10, r5
+ mov r0, r10
+ cmp r0, 0
+ bge _0801A408
+ movs r1, 0x8
+ mov r10, r1
+ ldr r2, [sp, 0xC]
+ cmp r2, 0
+ bne _0801A432
+ bl _0801B3CA
+_0801A432:
+ ldr r0, _0801A454 @ =0x02000000
+ ldr r3, _0801A458 @ =0x00016003
+ adds r0, r3
+ strb r7, [r0]
+ ldr r0, _0801A45C @ =gStringBank
+ strb r7, [r0]
+ ldr r1, _0801A460 @ =gActiveBank
+ ldr r0, _0801A464 @ =gBankAttacker
+ strb r7, [r0]
+ strb r7, [r1]
+ ldr r0, _0801A468 @ =gUnknown_081D9A5E
+ bl b_call_bc_move_exec
+ bl _0801AD5A
+ .align 2, 0
+_0801A450: .4byte gBattleMons
+_0801A454: .4byte 0x02000000
+_0801A458: .4byte 0x00016003
+_0801A45C: .4byte gStringBank
+_0801A460: .4byte gActiveBank
+_0801A464: .4byte gBankAttacker
+_0801A468: .4byte gUnknown_081D9A5E
+_0801A46C:
+ movs r0, 0x58
+ muls r0, r7
+ mov r4, r8
+ adds r1, r0, r4
+ ldrh r0, [r1, 0x28]
+ ldrh r2, [r1, 0x2C]
+ cmp r0, r2
+ bcc _0801A480
+ bl _0801AD5A
+_0801A480:
+ cmp r6, 0
+ beq _0801A488
+ bl _0801AD5A
+_0801A488:
+ ldr r3, _0801A4C4 @ =gBattleMoveDamage
+ ldrh r0, [r1, 0x2C]
+ lsrs r0, 4
+ str r0, [r3]
+ cmp r0, 0
+ bne _0801A498
+ movs r0, 0x1
+ str r0, [r3]
+_0801A498:
+ ldrh r2, [r1, 0x28]
+ ldr r0, [r3]
+ adds r0, r2, r0
+ ldrh r1, [r1, 0x2C]
+ cmp r0, r1
+ ble _0801A4A8
+ subs r0, r1, r2
+ str r0, [r3]
+_0801A4A8:
+ ldr r0, [r3]
+ negs r0, r0
+ str r0, [r3]
+ ldr r0, _0801A4C8 @ =gUnknown_081D9AA1
+ bl b_call_bc_move_exec
+ movs r3, 0x4
+ str r3, [sp, 0xC]
+ adds r0, r7, 0
+ adds r1, r5, 0
+ bl sub_81074F8
+ bl _0801AD5A
+ .align 2, 0
+_0801A4C4: .4byte gBattleMoveDamage
+_0801A4C8: .4byte gUnknown_081D9AA1
+_0801A4CC:
+ movs r0, 0x58
+ adds r4, r7, 0
+ muls r4, r0
+ str r4, [sp, 0x18]
+ add r4, r8
+ ldrh r0, [r4, 0x2C]
+ ldrh r1, [r4, 0x28]
+ lsrs r0, 1
+ cmp r1, r0
+ bls _0801A4E4
+ bl _0801AD5A
+_0801A4E4:
+ cmp r6, 0
+ beq _0801A4EC
+ bl _0801AD5A
+_0801A4EC:
+ ldr r1, _0801A540 @ =gBattleTextBuff1
+ movs r0, 0xFD
+ strb r0, [r1]
+ movs r0, 0x8
+ strb r0, [r1, 0x1]
+ strb r6, [r1, 0x2]
+ movs r0, 0xFF
+ strb r0, [r1, 0x3]
+ ldr r5, _0801A544 @ =gBattleMoveDamage
+ ldrh r0, [r4, 0x2C]
+ mov r1, r9
+ bl __divsi3
+ str r0, [r5]
+ cmp r0, 0
+ bne _0801A510
+ movs r0, 0x1
+ str r0, [r5]
+_0801A510:
+ ldrh r2, [r4, 0x28]
+ ldr r0, [r5]
+ adds r0, r2, r0
+ ldrh r1, [r4, 0x2C]
+ cmp r0, r1
+ ble _0801A520
+ subs r0, r1, r2
+ str r0, [r5]
+_0801A520:
+ ldr r0, [r5]
+ negs r0, r0
+ str r0, [r5]
+ mov r0, r8
+ adds r0, 0x48
+ ldr r5, [sp, 0x18]
+ adds r0, r5, r0
+ ldr r0, [r0]
+ movs r1, 0
+_0801A532:
+ bl sub_8040A7C
+ lsls r0, 24
+ cmp r0, 0
+ bge _0801A53E
+ b _0801A738
+_0801A53E:
+ b _0801A74C
+ .align 2, 0
+_0801A540: .4byte gBattleTextBuff1
+_0801A544: .4byte gBattleMoveDamage
+_0801A548:
+ movs r0, 0x58
+ adds r1, r7, 0
+ muls r1, r0
+ str r1, [sp, 0x1C]
+ adds r5, r1, 0
+ add r5, r8
+ ldrh r0, [r5, 0x2C]
+ ldrh r1, [r5, 0x28]
+ lsrs r0, 1
+ cmp r1, r0
+ bls _0801A562
+ bl _0801AD5A
+_0801A562:
+ cmp r6, 0
+ beq _0801A56A
+ bl _0801AD5A
+_0801A56A:
+ ldr r1, _0801A5BC @ =gBattleTextBuff1
+ movs r0, 0xFD
+ strb r0, [r1]
+ movs r0, 0x8
+ strb r0, [r1, 0x1]
+ movs r6, 0x1
+ strb r6, [r1, 0x2]
+ movs r0, 0xFF
+ strb r0, [r1, 0x3]
+ ldr r4, _0801A5C0 @ =gBattleMoveDamage
+ ldrh r0, [r5, 0x2C]
+ mov r1, r9
+ bl __divsi3
+ str r0, [r4]
+ cmp r0, 0
+ bne _0801A58E
+ str r6, [r4]
+_0801A58E:
+ ldrh r2, [r5, 0x28]
+ ldr r0, [r4]
+ adds r0, r2, r0
+ ldrh r1, [r5, 0x2C]
+ cmp r0, r1
+ ble _0801A59E
+ subs r0, r1, r2
+ str r0, [r4]
+_0801A59E:
+ ldr r0, [r4]
+ negs r0, r0
+ str r0, [r4]
+ mov r0, r8
+ adds r0, 0x48
+ ldr r2, [sp, 0x1C]
+ adds r0, r2, r0
+ ldr r0, [r0]
+ movs r1, 0x1
+ bl sub_8040A7C
+ lsls r0, 24
+ cmp r0, 0
+ blt _0801A6A4
+ b _0801A6B8
+ .align 2, 0
+_0801A5BC: .4byte gBattleTextBuff1
+_0801A5C0: .4byte gBattleMoveDamage
+_0801A5C4:
+ movs r0, 0x58
+ adds r4, r7, 0
+ muls r4, r0
+ str r4, [sp, 0x20]
+ adds r5, r4, 0
+ add r5, r8
+ ldrh r0, [r5, 0x2C]
+ ldrh r1, [r5, 0x28]
+ lsrs r0, 1
+ cmp r1, r0
+ bls _0801A5DC
+ b _0801AD5A
+_0801A5DC:
+ cmp r6, 0
+ beq _0801A5E2
+ b _0801AD5A
+_0801A5E2:
+ ldr r1, _0801A62C @ =gBattleTextBuff1
+ movs r0, 0xFD
+ strb r0, [r1]
+ movs r0, 0x8
+ strb r0, [r1, 0x1]
+ movs r0, 0x2
+ strb r0, [r1, 0x2]
+ movs r0, 0xFF
+ strb r0, [r1, 0x3]
+ ldr r4, _0801A630 @ =gBattleMoveDamage
+ ldrh r0, [r5, 0x2C]
+ mov r1, r9
+ bl __divsi3
+ str r0, [r4]
+ cmp r0, 0
+ bne _0801A608
+ movs r0, 0x1
+ str r0, [r4]
+_0801A608:
+ ldrh r2, [r5, 0x28]
+ ldr r0, [r4]
+ adds r0, r2, r0
+ ldrh r1, [r5, 0x2C]
+ cmp r0, r1
+ ble _0801A618
+ subs r0, r1, r2
+ str r0, [r4]
+_0801A618:
+ ldr r0, [r4]
+ negs r0, r0
+ str r0, [r4]
+ mov r0, r8
+ adds r0, 0x48
+ ldr r5, [sp, 0x20]
+ adds r0, r5, r0
+ ldr r0, [r0]
+ movs r1, 0x2
+ b _0801A532
+ .align 2, 0
+_0801A62C: .4byte gBattleTextBuff1
+_0801A630: .4byte gBattleMoveDamage
+_0801A634:
+ movs r0, 0x58
+ adds r1, r7, 0
+ muls r1, r0
+ str r1, [sp, 0x24]
+ adds r5, r1, 0
+ add r5, r8
+ ldrh r0, [r5, 0x2C]
+ ldrh r1, [r5, 0x28]
+ lsrs r0, 1
+ cmp r1, r0
+ bls _0801A64C
+ b _0801AD5A
+_0801A64C:
+ cmp r6, 0
+ beq _0801A652
+ b _0801AD5A
+_0801A652:
+ ldr r1, _0801A6AC @ =gBattleTextBuff1
+ movs r0, 0xFD
+ strb r0, [r1]
+ movs r0, 0x8
+ strb r0, [r1, 0x1]
+ movs r0, 0x3
+ strb r0, [r1, 0x2]
+ movs r0, 0xFF
+ strb r0, [r1, 0x3]
+ ldr r4, _0801A6B0 @ =gBattleMoveDamage
+ ldrh r0, [r5, 0x2C]
+ mov r1, r9
+ bl __divsi3
+ str r0, [r4]
+ cmp r0, 0
+ bne _0801A678
+ movs r0, 0x1
+ str r0, [r4]
+_0801A678:
+ ldrh r2, [r5, 0x28]
+ ldr r0, [r4]
+ adds r0, r2, r0
+ ldrh r1, [r5, 0x2C]
+ cmp r0, r1
+ ble _0801A688
+ subs r0, r1, r2
+ str r0, [r4]
+_0801A688:
+ ldr r0, [r4]
+ negs r0, r0
+ str r0, [r4]
+ mov r0, r8
+ adds r0, 0x48
+ ldr r2, [sp, 0x24]
+ adds r0, r2, r0
+ ldr r0, [r0]
+ movs r1, 0x3
+ bl sub_8040A7C
+ lsls r0, 24
+ cmp r0, 0
+ bge _0801A6B8
+_0801A6A4:
+ ldr r0, _0801A6B4 @ =gUnknown_081D9AD4
+ bl b_call_bc_move_exec
+ b _0801A6BE
+ .align 2, 0
+_0801A6AC: .4byte gBattleTextBuff1
+_0801A6B0: .4byte gBattleMoveDamage
+_0801A6B4: .4byte gUnknown_081D9AD4
+_0801A6B8:
+ ldr r0, _0801A6C4 @ =gUnknown_081D9A74
+ bl b_call_bc_move_exec
+_0801A6BE:
+ movs r3, 0x4
+ str r3, [sp, 0xC]
+ b _0801AD62
+ .align 2, 0
+_0801A6C4: .4byte gUnknown_081D9A74
+_0801A6C8:
+ movs r0, 0x58
+ adds r4, r7, 0
+ muls r4, r0
+ str r4, [sp, 0x28]
+ adds r5, r4, 0
+ add r5, r8
+ ldrh r0, [r5, 0x2C]
+ ldrh r1, [r5, 0x28]
+ lsrs r0, 1
+ cmp r1, r0
+ bls _0801A6E0
+ b _0801AD5A
+_0801A6E0:
+ cmp r6, 0
+ beq _0801A6E6
+ b _0801AD5A
+_0801A6E6:
+ ldr r1, _0801A740 @ =gBattleTextBuff1
+ movs r0, 0xFD
+ strb r0, [r1]
+ movs r0, 0x8
+ strb r0, [r1, 0x1]
+ movs r0, 0x4
+ strb r0, [r1, 0x2]
+ movs r0, 0xFF
+ strb r0, [r1, 0x3]
+ ldr r4, _0801A744 @ =gBattleMoveDamage
+ ldrh r0, [r5, 0x2C]
+ mov r1, r9
+ bl __divsi3
+ str r0, [r4]
+ cmp r0, 0
+ bne _0801A70C
+ movs r0, 0x1
+ str r0, [r4]
+_0801A70C:
+ ldrh r2, [r5, 0x28]
+ ldr r0, [r4]
+ adds r0, r2, r0
+ ldrh r1, [r5, 0x2C]
+ cmp r0, r1
+ ble _0801A71C
+ subs r0, r1, r2
+ str r0, [r4]
+_0801A71C:
+ ldr r0, [r4]
+ negs r0, r0
+ str r0, [r4]
+ mov r0, r8
+ adds r0, 0x48
+ ldr r5, [sp, 0x28]
+ adds r0, r5, r0
+ ldr r0, [r0]
+ movs r1, 0x4
+ bl sub_8040A7C
+ lsls r0, 24
+ cmp r0, 0
+ bge _0801A74C
+_0801A738:
+ ldr r0, _0801A748 @ =gUnknown_081D9AD4
+ bl b_call_bc_move_exec
+ b _0801A752
+ .align 2, 0
+_0801A740: .4byte gBattleTextBuff1
+_0801A744: .4byte gBattleMoveDamage
+_0801A748: .4byte gUnknown_081D9AD4
+_0801A74C:
+ ldr r0, _0801A758 @ =gUnknown_081D9A74
+ bl b_call_bc_move_exec
+_0801A752:
+ movs r0, 0x4
+ str r0, [sp, 0xC]
+ b _0801AD62
+ .align 2, 0
+_0801A758: .4byte gUnknown_081D9A74
+_0801A75C:
+ movs r0, 0x58
+ muls r0, r7
+ mov r1, r8
+ adds r5, r0, r1
+ ldrh r4, [r5, 0x28]
+ ldrh r0, [r5, 0x2C]
+ mov r1, r9
+ bl __divsi3
+ cmp r4, r0
+ ble _0801A774
+ b _0801AD5A
+_0801A774:
+ cmp r6, 0
+ beq _0801A77A
+ b _0801AD5A
+_0801A77A:
+ movs r0, 0x19
+ ldrsb r0, [r5, r0]
+ cmp r0, 0xB
+ ble _0801A784
+ b _0801AD5A
+_0801A784:
+ ldr r1, _0801A7BC @ =gBattleTextBuff1
+ movs r2, 0xFD
+ strb r2, [r1]
+ movs r0, 0x5
+ strb r0, [r1, 0x1]
+ movs r0, 0x1
+ strb r0, [r1, 0x2]
+ movs r0, 0xFF
+ strb r0, [r1, 0x3]
+ ldr r1, _0801A7C0 @ =gBattleTextBuff2
+ strb r2, [r1]
+ strb r6, [r1, 0x1]
+ movs r0, 0xD2
+ strb r0, [r1, 0x2]
+ strb r6, [r1, 0x3]
+ subs r0, 0xD3
+ strb r0, [r1, 0x4]
+ ldr r0, _0801A7C4 @ =gEffectBank
+ strb r7, [r0]
+ ldr r1, _0801A7C8 @ =0x02000000
+ ldr r3, _0801A7CC @ =0x0001601e
+ adds r2, r1, r3
+ movs r0, 0x11
+ strb r0, [r2]
+ ldr r4, _0801A7D0 @ =0x000160a4
+ adds r2, r1, r4
+ movs r0, 0xF
+ b _0801A94C
+ .align 2, 0
+_0801A7BC: .4byte gBattleTextBuff1
+_0801A7C0: .4byte gBattleTextBuff2
+_0801A7C4: .4byte gEffectBank
+_0801A7C8: .4byte 0x02000000
+_0801A7CC: .4byte 0x0001601e
+_0801A7D0: .4byte 0x000160a4
+_0801A7D4:
+ movs r0, 0x58
+ muls r0, r7
+ mov r1, r8
+ adds r5, r0, r1
+ ldrh r4, [r5, 0x28]
+ ldrh r0, [r5, 0x2C]
+ mov r1, r9
+ bl __divsi3
+ cmp r4, r0
+ ble _0801A7EC
+ b _0801AD5A
+_0801A7EC:
+ cmp r6, 0
+ beq _0801A7F2
+ b _0801AD5A
+_0801A7F2:
+ movs r0, 0x1A
+ ldrsb r0, [r5, r0]
+ cmp r0, 0xB
+ ble _0801A7FC
+ b _0801AD5A
+_0801A7FC:
+ ldr r1, _0801A824 @ =gBattleTextBuff1
+ movs r0, 0xFD
+ strb r0, [r1]
+ movs r0, 0x5
+ strb r0, [r1, 0x1]
+ movs r0, 0x2
+ strb r0, [r1, 0x2]
+ movs r0, 0xFF
+ strb r0, [r1, 0x3]
+ ldr r0, _0801A828 @ =gEffectBank
+ strb r7, [r0]
+ ldr r1, _0801A82C @ =0x02000000
+ ldr r3, _0801A830 @ =0x0001601e
+ adds r2, r1, r3
+ movs r0, 0x12
+ strb r0, [r2]
+ ldr r4, _0801A834 @ =0x000160a4
+ adds r2, r1, r4
+ movs r0, 0x10
+ b _0801A94C
+ .align 2, 0
+_0801A824: .4byte gBattleTextBuff1
+_0801A828: .4byte gEffectBank
+_0801A82C: .4byte 0x02000000
+_0801A830: .4byte 0x0001601e
+_0801A834: .4byte 0x000160a4
+_0801A838:
+ movs r0, 0x58
+ muls r0, r7
+ mov r1, r8
+ adds r5, r0, r1
+ ldrh r4, [r5, 0x28]
+ ldrh r0, [r5, 0x2C]
+ mov r1, r9
+ bl __divsi3
+ cmp r4, r0
+ ble _0801A850
+ b _0801AD5A
+_0801A850:
+ cmp r6, 0
+ beq _0801A856
+ b _0801AD5A
+_0801A856:
+ movs r0, 0x1B
+ ldrsb r0, [r5, r0]
+ cmp r0, 0xB
+ ble _0801A860
+ b _0801AD5A
+_0801A860:
+ ldr r1, _0801A888 @ =gBattleTextBuff1
+ movs r0, 0xFD
+ strb r0, [r1]
+ movs r0, 0x5
+ strb r0, [r1, 0x1]
+ movs r0, 0x3
+ strb r0, [r1, 0x2]
+ movs r0, 0xFF
+ strb r0, [r1, 0x3]
+ ldr r0, _0801A88C @ =gEffectBank
+ strb r7, [r0]
+ ldr r1, _0801A890 @ =0x02000000
+ ldr r3, _0801A894 @ =0x0001601e
+ adds r2, r1, r3
+ movs r0, 0x13
+ strb r0, [r2]
+ ldr r4, _0801A898 @ =0x000160a4
+ adds r2, r1, r4
+ movs r0, 0x11
+ b _0801A94C
+ .align 2, 0
+_0801A888: .4byte gBattleTextBuff1
+_0801A88C: .4byte gEffectBank
+_0801A890: .4byte 0x02000000
+_0801A894: .4byte 0x0001601e
+_0801A898: .4byte 0x000160a4
+_0801A89C:
+ movs r0, 0x58
+ muls r0, r7
+ mov r1, r8
+ adds r5, r0, r1
+ ldrh r4, [r5, 0x28]
+ ldrh r0, [r5, 0x2C]
+ mov r1, r9
+ bl __divsi3
+ cmp r4, r0
+ ble _0801A8B4
+ b _0801AD5A
+_0801A8B4:
+ cmp r6, 0
+ beq _0801A8BA
+ b _0801AD5A
+_0801A8BA:
+ movs r0, 0x1C
+ ldrsb r0, [r5, r0]
+ cmp r0, 0xB
+ ble _0801A8C4
+ b _0801AD5A
+_0801A8C4:
+ ldr r1, _0801A8EC @ =gBattleTextBuff1
+ movs r0, 0xFD
+ strb r0, [r1]
+ movs r0, 0x5
+ strb r0, [r1, 0x1]
+ movs r0, 0x4
+ strb r0, [r1, 0x2]
+ movs r0, 0xFF
+ strb r0, [r1, 0x3]
+ ldr r0, _0801A8F0 @ =gEffectBank
+ strb r7, [r0]
+ ldr r1, _0801A8F4 @ =0x02000000
+ ldr r3, _0801A8F8 @ =0x0001601e
+ adds r2, r1, r3
+ movs r0, 0x14
+ strb r0, [r2]
+ ldr r4, _0801A8FC @ =0x000160a4
+ adds r2, r1, r4
+ movs r0, 0x12
+ b _0801A94C
+ .align 2, 0
+_0801A8EC: .4byte gBattleTextBuff1
+_0801A8F0: .4byte gEffectBank
+_0801A8F4: .4byte 0x02000000
+_0801A8F8: .4byte 0x0001601e
+_0801A8FC: .4byte 0x000160a4
+_0801A900:
+ movs r0, 0x58
+ muls r0, r7
+ mov r1, r8
+ adds r5, r0, r1
+ ldrh r4, [r5, 0x28]
+ ldrh r0, [r5, 0x2C]
+ mov r1, r9
+ bl __divsi3
+ cmp r4, r0
+ ble _0801A918
+ b _0801AD5A
+_0801A918:
+ cmp r6, 0
+ beq _0801A91E
+ b _0801AD5A
+_0801A91E:
+ movs r0, 0x1D
+ ldrsb r0, [r5, r0]
+ cmp r0, 0xB
+ ble _0801A928
+ b _0801AD5A
+_0801A928:
+ ldr r1, _0801A960 @ =gBattleTextBuff1
+ movs r0, 0xFD
+ strb r0, [r1]
+ movs r0, 0x5
+ strb r0, [r1, 0x1]
+ strb r0, [r1, 0x2]
+ movs r0, 0xFF
+ strb r0, [r1, 0x3]
+ ldr r0, _0801A964 @ =gEffectBank
+ strb r7, [r0]
+ ldr r1, _0801A968 @ =0x02000000
+ ldr r3, _0801A96C @ =0x0001601e
+ adds r2, r1, r3
+ movs r0, 0x15
+ strb r0, [r2]
+ ldr r4, _0801A970 @ =0x000160a4
+ adds r2, r1, r4
+ movs r0, 0x13
+_0801A94C:
+ strb r0, [r2]
+ ldr r5, _0801A974 @ =0x000160a5
+ adds r1, r5
+ strb r6, [r1]
+ ldr r0, _0801A978 @ =gUnknown_081D9AFE
+ bl b_call_bc_move_exec
+ movs r0, 0x5
+ str r0, [sp, 0xC]
+ b _0801AD62
+ .align 2, 0
+_0801A960: .4byte gBattleTextBuff1
+_0801A964: .4byte gEffectBank
+_0801A968: .4byte 0x02000000
+_0801A96C: .4byte 0x0001601e
+_0801A970: .4byte 0x000160a4
+_0801A974: .4byte 0x000160a5
+_0801A978: .4byte gUnknown_081D9AFE
+_0801A97C:
+ movs r0, 0x58
+ adds r5, r7, 0
+ muls r5, r0
+ mov r1, r8
+ adds r0, r5, r1
+ ldrh r4, [r0, 0x28]
+ ldrh r0, [r0, 0x2C]
+ mov r1, r9
+ bl __divsi3
+ cmp r4, r0
+ ble _0801A996
+ b _0801AD5A
+_0801A996:
+ cmp r6, 0
+ beq _0801A99C
+ b _0801AD5A
+_0801A99C:
+ mov r0, r8
+ adds r0, 0x50
+ adds r1, r5, r0
+ ldr r2, [r1]
+ movs r3, 0x80
+ lsls r3, 13
+ adds r0, r2, 0
+ ands r0, r3
+ cmp r0, 0
+ beq _0801A9B2
+ b _0801AD5A
+_0801A9B2:
+ orrs r2, r3
+ str r2, [r1]
+ ldr r0, _0801A9C4 @ =gUnknown_081D9B19
+ bl b_call_bc_move_exec
+ movs r2, 0x2
+ str r2, [sp, 0xC]
+ b _0801AD62
+ .align 2, 0
+_0801A9C4: .4byte gUnknown_081D9B19
+_0801A9C8:
+ cmp r6, 0
+ beq _0801A9CE
+ b _0801AD5A
+_0801A9CE:
+ movs r0, 0x58
+ adds r5, r7, 0
+ muls r5, r0
+ mov r3, r8
+ adds r0, r5, r3
+ ldrh r4, [r0, 0x28]
+ ldrh r0, [r0, 0x2C]
+ mov r1, r9
+ bl __divsi3
+ cmp r4, r0
+ ble _0801A9E8
+ b _0801AD5A
+_0801A9E8:
+ movs r4, 0
+ mov r10, r4
+ adds r0, r5, 0x1
+ mov r1, r8
+ adds r1, 0x18
+ adds r0, r1
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ cmp r0, 0xB
+ ble _0801AA18
+ mov r0, r8
+ adds r0, 0x19
+ adds r1, r5, r0
+_0801AA04:
+ adds r1, 0x1
+ movs r5, 0x1
+ add r10, r5
+ mov r0, r10
+ cmp r0, 0x4
+ bgt _0801AA18
+ movs r0, 0
+ ldrsb r0, [r1, r0]
+ cmp r0, 0xB
+ bgt _0801AA04
+_0801AA18:
+ mov r1, r10
+ cmp r1, 0x5
+ bne _0801AA20
+ b _0801AD5A
+_0801AA20:
+ movs r0, 0x58
+ muls r0, r7
+ adds r4, r0, 0x1
+ ldr r5, _0801AAA4 @ =gUnknown_02024A98
+_0801AA28:
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x5
+ bl __umodsi3
+ lsls r0, 16
+ lsrs r0, 16
+ mov r10, r0
+ adds r0, r4
+ adds r0, r5
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ cmp r0, 0xC
+ beq _0801AA28
+ ldr r1, _0801AAA8 @ =gBattleTextBuff1
+ movs r3, 0
+ movs r2, 0xFD
+ strb r2, [r1]
+ movs r0, 0x5
+ strb r0, [r1, 0x1]
+ mov r0, r10
+ adds r0, 0x1
+ strb r0, [r1, 0x2]
+ movs r0, 0xFF
+ strb r0, [r1, 0x3]
+ ldr r0, _0801AAAC @ =gBattleTextBuff2
+ strb r2, [r0]
+ strb r3, [r0, 0x1]
+ movs r1, 0xD1
+ strb r1, [r0, 0x2]
+ strb r3, [r0, 0x3]
+ strb r3, [r0, 0x4]
+ movs r1, 0xD2
+ strb r1, [r0, 0x5]
+ strb r3, [r0, 0x6]
+ subs r1, 0xD3
+ strb r1, [r0, 0x7]
+ ldr r0, _0801AAB0 @ =gEffectBank
+ strb r7, [r0]
+ ldr r1, _0801AAB4 @ =0x02000000
+ mov r2, r10
+ adds r2, 0x21
+ ldr r4, _0801AAB8 @ =0x0001601e
+ adds r0, r1, r4
+ strb r2, [r0]
+ adds r2, 0x6
+ ldr r5, _0801AABC @ =0x000160a4
+ adds r0, r1, r5
+ strb r2, [r0]
+ ldr r0, _0801AAC0 @ =0x000160a5
+ adds r1, r0
+ strb r3, [r1]
+ ldr r0, _0801AAC4 @ =gUnknown_081D9AFE
+ bl b_call_bc_move_exec
+ movs r1, 0x5
+ str r1, [sp, 0xC]
+ b _0801AD62
+ .align 2, 0
+_0801AAA4: .4byte gUnknown_02024A98
+_0801AAA8: .4byte gBattleTextBuff1
+_0801AAAC: .4byte gBattleTextBuff2
+_0801AAB0: .4byte gEffectBank
+_0801AAB4: .4byte 0x02000000
+_0801AAB8: .4byte 0x0001601e
+_0801AABC: .4byte 0x000160a4
+_0801AAC0: .4byte 0x000160a5
+_0801AAC4: .4byte gUnknown_081D9AFE
+_0801AAC8:
+ movs r0, 0x58
+ adds r1, r7, 0
+ muls r1, r0
+ mov r0, r8
+ adds r0, 0x4C
+ adds r1, r0
+ ldr r2, [r1]
+ movs r0, 0x40
+ ands r0, r2
+ cmp r0, 0
+ bne _0801AAE0
+ b _0801AD5A
+_0801AAE0:
+ movs r0, 0x41
+ negs r0, r0
+ ands r2, r0
+ str r2, [r1]
+ ldr r0, _0801AAF4 @ =gUnknown_081D99B6
+ bl b_call_bc_move_exec
+ movs r2, 0x1
+ str r2, [sp, 0xC]
+ b _0801AD62
+ .align 2, 0
+_0801AAF4: .4byte gUnknown_081D99B6
+_0801AAF8:
+ movs r0, 0x58
+ adds r1, r7, 0
+ muls r1, r0
+ mov r0, r8
+ adds r0, 0x4C
+ adds r1, r0
+ ldr r2, [r1]
+ movs r0, 0x88
+ ands r0, r2
+ cmp r0, 0
+ bne _0801AB10
+ b _0801AD5A
+_0801AB10:
+ ldr r0, _0801AB24 @ =0xfffff077
+ ands r2, r0
+ str r2, [r1]
+ ldr r0, _0801AB28 @ =gUnknown_081D99CE
+ bl b_call_bc_move_exec
+ movs r3, 0x1
+ str r3, [sp, 0xC]
+ b _0801AD62
+ .align 2, 0
+_0801AB24: .4byte 0xfffff077
+_0801AB28: .4byte gUnknown_081D99CE
+_0801AB2C:
+ movs r0, 0x58
+ adds r1, r7, 0
+ muls r1, r0
+ mov r0, r8
+ adds r0, 0x4C
+ adds r1, r0
+ ldr r2, [r1]
+ movs r0, 0x10
+ ands r0, r2
+ cmp r0, 0
+ bne _0801AB44
+ b _0801AD5A
+_0801AB44:
+ movs r0, 0x11
+ negs r0, r0
+ ands r2, r0
+ str r2, [r1]
+ ldr r0, _0801AB58 @ =gUnknown_081D99E6
+ bl b_call_bc_move_exec
+ movs r4, 0x1
+ str r4, [sp, 0xC]
+ b _0801AD62
+ .align 2, 0
+_0801AB58: .4byte gUnknown_081D99E6
+_0801AB5C:
+ movs r0, 0x58
+ adds r1, r7, 0
+ muls r1, r0
+ mov r0, r8
+ adds r0, 0x4C
+ adds r1, r0
+ ldr r2, [r1]
+ movs r0, 0x20
+ ands r0, r2
+ cmp r0, 0
+ bne _0801AB74
+ b _0801AD5A
+_0801AB74:
+ movs r0, 0x21
+ negs r0, r0
+ ands r2, r0
+ str r2, [r1]
+ ldr r0, _0801AB80 @ =gUnknown_081D99FE
+ b _0801AD0E
+ .align 2, 0
+_0801AB80: .4byte gUnknown_081D99FE
+_0801AB84:
+ movs r0, 0x58
+ adds r3, r7, 0
+ muls r3, r0
+ mov r0, r8
+ adds r0, 0x4C
+ adds r2, r3, r0
+ ldr r1, [r2]
+ movs r0, 0x7
+ ands r0, r1
+ cmp r0, 0
+ bne _0801AB9C
+ b _0801AD5A
+_0801AB9C:
+ movs r0, 0x8
+ negs r0, r0
+ ands r1, r0
+ str r1, [r2]
+ mov r1, r8
+ adds r1, 0x50
+ adds r1, r3, r1
+ ldr r0, [r1]
+ ldr r2, _0801ABC0 @ =0xf7ffffff
+ ands r0, r2
+ str r0, [r1]
+ ldr r0, _0801ABC4 @ =gUnknown_081D9A16
+ bl b_call_bc_move_exec
+ movs r0, 0x1
+ str r0, [sp, 0xC]
+ b _0801AD62
+ .align 2, 0
+_0801ABC0: .4byte 0xf7ffffff
+_0801ABC4: .4byte gUnknown_081D9A16
+_0801ABC8:
+ movs r0, 0x58
+ adds r1, r7, 0
+ muls r1, r0
+ mov r0, r8
+ adds r0, 0x50
+ adds r1, r0
+ ldr r2, [r1]
+ movs r0, 0x7
+ ands r0, r2
+ cmp r0, 0
+ bne _0801ABE0
+ b _0801AD5A
+_0801ABE0:
+ movs r0, 0x8
+ negs r0, r0
+ ands r2, r0
+ str r2, [r1]
+ ldr r0, _0801ABF4 @ =gUnknown_081D9A2E
+ bl b_call_bc_move_exec
+ movs r1, 0x2
+ str r1, [sp, 0xC]
+ b _0801AD62
+ .align 2, 0
+_0801ABF4: .4byte gUnknown_081D9A2E
+_0801ABF8:
+ movs r0, 0x58
+ adds r5, r7, 0
+ muls r5, r0
+ mov r0, r8
+ adds r0, 0x4C
+ adds r4, r5, r0
+ ldr r2, [r4]
+ ldrb r0, [r4]
+ cmp r0, 0
+ bne _0801AC1E
+ mov r0, r8
+ adds r0, 0x50
+ adds r0, r5, r0
+ ldr r0, [r0]
+ movs r1, 0x7
+ ands r0, r1
+ cmp r0, 0
+ bne _0801AC1E
+ b _0801AD5A
+_0801AC1E:
+ movs r3, 0
+ mov r10, r3
+ movs r0, 0x88
+ ands r2, r0
+ cmp r2, 0
+ beq _0801AC36
+ ldr r0, _0801ACC4 @ =gBattleTextBuff1
+ ldr r1, _0801ACC8 @ =gStatusConditionString_PoisonJpn
+ bl StringCopy
+ movs r0, 0x1
+ mov r10, r0
+_0801AC36:
+ ldr r0, [r4]
+ movs r1, 0x7
+ mov r9, r1
+ ands r0, r1
+ mov r6, r8
+ adds r6, 0x50
+ cmp r0, 0
+ beq _0801AC5C
+ adds r2, r5, r6
+ ldr r0, [r2]
+ ldr r1, _0801ACCC @ =0xf7ffffff
+ ands r0, r1
+ str r0, [r2]
+ ldr r0, _0801ACC4 @ =gBattleTextBuff1
+ ldr r1, _0801ACD0 @ =gStatusConditionString_SleepJpn
+ bl StringCopy
+ movs r2, 0x1
+ add r10, r2
+_0801AC5C:
+ ldr r0, [r4]
+ movs r1, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _0801AC72
+ ldr r0, _0801ACC4 @ =gBattleTextBuff1
+ ldr r1, _0801ACD4 @ =gStatusConditionString_ParalysisJpn
+ bl StringCopy
+ movs r3, 0x1
+ add r10, r3
+_0801AC72:
+ ldr r0, [r4]
+ movs r1, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _0801AC88
+ ldr r0, _0801ACC4 @ =gBattleTextBuff1
+ ldr r1, _0801ACD8 @ =gStatusConditionString_BurnJpn
+ bl StringCopy
+ movs r0, 0x1
+ add r10, r0
+_0801AC88:
+ ldr r0, [r4]
+ movs r1, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _0801AC9E
+ ldr r0, _0801ACC4 @ =gBattleTextBuff1
+ ldr r1, _0801ACDC @ =gStatusConditionString_IceJpn
+ bl StringCopy
+ movs r1, 0x1
+ add r10, r1
+_0801AC9E:
+ adds r0, r5, r6
+ ldr r0, [r0]
+ mov r2, r9
+ ands r0, r2
+ cmp r0, 0
+ beq _0801ACB6
+ ldr r0, _0801ACC4 @ =gBattleTextBuff1
+ ldr r1, _0801ACE0 @ =gStatusConditionString_ConfusionJpn
+ bl StringCopy
+ movs r3, 0x1
+ add r10, r3
+_0801ACB6:
+ mov r4, r10
+ cmp r4, 0x1
+ bgt _0801ACE8
+ ldr r1, _0801ACE4 @ =gBattleCommunication
+ movs r0, 0
+ b _0801ACEC
+ .align 2, 0
+_0801ACC4: .4byte gBattleTextBuff1
+_0801ACC8: .4byte gStatusConditionString_PoisonJpn
+_0801ACCC: .4byte 0xf7ffffff
+_0801ACD0: .4byte gStatusConditionString_SleepJpn
+_0801ACD4: .4byte gStatusConditionString_ParalysisJpn
+_0801ACD8: .4byte gStatusConditionString_BurnJpn
+_0801ACDC: .4byte gStatusConditionString_IceJpn
+_0801ACE0: .4byte gStatusConditionString_ConfusionJpn
+_0801ACE4: .4byte gBattleCommunication
+_0801ACE8:
+ ldr r1, _0801AD18 @ =gBattleCommunication
+ movs r0, 0x1
+_0801ACEC:
+ strb r0, [r1, 0x5]
+ ldr r2, _0801AD1C @ =gBattleMons
+ movs r0, 0x58
+ adds r3, r7, 0
+ muls r3, r0
+ adds r0, r2, 0
+ adds r0, 0x4C
+ adds r0, r3, r0
+ movs r1, 0
+ str r1, [r0]
+ adds r2, 0x50
+ adds r3, r2
+ ldr r0, [r3]
+ subs r1, 0x8
+ ands r0, r1
+ str r0, [r3]
+ ldr r0, _0801AD20 @ =gUnknown_081D9A44
+_0801AD0E:
+ bl b_call_bc_move_exec
+ movs r5, 0x1
+ str r5, [sp, 0xC]
+ b _0801AD62
+ .align 2, 0
+_0801AD18: .4byte gBattleCommunication
+_0801AD1C: .4byte gBattleMons
+_0801AD20: .4byte gUnknown_081D9A44
+_0801AD24:
+ movs r0, 0x58
+ adds r1, r7, 0
+ muls r1, r0
+ mov r0, r8
+ adds r0, 0x50
+ adds r1, r0
+ ldr r2, [r1]
+ movs r0, 0xF0
+ lsls r0, 12
+ ands r0, r2
+ cmp r0, 0
+ beq _0801AD5A
+ ldr r0, _0801AD84 @ =0xfff0ffff
+ ands r2, r0
+ str r2, [r1]
+ ldr r0, _0801AD88 @ =gBattleTextBuff1
+ ldr r1, _0801AD8C @ =gStatusConditionString_LoveJpn
+ bl StringCopy
+ ldr r0, _0801AD90 @ =gUnknown_081D9A44
+ bl b_call_bc_move_exec
+ ldr r1, _0801AD94 @ =gBattleCommunication
+ movs r0, 0
+ strb r0, [r1, 0x5]
+ movs r0, 0x2
+ str r0, [sp, 0xC]
+_0801AD5A:
+ ldr r1, [sp, 0xC]
+ cmp r1, 0
+ bne _0801AD62
+ b _0801B3CA
+_0801AD62:
+ ldr r0, _0801AD98 @ =0x02000000
+ ldr r2, _0801AD9C @ =0x00016003
+ adds r0, r2
+ strb r7, [r0]
+ ldr r0, _0801ADA0 @ =gStringBank
+ strb r7, [r0]
+ ldr r4, _0801ADA4 @ =gActiveBank
+ ldr r0, _0801ADA8 @ =gBankAttacker
+ strb r7, [r0]
+ strb r7, [r4]
+ ldr r3, [sp, 0xC]
+ cmp r3, 0x1
+ beq _0801ADAC
+ cmp r3, 0x3
+ beq _0801ADB2
+ b _0801B3CA
+ .align 2, 0
+_0801AD84: .4byte 0xfff0ffff
+_0801AD88: .4byte gBattleTextBuff1
+_0801AD8C: .4byte gStatusConditionString_LoveJpn
+_0801AD90: .4byte gUnknown_081D9A44
+_0801AD94: .4byte gBattleCommunication
+_0801AD98: .4byte 0x02000000
+_0801AD9C: .4byte 0x00016003
+_0801ADA0: .4byte gStringBank
+_0801ADA4: .4byte gActiveBank
+_0801ADA8: .4byte gBankAttacker
+_0801ADAC:
+ movs r0, 0x58
+ muls r0, r7
+ b _0801B224
+_0801ADB2:
+ ldr r4, _0801AE00 @ =gBattleMons
+ movs r0, 0x58
+ adds r3, r7, 0
+ muls r3, r0
+ adds r0, r4, 0
+ adds r0, 0x50
+ adds r0, r3, r0
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 14
+ ands r0, r1
+ cmp r0, 0
+ beq _0801ADCE
+ b _0801B3CA
+_0801ADCE:
+ ldr r1, _0801AE04 @ =gDisableStructs
+ lsls r0, r7, 3
+ subs r0, r7
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0, 0x18]
+ lsrs r1, 4
+ ldr r2, _0801AE08 @ =gBitTable
+ mov r5, r10
+ lsls r0, r5, 2
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ beq _0801ADEE
+ b _0801B3CA
+_0801ADEE:
+ adds r1, r5, r3
+ adds r0, r4, 0
+ adds r0, 0x24
+ adds r1, r0
+ add r0, sp, 0x4
+ ldrb r0, [r0]
+ strb r0, [r1]
+ b _0801B3CA
+ .align 2, 0
+_0801AE00: .4byte gBattleMons
+_0801AE04: .4byte gDisableStructs
+_0801AE08: .4byte gBitTable
+_0801AE0C:
+ movs r7, 0
+ ldr r0, _0801AE3C @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r7, r0
+ bcc _0801AE18
+ b _0801B3CA
+_0801AE18:
+ ldr r4, _0801AE40 @ =gLastUsedItem
+ ldr r1, _0801AE44 @ =gBattleMons
+ movs r0, 0x58
+ muls r0, r7
+ adds r0, r1
+ ldrh r0, [r0, 0x2E]
+ strh r0, [r4]
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0xAF
+ bne _0801AE4C
+ ldr r1, _0801AE48 @ =gEnigmaBerries
+ lsls r0, r7, 3
+ subs r0, r7
+ lsls r0, 2
+ adds r0, r1
+ ldrb r5, [r0, 0x7]
+ b _0801AE5C
+ .align 2, 0
+_0801AE3C: .4byte gNoOfAllBanks
+_0801AE40: .4byte gLastUsedItem
+_0801AE44: .4byte gBattleMons
+_0801AE48: .4byte gEnigmaBerries
+_0801AE4C:
+ ldrh r0, [r4]
+ bl ItemId_GetHoldEffect
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldrh r0, [r4]
+ bl ItemId_GetHoldEffectParam
+_0801AE5C:
+ subs r0, r5, 0x2
+ cmp r0, 0x1A
+ bls _0801AE64
+ b _0801B208
+_0801AE64:
+ lsls r0, 2
+ ldr r1, _0801AE70 @ =_0801AE74
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0801AE70: .4byte _0801AE74
+ .align 2, 0
+_0801AE74:
+ .4byte _0801AEE0
+ .4byte _0801AFC8
+ .4byte _0801AF1C
+ .4byte _0801AF58
+ .4byte _0801AF94
+ .4byte _0801B208
+ .4byte _0801B018
+ .4byte _0801B0AC
+ .4byte _0801B208
+ .4byte _0801B208
+ .4byte _0801B208
+ .4byte _0801B208
+ .4byte _0801B208
+ .4byte _0801B208
+ .4byte _0801B208
+ .4byte _0801B208
+ .4byte _0801B208
+ .4byte _0801B208
+ .4byte _0801B208
+ .4byte _0801B208
+ .4byte _0801B208
+ .4byte _0801B1A0
+ .4byte _0801B208
+ .4byte _0801B208
+ .4byte _0801B208
+ .4byte _0801B208
+ .4byte _0801B054
+_0801AEE0:
+ ldr r1, _0801AF10 @ =gBattleMons
+ movs r0, 0x58
+ muls r0, r7
+ adds r1, 0x4C
+ adds r2, r0, r1
+ ldr r1, [r2]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ bne _0801AEF6
+ b _0801B208
+_0801AEF6:
+ movs r0, 0x41
+ negs r0, r0
+ ands r1, r0
+ str r1, [r2]
+ bl b_movescr_stack_push_cursor
+ ldr r1, _0801AF14 @ =gBattlescriptCurrInstr
+ ldr r0, _0801AF18 @ =gUnknown_081D99BC
+ str r0, [r1]
+ movs r0, 0x1
+ str r0, [sp, 0xC]
+ b _0801B20E
+ .align 2, 0
+_0801AF10: .4byte gBattleMons
+_0801AF14: .4byte gBattlescriptCurrInstr
+_0801AF18: .4byte gUnknown_081D99BC
+_0801AF1C:
+ ldr r1, _0801AF48 @ =gBattleMons
+ movs r0, 0x58
+ muls r0, r7
+ adds r1, 0x4C
+ adds r2, r0, r1
+ ldr r1, [r2]
+ movs r0, 0x88
+ ands r0, r1
+ cmp r0, 0
+ bne _0801AF32
+ b _0801B208
+_0801AF32:
+ ldr r0, _0801AF4C @ =0xfffff077
+ ands r1, r0
+ str r1, [r2]
+ bl b_movescr_stack_push_cursor
+ ldr r1, _0801AF50 @ =gBattlescriptCurrInstr
+ ldr r0, _0801AF54 @ =gUnknown_081D99D4
+ str r0, [r1]
+ movs r1, 0x1
+ str r1, [sp, 0xC]
+ b _0801B20E
+ .align 2, 0
+_0801AF48: .4byte gBattleMons
+_0801AF4C: .4byte 0xfffff077
+_0801AF50: .4byte gBattlescriptCurrInstr
+_0801AF54: .4byte gUnknown_081D99D4
+_0801AF58:
+ ldr r1, _0801AF88 @ =gBattleMons
+ movs r0, 0x58
+ muls r0, r7
+ adds r1, 0x4C
+ adds r2, r0, r1
+ ldr r1, [r2]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ bne _0801AF6E
+ b _0801B208
+_0801AF6E:
+ movs r0, 0x11
+ negs r0, r0
+ ands r1, r0
+ str r1, [r2]
+ bl b_movescr_stack_push_cursor
+ ldr r1, _0801AF8C @ =gBattlescriptCurrInstr
+ ldr r0, _0801AF90 @ =gUnknown_081D99EC
+ str r0, [r1]
+ movs r2, 0x1
+ str r2, [sp, 0xC]
+ b _0801B20E
+ .align 2, 0
+_0801AF88: .4byte gBattleMons
+_0801AF8C: .4byte gBattlescriptCurrInstr
+_0801AF90: .4byte gUnknown_081D99EC
+_0801AF94:
+ ldr r1, _0801AFBC @ =gBattleMons
+ movs r0, 0x58
+ muls r0, r7
+ adds r1, 0x4C
+ adds r2, r0, r1
+ ldr r1, [r2]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ bne _0801AFAA
+ b _0801B208
+_0801AFAA:
+ movs r0, 0x21
+ negs r0, r0
+ ands r1, r0
+ str r1, [r2]
+ bl b_movescr_stack_push_cursor
+ ldr r1, _0801AFC0 @ =gBattlescriptCurrInstr
+ ldr r0, _0801AFC4 @ =gUnknown_081D9A04
+ b _0801B168
+ .align 2, 0
+_0801AFBC: .4byte gBattleMons
+_0801AFC0: .4byte gBattlescriptCurrInstr
+_0801AFC4: .4byte gUnknown_081D9A04
+_0801AFC8:
+ ldr r2, _0801B008 @ =gBattleMons
+ movs r0, 0x58
+ adds r4, r7, 0
+ muls r4, r0
+ adds r0, r2, 0
+ adds r0, 0x4C
+ adds r3, r4, r0
+ ldr r1, [r3]
+ movs r0, 0x7
+ ands r0, r1
+ cmp r0, 0
+ bne _0801AFE2
+ b _0801B208
+_0801AFE2:
+ movs r0, 0x8
+ negs r0, r0
+ ands r1, r0
+ str r1, [r3]
+ adds r2, 0x50
+ adds r2, r4, r2
+ ldr r0, [r2]
+ ldr r1, _0801B00C @ =0xf7ffffff
+ ands r0, r1
+ str r0, [r2]
+ bl b_movescr_stack_push_cursor
+ ldr r1, _0801B010 @ =gBattlescriptCurrInstr
+ ldr r0, _0801B014 @ =gUnknown_081D9A1C
+ str r0, [r1]
+ movs r4, 0x1
+ str r4, [sp, 0xC]
+ b _0801B20E
+ .align 2, 0
+_0801B008: .4byte gBattleMons
+_0801B00C: .4byte 0xf7ffffff
+_0801B010: .4byte gBattlescriptCurrInstr
+_0801B014: .4byte gUnknown_081D9A1C
+_0801B018:
+ ldr r1, _0801B048 @ =gBattleMons
+ movs r0, 0x58
+ muls r0, r7
+ adds r1, 0x50
+ adds r2, r0, r1
+ ldr r1, [r2]
+ movs r0, 0x7
+ ands r0, r1
+ cmp r0, 0
+ bne _0801B02E
+ b _0801B208
+_0801B02E:
+ movs r0, 0x8
+ negs r0, r0
+ ands r1, r0
+ str r1, [r2]
+ bl b_movescr_stack_push_cursor
+ ldr r1, _0801B04C @ =gBattlescriptCurrInstr
+ ldr r0, _0801B050 @ =gUnknown_081D9A34
+ str r0, [r1]
+ movs r5, 0x2
+ str r5, [sp, 0xC]
+ b _0801B20E
+ .align 2, 0
+_0801B048: .4byte gBattleMons
+_0801B04C: .4byte gBattlescriptCurrInstr
+_0801B050: .4byte gUnknown_081D9A34
+_0801B054:
+ ldr r1, _0801B090 @ =gBattleMons
+ movs r0, 0x58
+ muls r0, r7
+ adds r1, 0x50
+ adds r2, r0, r1
+ ldr r1, [r2]
+ movs r0, 0xF0
+ lsls r0, 12
+ ands r0, r1
+ cmp r0, 0
+ bne _0801B06C
+ b _0801B208
+_0801B06C:
+ ldr r0, _0801B094 @ =0xfff0ffff
+ ands r1, r0
+ str r1, [r2]
+ ldr r0, _0801B098 @ =gBattleTextBuff1
+ ldr r1, _0801B09C @ =gStatusConditionString_LoveJpn
+ bl StringCopy
+ bl b_movescr_stack_push_cursor
+ ldr r1, _0801B0A0 @ =gBattleCommunication
+ movs r0, 0
+ strb r0, [r1, 0x5]
+ ldr r1, _0801B0A4 @ =gBattlescriptCurrInstr
+ ldr r0, _0801B0A8 @ =gUnknown_081D9A4A
+ str r0, [r1]
+ movs r0, 0x2
+ str r0, [sp, 0xC]
+ b _0801B20E
+ .align 2, 0
+_0801B090: .4byte gBattleMons
+_0801B094: .4byte 0xfff0ffff
+_0801B098: .4byte gBattleTextBuff1
+_0801B09C: .4byte gStatusConditionString_LoveJpn
+_0801B0A0: .4byte gBattleCommunication
+_0801B0A4: .4byte gBattlescriptCurrInstr
+_0801B0A8: .4byte gUnknown_081D9A4A
+_0801B0AC:
+ ldr r4, _0801B170 @ =gBattleMons
+ movs r0, 0x58
+ adds r5, r7, 0
+ muls r5, r0
+ adds r0, r4, 0
+ adds r0, 0x4C
+ adds r6, r5, r0
+ ldr r2, [r6]
+ ldrb r0, [r6]
+ cmp r0, 0
+ bne _0801B0D4
+ adds r0, r4, 0
+ adds r0, 0x50
+ adds r0, r5, r0
+ ldr r0, [r0]
+ movs r1, 0x7
+ ands r0, r1
+ cmp r0, 0
+ bne _0801B0D4
+ b _0801B208
+_0801B0D4:
+ movs r0, 0x88
+ ands r2, r0
+ cmp r2, 0
+ beq _0801B0E4
+ ldr r0, _0801B174 @ =gBattleTextBuff1
+ ldr r1, _0801B178 @ =gStatusConditionString_PoisonJpn
+ bl StringCopy
+_0801B0E4:
+ ldr r0, [r6]
+ movs r1, 0x7
+ mov r8, r1
+ ands r0, r1
+ adds r4, 0x50
+ cmp r0, 0
+ beq _0801B104
+ adds r2, r5, r4
+ ldr r0, [r2]
+ ldr r1, _0801B17C @ =0xf7ffffff
+ ands r0, r1
+ str r0, [r2]
+ ldr r0, _0801B174 @ =gBattleTextBuff1
+ ldr r1, _0801B180 @ =gStatusConditionString_SleepJpn
+ bl StringCopy
+_0801B104:
+ ldr r0, [r6]
+ movs r1, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _0801B116
+ ldr r0, _0801B174 @ =gBattleTextBuff1
+ ldr r1, _0801B184 @ =gStatusConditionString_ParalysisJpn
+ bl StringCopy
+_0801B116:
+ ldr r0, [r6]
+ movs r1, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _0801B128
+ ldr r0, _0801B174 @ =gBattleTextBuff1
+ ldr r1, _0801B188 @ =gStatusConditionString_BurnJpn
+ bl StringCopy
+_0801B128:
+ ldr r0, [r6]
+ movs r1, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _0801B13A
+ ldr r0, _0801B174 @ =gBattleTextBuff1
+ ldr r1, _0801B18C @ =gStatusConditionString_IceJpn
+ bl StringCopy
+_0801B13A:
+ adds r5, r4
+ ldr r0, [r5]
+ mov r2, r8
+ ands r0, r2
+ cmp r0, 0
+ beq _0801B14E
+ ldr r0, _0801B174 @ =gBattleTextBuff1
+ ldr r1, _0801B190 @ =gStatusConditionString_ConfusionJpn
+ bl StringCopy
+_0801B14E:
+ movs r4, 0
+ str r4, [r6]
+ ldr r0, [r5]
+ movs r1, 0x8
+ negs r1, r1
+ ands r0, r1
+ str r0, [r5]
+ bl b_movescr_stack_push_cursor
+ ldr r0, _0801B194 @ =gBattleCommunication
+ strb r4, [r0, 0x5]
+ ldr r1, _0801B198 @ =gBattlescriptCurrInstr
+ ldr r0, _0801B19C @ =gUnknown_081D9A4A
+_0801B168:
+ str r0, [r1]
+ movs r3, 0x1
+ str r3, [sp, 0xC]
+ b _0801B20E
+ .align 2, 0
+_0801B170: .4byte gBattleMons
+_0801B174: .4byte gBattleTextBuff1
+_0801B178: .4byte gStatusConditionString_PoisonJpn
+_0801B17C: .4byte 0xf7ffffff
+_0801B180: .4byte gStatusConditionString_SleepJpn
+_0801B184: .4byte gStatusConditionString_ParalysisJpn
+_0801B188: .4byte gStatusConditionString_BurnJpn
+_0801B18C: .4byte gStatusConditionString_IceJpn
+_0801B190: .4byte gStatusConditionString_ConfusionJpn
+_0801B194: .4byte gBattleCommunication
+_0801B198: .4byte gBattlescriptCurrInstr
+_0801B19C: .4byte gUnknown_081D9A4A
+_0801B1A0:
+ ldr r4, _0801B1F0 @ =gBattleMons
+ mov r8, r4
+ movs r0, 0x58
+ adds r1, r7, 0
+ muls r1, r0
+ mov r0, r8
+ adds r0, 0x18
+ adds r1, r0
+ movs r2, 0x6
+ movs r5, 0x7
+ mov r10, r5
+_0801B1B6:
+ movs r0, 0
+ ldrsb r0, [r1, r0]
+ cmp r0, 0x5
+ bgt _0801B1C4
+ strb r2, [r1]
+ movs r0, 0x5
+ str r0, [sp, 0xC]
+_0801B1C4:
+ adds r1, 0x1
+ movs r3, 0x1
+ negs r3, r3
+ add r10, r3
+ mov r4, r10
+ cmp r4, 0
+ bge _0801B1B6
+ ldr r5, [sp, 0xC]
+ cmp r5, 0
+ beq _0801B254
+ ldr r0, _0801B1F4 @ =0x02000000
+ ldr r1, _0801B1F8 @ =0x00016003
+ adds r0, r1
+ strb r7, [r0]
+ ldr r0, _0801B1FC @ =gStringBank
+ strb r7, [r0]
+ bl b_movescr_stack_push_cursor
+ ldr r1, _0801B200 @ =gBattlescriptCurrInstr
+ ldr r0, _0801B204 @ =gUnknown_081D9A64
+ str r0, [r1]
+ b _0801B3CA
+ .align 2, 0
+_0801B1F0: .4byte gBattleMons
+_0801B1F4: .4byte 0x02000000
+_0801B1F8: .4byte 0x00016003
+_0801B1FC: .4byte gStringBank
+_0801B200: .4byte gBattlescriptCurrInstr
+_0801B204: .4byte gUnknown_081D9A64
+_0801B208:
+ ldr r2, [sp, 0xC]
+ cmp r2, 0
+ beq _0801B254
+_0801B20E:
+ ldr r0, _0801B240 @ =0x02000000
+ ldr r3, _0801B244 @ =0x00016003
+ adds r0, r3
+ strb r7, [r0]
+ ldr r0, _0801B248 @ =gStringBank
+ strb r7, [r0]
+ ldr r4, _0801B24C @ =gActiveBank
+ strb r7, [r4]
+ ldrb r1, [r4]
+ movs r0, 0x58
+ muls r0, r1
+_0801B224:
+ ldr r1, _0801B250 @ =gUnknown_02024ACC
+ adds r0, r1
+ str r0, [sp]
+ movs r0, 0
+ movs r1, 0x28
+ movs r2, 0
+ movs r3, 0x4
+ bl EmitSetAttributes
+ ldrb r0, [r4]
+ bl MarkBufferBankForExecution
+ b _0801B3CA
+ .align 2, 0
+_0801B240: .4byte 0x02000000
+_0801B244: .4byte 0x00016003
+_0801B248: .4byte gStringBank
+_0801B24C: .4byte gActiveBank
+_0801B250: .4byte gUnknown_02024ACC
+_0801B254:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r0, _0801B268 @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r7, r0
+ bcs _0801B264
+ b _0801AE18
+_0801B264:
+ b _0801B3CA
+ .align 2, 0
+_0801B268: .4byte gNoOfAllBanks
+_0801B26C:
+ ldr r7, _0801B284 @ =gBattleMoveDamage
+ ldr r0, [r7]
+ cmp r0, 0
+ bne _0801B276
+ b _0801B3CA
+_0801B276:
+ mov r4, r8
+ cmp r4, 0x1E
+ beq _0801B288
+ cmp r4, 0x3E
+ beq _0801B330
+ b _0801B3CA
+ .align 2, 0
+_0801B284: .4byte gBattleMoveDamage
+_0801B288:
+ ldr r0, _0801B314 @ =gBattleMoveFlags
+ ldrb r1, [r0]
+ movs r0, 0x29
+ ands r0, r1
+ cmp r0, 0
+ beq _0801B296
+ b _0801B3CA
+_0801B296:
+ ldr r2, _0801B318 @ =gSpecialStatuses
+ ldr r4, _0801B31C @ =gBankTarget
+ ldrb r1, [r4]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r1, r0, 2
+ adds r0, r2, 0
+ adds r0, 0x8
+ adds r0, r1, r0
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _0801B2BC
+ adds r0, r2, 0
+ adds r0, 0xC
+ adds r0, r1, r0
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _0801B2BC
+ b _0801B3CA
+_0801B2BC:
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x64
+ bl __umodsi3
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, r9
+ bcs _0801B3CA
+ ldr r2, _0801B320 @ =gBattleMoves
+ ldr r0, _0801B324 @ =gCurrentMove
+ ldrh r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r1, [r0, 0x8]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _0801B3CA
+ ldr r2, _0801B328 @ =gBattleMons
+ ldrb r1, [r4]
+ movs r0, 0x58
+ muls r0, r1
+ adds r0, r2
+ ldrh r0, [r0, 0x28]
+ cmp r0, 0
+ beq _0801B3CA
+ ldr r1, _0801B32C @ =gBattleCommunication
+ movs r0, 0x8
+ strb r0, [r1, 0x3]
+ bl b_movescr_stack_push_cursor
+ movs r0, 0
+ movs r1, 0
+ bl sub_801E3EC
+ bl b_movescr_stack_pop_cursor
+ b _0801B3CA
+ .align 2, 0
+_0801B314: .4byte gBattleMoveFlags
+_0801B318: .4byte gSpecialStatuses
+_0801B31C: .4byte gBankTarget
+_0801B320: .4byte gBattleMoves
+_0801B324: .4byte gCurrentMove
+_0801B328: .4byte gBattleMons
+_0801B32C: .4byte gBattleCommunication
+_0801B330:
+ ldr r0, _0801B3DC @ =gBattleMoveFlags
+ ldrb r0, [r0]
+ movs r4, 0x29
+ ands r4, r0
+ cmp r4, 0
+ bne _0801B3CA
+ ldr r1, _0801B3E0 @ =gSpecialStatuses
+ ldr r5, _0801B3E4 @ =gBankTarget
+ ldrb r2, [r5]
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 2
+ adds r6, r1, 0x4
+ adds r0, r6
+ ldr r1, [r0]
+ cmp r1, 0
+ beq _0801B3CA
+ ldr r0, _0801B3E8 @ =0x0000ffff
+ cmp r1, r0
+ beq _0801B3CA
+ ldr r0, _0801B3EC @ =gBankAttacker
+ ldrb r3, [r0]
+ cmp r3, r2
+ beq _0801B3CA
+ ldr r2, _0801B3F0 @ =gBattleMons
+ ldrb r1, [r0]
+ movs r0, 0x58
+ muls r0, r1
+ adds r0, r2
+ ldrh r1, [r0, 0x28]
+ ldrh r0, [r0, 0x2C]
+ cmp r1, r0
+ beq _0801B3CA
+ cmp r1, 0
+ beq _0801B3CA
+ ldr r0, _0801B3F4 @ =gLastUsedItem
+ mov r1, sp
+ ldrh r1, [r1, 0x14]
+ strh r1, [r0]
+ ldr r0, _0801B3F8 @ =gStringBank
+ strb r3, [r0]
+ ldr r0, _0801B3FC @ =0x02000000
+ ldr r2, _0801B400 @ =0x00016003
+ adds r0, r2
+ strb r3, [r0]
+ ldrb r1, [r5]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ ldr r0, [r0]
+ ldr r1, [sp, 0x10]
+ bl __divsi3
+ negs r0, r0
+ str r0, [r7]
+ ldrb r1, [r5]
+ cmp r0, 0
+ bne _0801B3AC
+ movs r0, 0x1
+ negs r0, r0
+ str r0, [r7]
+_0801B3AC:
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ str r4, [r0]
+ bl b_movescr_stack_push_cursor
+ ldr r1, _0801B404 @ =gBattlescriptCurrInstr
+ ldr r0, _0801B408 @ =gUnknown_081D9AA7
+ str r0, [r1]
+ ldr r0, [sp, 0xC]
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0xC]
+_0801B3CA:
+ ldr r0, [sp, 0xC]
+ add sp, 0x2C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0801B3DC: .4byte gBattleMoveFlags
+_0801B3E0: .4byte gSpecialStatuses
+_0801B3E4: .4byte gBankTarget
+_0801B3E8: .4byte 0x0000ffff
+_0801B3EC: .4byte gBankAttacker
+_0801B3F0: .4byte gBattleMons
+_0801B3F4: .4byte gLastUsedItem
+_0801B3F8: .4byte gStringBank
+_0801B3FC: .4byte 0x02000000
+_0801B400: .4byte 0x00016003
+_0801B404: .4byte gBattlescriptCurrInstr
+_0801B408: .4byte gUnknown_081D9AA7
+ thumb_func_end sub_801A02C
+
+ thumb_func_start unref_sub_801B40C
+unref_sub_801B40C: @ 801B40C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ movs r0, 0
+ str r0, [sp]
+ ldr r0, _0801B464 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _0801B42A
+ b _0801B56E
+_0801B42A:
+ movs r1, 0x1
+ mov r9, r1
+_0801B42E:
+ movs r5, 0
+ ldr r4, _0801B468 @ =gUnknown_081FC1D0
+ ldr r2, [sp]
+ adds r2, 0x1
+ str r2, [sp, 0x4]
+_0801B438:
+ ldr r0, _0801B46C @ =gAbsentBankFlags
+ ldrb r2, [r0]
+ ldr r3, _0801B470 @ =gBitTable
+ lsls r0, r5, 2
+ adds r0, r3
+ ldr r0, [r0]
+ ands r0, r2
+ cmp r0, 0
+ bne _0801B45A
+ adds r0, r5, 0x2
+ lsls r1, r0, 2
+ adds r1, r3
+ ldr r1, [r1]
+ ands r2, r1
+ adds r7, r0, 0
+ cmp r2, 0
+ beq _0801B474
+_0801B45A:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ b _0801B556
+ .align 2, 0
+_0801B464: .4byte gBattleTypeFlags
+_0801B468: .4byte gUnknown_081FC1D0
+_0801B46C: .4byte gAbsentBankFlags
+_0801B470: .4byte gBitTable
+_0801B474:
+ ldr r0, _0801B580 @ =gUnknown_081FC1D0
+ ldr r2, [sp]
+ lsls r1, r2, 3
+ adds r6, r1, r0
+ ldr r4, _0801B584 @ =gChosenMovesByBanks
+ lsls r0, r5, 1
+ adds r3, r0, r4
+ ldrh r2, [r6]
+ mov r8, r1
+ mov r10, r0
+ ldrh r3, [r3]
+ cmp r2, r3
+ bne _0801B4E4
+ lsls r0, r7, 1
+ adds r0, r4
+ ldrh r1, [r6, 0x2]
+ ldrh r0, [r0]
+ cmp r1, r0
+ bne _0801B4E4
+ adds r0, r5, 0
+ bl GetBankIdentity
+ mov r2, r9
+ ands r2, r0
+ lsls r1, r2, 1
+ adds r1, r2
+ lsls r1, 2
+ ldr r0, _0801B588 @ =gSideTimer
+ adds r1, r0
+ lsls r0, r7, 4
+ orrs r0, r5
+ strb r0, [r1, 0x3]
+ adds r0, r5, 0
+ bl GetBankIdentity
+ mov r1, r9
+ ands r1, r0
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0801B588 @ =gSideTimer
+ adds r0, r1
+ ldrh r1, [r6, 0x4]
+ strh r1, [r0, 0x4]
+ adds r0, r5, 0
+ bl GetBankIdentity
+ mov r1, r9
+ ands r1, r0
+ lsls r1, 1
+ ldr r2, _0801B58C @ =gSideAffecting
+ adds r1, r2
+ ldrh r0, [r1]
+ movs r2, 0x4
+ orrs r0, r2
+ strh r0, [r1]
+_0801B4E4:
+ ldr r0, _0801B580 @ =gUnknown_081FC1D0
+ mov r1, r8
+ adds r4, r1, r0
+ ldr r2, _0801B584 @ =gChosenMovesByBanks
+ lsls r0, r7, 1
+ adds r0, r2
+ ldrh r1, [r4]
+ ldrh r0, [r0]
+ cmp r1, r0
+ bne _0801B54E
+ mov r0, r10
+ adds r1, r0, r2
+ ldrh r0, [r4, 0x2]
+ ldrh r1, [r1]
+ cmp r0, r1
+ bne _0801B54E
+ adds r0, r5, 0
+ bl GetBankIdentity
+ mov r2, r9
+ ands r2, r0
+ lsls r1, r2, 1
+ adds r1, r2
+ lsls r1, 2
+ ldr r2, _0801B588 @ =gSideTimer
+ adds r1, r2
+ lsls r0, r5, 4
+ orrs r0, r7
+ strb r0, [r1, 0x3]
+ adds r0, r5, 0
+ bl GetBankIdentity
+ mov r1, r9
+ ands r1, r0
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0801B588 @ =gSideTimer
+ adds r0, r1
+ ldrh r1, [r4, 0x4]
+ strh r1, [r0, 0x4]
+ adds r0, r5, 0
+ bl GetBankIdentity
+ mov r1, r9
+ ands r1, r0
+ lsls r1, 1
+ ldr r2, _0801B58C @ =gSideAffecting
+ adds r1, r2
+ ldrh r0, [r1]
+ movs r2, 0x4
+ orrs r0, r2
+ strh r0, [r1]
+_0801B54E:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r4, _0801B580 @ =gUnknown_081FC1D0
+_0801B556:
+ cmp r5, 0x1
+ bhi _0801B55C
+ b _0801B438
+_0801B55C:
+ ldr r0, [sp, 0x4]
+ str r0, [sp]
+ lsls r0, 3
+ adds r0, r4
+ ldrh r1, [r0]
+ ldr r0, _0801B590 @ =0x0000ffff
+ cmp r1, r0
+ beq _0801B56E
+ b _0801B42E
+_0801B56E:
+ 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
+_0801B580: .4byte gUnknown_081FC1D0
+_0801B584: .4byte gChosenMovesByBanks
+_0801B588: .4byte gSideTimer
+_0801B58C: .4byte gSideAffecting
+_0801B590: .4byte 0x0000ffff
+ thumb_func_end unref_sub_801B40C
+
+ thumb_func_start sub_801B594
+sub_801B594: @ 801B594
+ push {lr}
+ ldr r0, _0801B5B4 @ =gBattleExecBuffer
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _0801B5B0
+ ldr r1, _0801B5B8 @ =gBattleScriptingCommandsTable
+ ldr r0, _0801B5BC @ =gBattlescriptCurrInstr
+ ldr r0, [r0]
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+_0801B5B0:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0801B5B4: .4byte gBattleExecBuffer
+_0801B5B8: .4byte gBattleScriptingCommandsTable
+_0801B5BC: .4byte gBattlescriptCurrInstr
+ thumb_func_end sub_801B594
+
+ thumb_func_start sub_801B5C0
+sub_801B5C0: @ 801B5C0
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ lsls r0, 16
+ lsrs r7, r0, 16
+ lsls r1, 24
+ lsrs r0, r1, 24
+ movs r5, 0
+ cmp r0, 0
+ beq _0801B5DE
+ subs r0, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ b _0801B5EA
+_0801B5DE:
+ ldr r1, _0801B5FC @ =gBattleMoves
+ lsls r0, r7, 1
+ adds r0, r7
+ lsls r0, 2
+ adds r0, r1
+ ldrb r6, [r0, 0x6]
+_0801B5EA:
+ cmp r6, 0x40
+ bls _0801B5F0
+ b _0801B900
+_0801B5F0:
+ lsls r0, r6, 2
+ ldr r1, _0801B600 @ =_0801B604
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0801B5FC: .4byte gBattleMoves
+_0801B600: .4byte _0801B604
+ .align 2, 0
+_0801B604:
+ .4byte _0801B708
+ .4byte _0801B808
+ .4byte _0801B8FC
+ .4byte _0801B900
+ .4byte _0801B820
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B808
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B8FC
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B808
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B900
+ .4byte _0801B808
+_0801B708:
+ ldr r0, _0801B7E8 @ =gBankAttacker
+ ldrb r0, [r0]
+ bl GetBankSide
+ movs r1, 0x1
+ eors r0, r1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _0801B7EC @ =gSideTimer
+ lsls r0, r4, 1
+ adds r0, r4
+ lsls r0, 2
+ adds r2, r0, r1
+ ldrb r0, [r2, 0x8]
+ cmp r0, 0
+ beq _0801B73A
+ ldr r1, _0801B7F0 @ =gBattleMons
+ ldrb r4, [r2, 0x9]
+ movs r0, 0x58
+ muls r0, r4
+ adds r0, r1
+ ldrh r0, [r0, 0x28]
+ cmp r0, 0
+ beq _0801B73A
+ b _0801B850
+_0801B73A:
+ ldr r0, _0801B7E8 @ =gBankAttacker
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r7, 1
+ mov r8, r0
+_0801B74A:
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ ldr r1, _0801B7F4 @ =gNoOfAllBanks
+ ldrb r1, [r1]
+ bl __modsi3
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r6, _0801B7E8 @ =gBankAttacker
+ ldrb r2, [r6]
+ cmp r5, r2
+ beq _0801B74A
+ adds r0, r5, 0
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ beq _0801B74A
+ ldr r0, _0801B7F8 @ =gAbsentBankFlags
+ ldrb r2, [r0]
+ ldr r1, _0801B7FC @ =gBitTable
+ lsls r0, r5, 2
+ adds r0, r1
+ ldr r0, [r0]
+ ands r2, r0
+ cmp r2, 0
+ bne _0801B74A
+ ldr r0, _0801B800 @ =gBattleMoves
+ mov r3, r8
+ adds r1, r3, r7
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1, 0x2]
+ cmp r0, 0xD
+ beq _0801B798
+ b _0801B900
+_0801B798:
+ ldrb r1, [r6]
+ str r2, [sp]
+ movs r0, 0x10
+ movs r2, 0x1F
+ movs r3, 0
+ bl AbilityBattleEffects
+ lsls r0, 24
+ cmp r0, 0
+ bne _0801B7AE
+ b _0801B900
+_0801B7AE:
+ ldr r2, _0801B7F0 @ =gBattleMons
+ movs r1, 0x58
+ adds r0, r5, 0
+ muls r0, r1
+ adds r0, r2
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, 0x1F
+ bne _0801B7C2
+ b _0801B900
+_0801B7C2:
+ movs r4, 0x2
+ eors r5, r4
+ adds r0, r5, 0
+ muls r0, r1
+ adds r0, r2
+ adds r0, 0x20
+ ldrb r1, [r0]
+ adds r0, r5, 0
+ bl sub_81074C4
+ ldr r1, _0801B804 @ =gSpecialStatuses
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0]
+ orrs r1, r4
+ strb r1, [r0]
+ b _0801B900
+ .align 2, 0
+_0801B7E8: .4byte gBankAttacker
+_0801B7EC: .4byte gSideTimer
+_0801B7F0: .4byte gBattleMons
+_0801B7F4: .4byte gNoOfAllBanks
+_0801B7F8: .4byte gAbsentBankFlags
+_0801B7FC: .4byte gBitTable
+_0801B800: .4byte gBattleMoves
+_0801B804: .4byte gSpecialStatuses
+_0801B808:
+ ldr r0, _0801B81C @ =gBankAttacker
+ ldrb r0, [r0]
+ bl GetBankIdentity
+ adds r1, r0, 0
+ movs r2, 0x1
+ movs r0, 0x1
+ ands r0, r1
+ eors r0, r2
+ b _0801B8B2
+ .align 2, 0
+_0801B81C: .4byte gBankAttacker
+_0801B820:
+ ldr r0, _0801B854 @ =gBankAttacker
+ ldrb r0, [r0]
+ bl GetBankSide
+ movs r1, 0x1
+ eors r0, r1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _0801B858 @ =gSideTimer
+ lsls r0, r4, 1
+ adds r0, r4
+ lsls r0, 2
+ adds r2, r0, r1
+ ldrb r0, [r2, 0x8]
+ cmp r0, 0
+ beq _0801B860
+ ldr r1, _0801B85C @ =gBattleMons
+ ldrb r4, [r2, 0x9]
+ movs r0, 0x58
+ muls r0, r4
+ adds r0, r1
+ ldrh r0, [r0, 0x28]
+ cmp r0, 0
+ beq _0801B860
+_0801B850:
+ adds r5, r4, 0
+ b _0801B900
+ .align 2, 0
+_0801B854: .4byte gBankAttacker
+_0801B858: .4byte gSideTimer
+_0801B85C: .4byte gBattleMons
+_0801B860:
+ ldr r0, _0801B894 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r4, 0x1
+ adds r0, r4, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _0801B8DC
+ movs r0, 0x4
+ ands r6, r0
+ cmp r6, 0
+ beq _0801B8DC
+ ldr r0, _0801B898 @ =gBankAttacker
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0801B8A0
+ bl Random
+ adds r1, r4, 0
+ ands r1, r0
+ cmp r1, 0
+ beq _0801B89C
+ movs r0, 0x1
+ b _0801B8B2
+ .align 2, 0
+_0801B894: .4byte gBattleTypeFlags
+_0801B898: .4byte gBankAttacker
+_0801B89C:
+ movs r0, 0x3
+ b _0801B8B2
+_0801B8A0:
+ bl Random
+ adds r1, r4, 0
+ ands r1, r0
+ cmp r1, 0
+ beq _0801B8B0
+ movs r0, 0
+ b _0801B8B2
+_0801B8B0:
+ movs r0, 0x2
+_0801B8B2:
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r0, _0801B8D4 @ =gAbsentBankFlags
+ ldrb r1, [r0]
+ ldr r2, _0801B8D8 @ =gBitTable
+ lsls r0, r5, 2
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ beq _0801B900
+ movs r0, 0x2
+ eors r5, r0
+ b _0801B900
+ .align 2, 0
+_0801B8D4: .4byte gAbsentBankFlags
+_0801B8D8: .4byte gBitTable
+_0801B8DC:
+ ldr r0, _0801B8F8 @ =gBankAttacker
+ ldrb r0, [r0]
+ bl GetBankIdentity
+ adds r1, r0, 0
+ movs r2, 0x1
+ movs r0, 0x1
+ ands r0, r1
+ eors r0, r2
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r5, r0, 24
+ b _0801B900
+ .align 2, 0
+_0801B8F8: .4byte gBankAttacker
+_0801B8FC:
+ ldr r0, _0801B91C @ =gBankAttacker
+ ldrb r5, [r0]
+_0801B900:
+ ldr r1, _0801B920 @ =0x02000000
+ ldr r0, _0801B91C @ =gBankAttacker
+ ldrb r0, [r0]
+ ldr r2, _0801B924 @ =0x00016010
+ adds r0, r2
+ adds r0, r1
+ strb r5, [r0]
+ adds r0, r5, 0
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0801B91C: .4byte gBankAttacker
+_0801B920: .4byte 0x02000000
+_0801B924: .4byte 0x00016010
+ thumb_func_end sub_801B5C0
+
+ thumb_func_start sub_801B928
+sub_801B928: @ 801B928
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x10
+ ldr r0, _0801B9E0 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _0801B9DA
+ ldr r7, _0801B9E4 @ =gBankAttacker
+ ldrb r0, [r7]
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ beq _0801B9DA
+ ldr r5, _0801B9E8 @ =gBattleMons
+ ldrb r0, [r7]
+ movs r1, 0x58
+ mov r8, r1
+ mov r1, r8
+ muls r1, r0
+ adds r0, r5, 0
+ adds r0, 0x54
+ adds r0, r1, r0
+ ldr r0, [r0]
+ adds r2, r5, 0
+ adds r2, 0x3C
+ adds r1, r2
+ bl IsOtherTrainer
+ lsls r0, 24
+ cmp r0, 0
+ beq _0801B9DA
+ ldr r0, _0801B9EC @ =0x0000080e
+ bl FlagGet
+ lsls r0, 24
+ cmp r0, 0
+ bne _0801B9DA
+ movs r6, 0xA
+ ldr r0, _0801B9F0 @ =0x00000808
+ bl FlagGet
+ lsls r0, 24
+ cmp r0, 0
+ beq _0801B98E
+ movs r6, 0x1E
+_0801B98E:
+ ldr r0, _0801B9F4 @ =0x0000080a
+ bl FlagGet
+ lsls r0, 24
+ cmp r0, 0
+ beq _0801B99C
+ movs r6, 0x32
+_0801B99C:
+ ldr r0, _0801B9F8 @ =0x0000080c
+ bl FlagGet
+ lsls r0, 24
+ cmp r0, 0
+ beq _0801B9AA
+ movs r6, 0x46
+_0801B9AA:
+ ldrb r0, [r7]
+ mov r2, r8
+ muls r2, r0
+ adds r0, r2, 0
+ adds r0, r5
+ adds r0, 0x2A
+ ldrb r0, [r0]
+ cmp r0, r6
+ bls _0801B9DA
+ bl Random
+ movs r1, 0xFF
+ ands r1, r0
+ ldrb r0, [r7]
+ mov r2, r8
+ muls r2, r0
+ adds r0, r2, r5
+ adds r0, 0x2A
+ ldrb r0, [r0]
+ adds r0, r6
+ muls r0, r1
+ asrs r4, r0, 8
+ cmp r4, r6
+ bge _0801B9FC
+_0801B9DA:
+ movs r0, 0
+ b _0801BC24
+ .align 2, 0
+_0801B9E0: .4byte gBattleTypeFlags
+_0801B9E4: .4byte gBankAttacker
+_0801B9E8: .4byte gBattleMons
+_0801B9EC: .4byte 0x0000080e
+_0801B9F0: .4byte 0x00000808
+_0801B9F4: .4byte 0x0000080a
+_0801B9F8: .4byte 0x0000080c
+_0801B9FC:
+ ldr r3, _0801BA3C @ =gCurrentMove
+ ldrh r0, [r3]
+ cmp r0, 0x63
+ bne _0801BA12
+ adds r0, r5, 0
+ adds r0, 0x50
+ adds r0, r2, r0
+ ldr r1, [r0]
+ ldr r2, _0801BA40 @ =0xff7fffff
+ ands r1, r2
+ str r1, [r0]
+_0801BA12:
+ ldrb r0, [r7]
+ mov r1, r8
+ muls r1, r0
+ adds r0, r1, 0
+ adds r1, r5, 0
+ adds r1, 0x4C
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x7
+ ands r0, r1
+ cmp r0, 0
+ beq _0801BA4C
+ ldrh r0, [r3]
+ cmp r0, 0xAD
+ beq _0801BA34
+ cmp r0, 0xD6
+ bne _0801BA4C
+_0801BA34:
+ ldr r1, _0801BA44 @ =gBattlescriptCurrInstr
+ ldr r0, _0801BA48 @ =gUnknown_081D995F
+ b _0801BBCE
+ .align 2, 0
+_0801BA3C: .4byte gCurrentMove
+_0801BA40: .4byte 0xff7fffff
+_0801BA44: .4byte gBattlescriptCurrInstr
+_0801BA48: .4byte gUnknown_081D995F
+_0801BA4C:
+ bl Random
+ movs r5, 0xFF
+ adds r1, r5, 0
+ ands r1, r0
+ ldr r7, _0801BB04 @ =gBattleMons
+ ldr r2, _0801BB08 @ =gBankAttacker
+ mov r9, r2
+ ldrb r3, [r2]
+ movs r0, 0x58
+ mov r8, r0
+ mov r0, r8
+ muls r0, r3
+ adds r0, r7
+ adds r0, 0x2A
+ ldrb r2, [r0]
+ adds r0, r2, r6
+ muls r0, r1
+ asrs r4, r0, 8
+ cmp r4, r6
+ bge _0801BB3C
+ ldr r7, _0801BB0C @ =gBitTable
+ ldr r5, _0801BB10 @ =gCurrMovePos
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r7
+ ldrb r1, [r0]
+ adds r0, r3, 0
+ movs r2, 0xFF
+ bl sub_8015A98
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0xF
+ bne _0801BA94
+ b _0801BBBE
+_0801BA94:
+ adds r6, r5, 0
+ ldr r1, _0801BB14 @ =gUnknown_02024BE5
+ mov r9, r1
+ movs r2, 0x3
+ mov r8, r2
+_0801BA9E:
+ bl Random
+ mov r1, r8
+ ands r0, r1
+ mov r2, r9
+ strb r0, [r2]
+ strb r0, [r6]
+ ldrb r0, [r6]
+ lsls r0, 2
+ adds r0, r7
+ ldr r5, [r0]
+ ands r5, r4
+ cmp r5, 0
+ bne _0801BA9E
+ ldr r4, _0801BB18 @ =gUnknown_02024BEA
+ ldr r3, _0801BB04 @ =gBattleMons
+ ldr r0, _0801BB10 @ =gCurrMovePos
+ ldrb r0, [r0]
+ lsls r0, 1
+ ldr r1, _0801BB08 @ =gBankAttacker
+ ldrb r2, [r1]
+ movs r1, 0x58
+ muls r1, r2
+ adds r0, r1
+ adds r3, 0xC
+ adds r0, r3
+ ldrh r0, [r0]
+ strh r0, [r4]
+ ldr r0, _0801BB1C @ =gBattleCommunication
+ strb r5, [r0, 0x3]
+ ldr r0, _0801BB20 @ =gDynamicBasePower
+ movs r1, 0
+ strh r5, [r0]
+ ldr r0, _0801BB24 @ =0x02000000
+ ldr r2, _0801BB28 @ =0x0001601c
+ adds r0, r2
+ strb r1, [r0]
+ ldr r1, _0801BB2C @ =gBattlescriptCurrInstr
+ ldr r0, _0801BB30 @ =gUnknown_081D996F
+ str r0, [r1]
+ ldrh r0, [r4]
+ movs r1, 0
+ bl sub_801B5C0
+ ldr r1, _0801BB34 @ =gBankTarget
+ strb r0, [r1]
+ ldr r2, _0801BB38 @ =gHitMarker
+ ldr r0, [r2]
+ movs r1, 0x80
+ lsls r1, 14
+ b _0801BC1E
+ .align 2, 0
+_0801BB04: .4byte gBattleMons
+_0801BB08: .4byte gBankAttacker
+_0801BB0C: .4byte gBitTable
+_0801BB10: .4byte gCurrMovePos
+_0801BB14: .4byte gUnknown_02024BE5
+_0801BB18: .4byte gUnknown_02024BEA
+_0801BB1C: .4byte gBattleCommunication
+_0801BB20: .4byte gDynamicBasePower
+_0801BB24: .4byte 0x02000000
+_0801BB28: .4byte 0x0001601c
+_0801BB2C: .4byte gBattlescriptCurrInstr
+_0801BB30: .4byte gUnknown_081D996F
+_0801BB34: .4byte gBankTarget
+_0801BB38: .4byte gHitMarker
+_0801BB3C:
+ subs r0, r2, r6
+ lsls r0, 24
+ lsrs r6, r0, 24
+ bl Random
+ adds r4, r5, 0
+ ands r4, r0
+ cmp r4, r6
+ bge _0801BBB8
+ mov r1, r9
+ ldrb r0, [r1]
+ mov r1, r8
+ muls r1, r0
+ adds r0, r7, 0
+ adds r0, 0x4C
+ adds r0, r1, r0
+ ldr r0, [r0]
+ ands r0, r5
+ cmp r0, 0
+ bne _0801BBB8
+ adds r0, r1, r7
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, 0x48
+ beq _0801BBB8
+ cmp r0, 0xF
+ beq _0801BBB8
+ movs r2, 0
+ ldr r0, _0801BBAC @ =gNoOfAllBanks
+ ldrb r3, [r0]
+ mov r8, r0
+ cmp r2, r3
+ bge _0801BB9E
+ ldr r0, [r7, 0x50]
+ movs r1, 0x70
+ ands r0, r1
+ cmp r0, 0
+ bne _0801BB9E
+ adds r1, r7, 0
+ adds r1, 0x50
+ movs r5, 0x70
+_0801BB8E:
+ adds r1, 0x58
+ adds r2, 0x1
+ cmp r2, r3
+ bge _0801BB9E
+ ldr r0, [r1]
+ ands r0, r5
+ cmp r0, 0
+ beq _0801BB8E
+_0801BB9E:
+ mov r0, r8
+ ldrb r0, [r0]
+ cmp r2, r0
+ bne _0801BBB8
+ ldr r1, _0801BBB0 @ =gBattlescriptCurrInstr
+ ldr r0, _0801BBB4 @ =gUnknown_081D9989
+ b _0801BBCE
+ .align 2, 0
+_0801BBAC: .4byte gNoOfAllBanks
+_0801BBB0: .4byte gBattlescriptCurrInstr
+_0801BBB4: .4byte gUnknown_081D9989
+_0801BBB8:
+ subs r4, r6
+ cmp r4, r6
+ blt _0801BBE0
+_0801BBBE:
+ bl Random
+ ldr r2, _0801BBD4 @ =gBattleCommunication
+ movs r1, 0x3
+ ands r1, r0
+ strb r1, [r2, 0x5]
+ ldr r1, _0801BBD8 @ =gBattlescriptCurrInstr
+ ldr r0, _0801BBDC @ =gUnknown_081D9977
+_0801BBCE:
+ str r0, [r1]
+ movs r0, 0x1
+ b _0801BC24
+ .align 2, 0
+_0801BBD4: .4byte gBattleCommunication
+_0801BBD8: .4byte gBattlescriptCurrInstr
+_0801BBDC: .4byte gUnknown_081D9977
+_0801BBE0:
+ ldr r4, _0801BC34 @ =gBankAttacker
+ ldrb r1, [r4]
+ movs r0, 0x58
+ muls r1, r0
+ ldr r0, _0801BC38 @ =gBattleMons
+ adds r1, r0
+ movs r0, 0x28
+ str r0, [sp]
+ movs r0, 0
+ str r0, [sp, 0x4]
+ ldrb r0, [r4]
+ str r0, [sp, 0x8]
+ ldrb r0, [r4]
+ str r0, [sp, 0xC]
+ adds r0, r1, 0
+ movs r2, 0x1
+ movs r3, 0
+ bl CalculateBaseDamage
+ ldr r1, _0801BC3C @ =gBattleMoveDamage
+ str r0, [r1]
+ ldr r1, _0801BC40 @ =gBankTarget
+ ldrb r0, [r4]
+ strb r0, [r1]
+ ldr r1, _0801BC44 @ =gBattlescriptCurrInstr
+ ldr r0, _0801BC48 @ =gUnknown_081D99A0
+ str r0, [r1]
+ ldr r2, _0801BC4C @ =gHitMarker
+ ldr r0, [r2]
+ movs r1, 0x80
+ lsls r1, 12
+_0801BC1E:
+ orrs r0, r1
+ str r0, [r2]
+ movs r0, 0x2
+_0801BC24:
+ add sp, 0x10
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0801BC34: .4byte gBankAttacker
+_0801BC38: .4byte gBattleMons
+_0801BC3C: .4byte gBattleMoveDamage
+_0801BC40: .4byte gBankTarget
+_0801BC44: .4byte gBattlescriptCurrInstr
+_0801BC48: .4byte gUnknown_081D99A0
+_0801BC4C: .4byte gHitMarker
+ thumb_func_end sub_801B928
+
+ .align 2, 0 @ Don't pad with nop.