summaryrefslogtreecommitdiff
path: root/asm/battle_2.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_2.s
parentf1344efd2aff92292f58f7323bd9297a38fe9b02 (diff)
parent8d82578d3a101b06f9d2ced31738021007c4e533 (diff)
Merge pull request #1 from pret/master
Update fork to match main fork.
Diffstat (limited to 'asm/battle_2.s')
-rw-r--r--asm/battle_2.s6435
1 files changed, 6435 insertions, 0 deletions
diff --git a/asm/battle_2.s b/asm/battle_2.s
new file mode 100644
index 000000000..c1f75dad5
--- /dev/null
+++ b/asm/battle_2.s
@@ -0,0 +1,6435 @@
+ .include "constants/gba_constants.inc"
+ .include "constants/species_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_8012324
+sub_8012324: @ 8012324
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x1C
+ ldr r0, _08012340 @ =gBattleCommunication
+ movs r1, 0
+ strb r1, [r0, 0x4]
+ ldr r0, _08012344 @ =gActiveBank
+ strb r1, [r0]
+ ldr r0, _08012348 @ =gNoOfAllBanks
+ bl _08012F74
+ .align 2, 0
+_08012340: .4byte gBattleCommunication
+_08012344: .4byte gActiveBank
+_08012348: .4byte gNoOfAllBanks
+_0801234C:
+ ldr r4, _08012374 @ =gActiveBank
+ ldrb r0, [r4]
+ bl GetBankIdentity
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _08012378 @ =gBattleCommunication
+ ldrb r0, [r4]
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0x6
+ bls _08012368
+ bl _08012F66
+_08012368:
+ lsls r0, 2
+ ldr r1, _0801237C @ =_08012380
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08012374: .4byte gActiveBank
+_08012378: .4byte gBattleCommunication
+_0801237C: .4byte _08012380
+ .align 2, 0
+_08012380:
+ .4byte _0801239C
+ .4byte _080124C8
+ .4byte _08012A28
+ .4byte _08012DA8
+ .4byte _08012E50
+ .4byte _08012E94
+ .4byte _08012F38
+_0801239C:
+ ldr r4, _08012434 @ =0x02000000
+ ldr r0, _08012438 @ =gActiveBank
+ ldrb r0, [r0]
+ ldr r1, _0801243C @ =0x00016068
+ adds r0, r1
+ adds r0, r4
+ movs r1, 0x6
+ strb r1, [r0]
+ ldr r0, _08012440 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ bne _080123F8
+ movs r1, 0x2
+ movs r0, 0x2
+ ands r0, r5
+ cmp r0, 0
+ beq _080123F8
+ eors r5, r1
+ adds r0, r5, 0
+ bl GetBankByPlayerAI
+ ldr r2, _08012444 @ =0x000160a6
+ adds r1, r4, r2
+ ldrb r1, [r1]
+ ldr r2, _08012448 @ =gBitTable
+ lsls r0, 24
+ lsrs r0, 22
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ bne _080123F8
+ ldr r4, _0801244C @ =gBattleCommunication
+ adds r0, r5, 0
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, 0x4
+ beq _080123F8
+ bl _08012F66
+_080123F8:
+ ldr r0, _08012434 @ =0x02000000
+ ldr r3, _08012444 @ =0x000160a6
+ adds r0, r3
+ ldrb r3, [r0]
+ ldr r1, _08012448 @ =gBitTable
+ ldr r4, _08012438 @ =gActiveBank
+ ldrb r2, [r4]
+ lsls r0, r2, 2
+ adds r0, r1
+ ldr r0, [r0]
+ ands r3, r0
+ cmp r3, 0
+ beq _08012468
+ ldr r0, _08012450 @ =gActionForBanks
+ adds r0, r2, r0
+ movs r1, 0xD
+ strb r1, [r0]
+ ldr r0, _08012440 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ bne _08012454
+ ldr r0, _0801244C @ =gBattleCommunication
+ ldrb r1, [r4]
+ adds r1, r0
+ movs r0, 0x4
+ strb r0, [r1]
+ bl _08012F66
+ .align 2, 0
+_08012434: .4byte 0x02000000
+_08012438: .4byte gActiveBank
+_0801243C: .4byte 0x00016068
+_08012440: .4byte gBattleTypeFlags
+_08012444: .4byte 0x000160a6
+_08012448: .4byte gBitTable
+_0801244C: .4byte gBattleCommunication
+_08012450: .4byte gActionForBanks
+_08012454:
+ ldr r0, _08012464 @ =gBattleCommunication
+ ldrb r1, [r4]
+ adds r1, r0
+ movs r0, 0x3
+ strb r0, [r1]
+ bl _08012F66
+ .align 2, 0
+_08012464: .4byte gBattleCommunication
+_08012468:
+ ldr r1, _0801249C @ =gBattleMons
+ movs r0, 0x58
+ muls r0, r2
+ adds r1, 0x50
+ adds r0, r1
+ ldr r1, [r0]
+ movs r0, 0x80
+ lsls r0, 5
+ ands r0, r1
+ cmp r0, 0
+ bne _08012488
+ movs r0, 0x80
+ lsls r0, 15
+ ands r1, r0
+ cmp r1, 0
+ beq _080124A8
+_08012488:
+ ldr r0, _080124A0 @ =gActionForBanks
+ adds r0, r2, r0
+ strb r3, [r0]
+ ldr r1, _080124A4 @ =gBattleCommunication
+ ldrb r0, [r4]
+ adds r0, r1
+ movs r1, 0x3
+ strb r1, [r0]
+ bl _08012F66
+ .align 2, 0
+_0801249C: .4byte gBattleMons
+_080124A0: .4byte gActionForBanks
+_080124A4: .4byte gBattleCommunication
+_080124A8:
+ ldr r0, _080124C0 @ =gActionForBanks
+ ldrb r1, [r0]
+ ldr r0, _080124C4 @ =gBattleBufferB
+ ldrb r2, [r0, 0x1]
+ ldrb r0, [r0, 0x2]
+ lsls r0, 8
+ orrs r2, r0
+ movs r0, 0
+ bl dp01_build_cmdbuf_x12_a_bb
+ bl _08012E32
+ .align 2, 0
+_080124C0: .4byte gActionForBanks
+_080124C4: .4byte gBattleBufferB
+_080124C8:
+ ldr r4, _08012520 @ =gBattleExecBuffer
+ ldr r1, _08012524 @ =gBitTable
+ ldr r3, _08012528 @ =gActiveBank
+ ldrb r5, [r3]
+ lsls r0, r5, 2
+ adds r0, r1
+ ldr r2, [r0]
+ lsls r0, r2, 4
+ movs r1, 0xF0
+ lsls r1, 24
+ orrs r0, r1
+ orrs r0, r2
+ lsls r1, r2, 8
+ orrs r0, r1
+ lsls r2, 12
+ orrs r0, r2
+ ldr r1, [r4]
+ ands r1, r0
+ mov r8, r3
+ cmp r1, 0
+ beq _080124F6
+ bl _08012F66
+_080124F6:
+ ldr r2, _0801252C @ =gActionForBanks
+ adds r2, r5, r2
+ ldr r1, _08012530 @ =gBattleBufferB
+ lsls r0, r5, 9
+ adds r1, 0x1
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r2]
+ ldrb r0, [r3]
+ lsls r0, 9
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0xC
+ bls _08012514
+ b _08012968
+_08012514:
+ lsls r0, 2
+ ldr r1, _08012534 @ =_08012538
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08012520: .4byte gBattleExecBuffer
+_08012524: .4byte gBitTable
+_08012528: .4byte gActiveBank
+_0801252C: .4byte gActionForBanks
+_08012530: .4byte gBattleBufferB
+_08012534: .4byte _08012538
+ .align 2, 0
+_08012538:
+ .4byte _0801256C
+ .4byte _080126B4
+ .4byte _080126E0
+ .4byte _08012968
+ .4byte _08012968
+ .4byte _080128B0
+ .4byte _08012908
+ .4byte _08012968
+ .4byte _08012968
+ .4byte _08012968
+ .4byte _08012968
+ .4byte _08012968
+ .4byte _0801292C
+_0801256C:
+ bl sub_8015C90
+ lsls r0, 24
+ cmp r0, 0
+ beq _080125D0
+ ldr r0, _080125B4 @ =gBattleCommunication
+ ldr r2, _080125B8 @ =gActiveBank
+ ldrb r1, [r2]
+ adds r1, r0
+ movs r4, 0
+ movs r0, 0x5
+ strb r0, [r1]
+ ldr r3, _080125BC @ =0x02000000
+ ldrb r0, [r2]
+ ldr r1, _080125C0 @ =0x00016060
+ adds r0, r1
+ adds r0, r3
+ strb r4, [r0]
+ ldrb r0, [r2]
+ ldr r4, _080125C4 @ =0x00016094
+ adds r0, r4
+ adds r0, r3
+ movs r1, 0x3
+ strb r1, [r0]
+ ldrb r1, [r2]
+ ldr r0, _080125C8 @ =0x00016010
+ adds r2, r1, r0
+ adds r2, r3
+ ldr r0, _080125CC @ =gBattleBufferB
+ lsls r1, 9
+ adds r0, 0x3
+ adds r1, r0
+ ldrb r0, [r1]
+ strb r0, [r2]
+ bl _08012F90
+ .align 2, 0
+_080125B4: .4byte gBattleCommunication
+_080125B8: .4byte gActiveBank
+_080125BC: .4byte 0x02000000
+_080125C0: .4byte 0x00016060
+_080125C4: .4byte 0x00016094
+_080125C8: .4byte 0x00016010
+_080125CC: .4byte gBattleBufferB
+_080125D0:
+ ldr r1, _080125FC @ =gDisableStructs
+ ldr r5, _08012600 @ =gActiveBank
+ ldrb r4, [r5]
+ lsls r0, r4, 3
+ subs r0, r4
+ lsls r0, 2
+ adds r0, r1
+ ldrh r2, [r0, 0x6]
+ cmp r2, 0
+ beq _0801260C
+ ldr r1, _08012604 @ =gChosenMovesByBanks
+ lsls r0, r4, 1
+ adds r0, r1
+ strh r2, [r0]
+ ldr r1, _08012608 @ =gBattleCommunication
+ ldrb r0, [r5]
+ adds r0, r1
+ movs r1, 0x3
+ strb r1, [r0]
+ bl _08012F90
+ .align 2, 0
+_080125FC: .4byte gDisableStructs
+_08012600: .4byte gActiveBank
+_08012604: .4byte gChosenMovesByBanks
+_08012608: .4byte gBattleCommunication
+_0801260C:
+ add r2, sp, 0x4
+ ldr r3, _080126AC @ =gBattleMons
+ movs r1, 0x58
+ adds r0, r4, 0
+ muls r0, r1
+ adds r0, r3
+ ldrh r0, [r0]
+ strh r0, [r2, 0x10]
+ ldrb r0, [r5]
+ muls r0, r1
+ adds r0, r3
+ adds r0, 0x21
+ ldrb r0, [r0]
+ strb r0, [r2, 0x12]
+ ldrb r0, [r5]
+ muls r0, r1
+ adds r0, r3
+ adds r0, 0x22
+ ldrb r0, [r0]
+ strb r0, [r2, 0x13]
+ movs r4, 0
+ mov r1, sp
+ adds r1, 0xC
+ str r1, [sp, 0x18]
+ add r2, sp, 0x10
+ mov r10, r2
+ mov r8, r3
+ adds r7, r5, 0
+ movs r6, 0x58
+ movs r3, 0xC
+ add r3, r8
+ mov r9, r3
+ add r5, sp, 0x4
+_0801264E:
+ lsls r2, r4, 1
+ ldrb r0, [r7]
+ muls r0, r6
+ adds r0, r2, r0
+ add r0, r9
+ ldrh r0, [r0]
+ strh r0, [r5]
+ ldr r0, [sp, 0x18]
+ adds r3, r0, r4
+ ldrb r0, [r7]
+ muls r0, r6
+ adds r0, r4, r0
+ mov r1, r8
+ adds r1, 0x24
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r3]
+ ldrb r0, [r7]
+ adds r1, r0, 0
+ muls r1, r6
+ adds r2, r1
+ add r2, r9
+ ldrh r0, [r2]
+ add r1, r8
+ adds r1, 0x3B
+ ldrb r1, [r1]
+ lsls r2, r4, 24
+ lsrs r2, 24
+ bl CalculatePPWithBonus
+ mov r2, r10
+ adds r1, r2, r4
+ strb r0, [r1]
+ adds r5, 0x2
+ adds r4, 0x1
+ cmp r4, 0x3
+ ble _0801264E
+ ldr r0, _080126B0 @ =gBattleTypeFlags
+ ldrb r0, [r0]
+ movs r1, 0x1
+ ands r1, r0
+ movs r0, 0
+ movs r2, 0
+ add r3, sp, 0x4
+ bl sub_800CBA4
+ b _0801289E
+ .align 2, 0
+_080126AC: .4byte gBattleMons
+_080126B0: .4byte gBattleTypeFlags
+_080126B4:
+ ldr r0, _080126D0 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ ldr r0, _080126D4 @ =0x00000902
+ ands r0, r1
+ cmp r0, 0
+ bne _080126C2
+ b _08012908
+_080126C2:
+ ldr r1, _080126D8 @ =gUnknown_02024C1C
+ mov r3, r8
+ ldrb r0, [r3]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _080126DC @ =gUnknown_081D9B29
+ b _080129CC
+ .align 2, 0
+_080126D0: .4byte gBattleTypeFlags
+_080126D4: .4byte 0x00000902
+_080126D8: .4byte gUnknown_02024C1C
+_080126DC: .4byte gUnknown_081D9B29
+_080126E0:
+ ldr r3, _08012738 @ =0x02000000
+ ldr r5, _0801273C @ =gActiveBank
+ ldrb r0, [r5]
+ ldr r4, _08012740 @ =0x00016064
+ adds r1, r0, r4
+ adds r1, r3
+ ldr r2, _08012744 @ =gBattlePartyID
+ lsls r0, 1
+ adds r0, r2
+ ldrh r0, [r0]
+ strb r0, [r1]
+ ldr r7, _08012748 @ =gBattleMons
+ ldrb r2, [r5]
+ movs r6, 0x58
+ adds r0, r2, 0
+ muls r0, r6
+ adds r1, r7, 0
+ adds r1, 0x50
+ adds r0, r1
+ ldr r0, [r0]
+ ldr r1, _0801274C @ =0x0400e000
+ ands r0, r1
+ cmp r0, 0
+ bne _08012722
+ ldr r0, _08012750 @ =gStatuses3
+ lsls r1, r2, 2
+ adds r1, r0
+ ldr r1, [r1]
+ movs r0, 0x80
+ lsls r0, 3
+ ands r1, r0
+ cmp r1, 0
+ beq _08012758
+_08012722:
+ lsls r0, r2, 1
+ adds r0, r2
+ ldr r2, _08012754 @ =0x0001606c
+ adds r1, r3, r2
+ adds r0, r1
+ str r0, [sp]
+ movs r0, 0
+ movs r1, 0x2
+ movs r2, 0x6
+ b _0801286C
+ .align 2, 0
+_08012738: .4byte 0x02000000
+_0801273C: .4byte gActiveBank
+_08012740: .4byte 0x00016064
+_08012744: .4byte gBattlePartyID
+_08012748: .4byte gBattleMons
+_0801274C: .4byte 0x0400e000
+_08012750: .4byte gStatuses3
+_08012754: .4byte 0x0001606c
+_08012758:
+ str r1, [sp]
+ movs r0, 0xC
+ adds r1, r2, 0
+ movs r2, 0x17
+ movs r3, 0
+ bl AbilityBattleEffects
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ bne _080127E0
+ ldrb r1, [r5]
+ str r4, [sp]
+ movs r0, 0xC
+ movs r2, 0x47
+ movs r3, 0
+ bl AbilityBattleEffects
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ beq _080127A8
+ ldrb r0, [r5]
+ muls r0, r6
+ adds r1, r0, r7
+ adds r0, r1, 0
+ adds r0, 0x21
+ ldrb r0, [r0]
+ cmp r0, 0x2
+ beq _080127A8
+ adds r0, r1, 0
+ adds r0, 0x22
+ ldrb r0, [r0]
+ cmp r0, 0x2
+ beq _080127A8
+ adds r0, r1, 0
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, 0x1A
+ bne _080127E0
+_080127A8:
+ ldr r5, _08012808 @ =gActiveBank
+ ldrb r1, [r5]
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0xF
+ movs r2, 0x2A
+ movs r3, 0
+ bl AbilityBattleEffects
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ beq _08012818
+ ldr r2, _0801280C @ =gBattleMons
+ ldrb r1, [r5]
+ movs r0, 0x58
+ muls r0, r1
+ adds r1, r0, r2
+ adds r0, r1, 0
+ adds r0, 0x21
+ ldrb r0, [r0]
+ cmp r0, 0x8
+ beq _080127E0
+ adds r0, r1, 0
+ adds r0, 0x22
+ ldrb r0, [r0]
+ cmp r0, 0x8
+ bne _08012818
+_080127E0:
+ subs r1, r4, 0x1
+ lsls r1, 4
+ movs r0, 0x4
+ orrs r1, r0
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r0, _08012810 @ =gLastUsedAbility
+ ldrb r3, [r0]
+ ldr r0, _08012808 @ =gActiveBank
+ ldrb r2, [r0]
+ lsls r0, r2, 1
+ adds r0, r2
+ ldr r2, _08012814 @ =0x0201606c
+ adds r0, r2
+ str r0, [sp]
+ movs r0, 0
+ movs r2, 0x6
+ bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
+ b _0801289E
+ .align 2, 0
+_08012808: .4byte gActiveBank
+_0801280C: .4byte gBattleMons
+_08012810: .4byte gLastUsedAbility
+_08012814: .4byte 0x0201606c
+_08012818:
+ ldr r0, _08012830 @ =gActiveBank
+ ldrb r1, [r0]
+ mov r8, r0
+ cmp r1, 0x2
+ bne _08012840
+ ldr r0, _08012834 @ =gActionForBanks
+ ldrb r0, [r0]
+ cmp r0, 0x2
+ bne _08012840
+ ldr r3, _08012838 @ =0x02000000
+ ldr r4, _0801283C @ =0x00016068
+ b _08012854
+ .align 2, 0
+_08012830: .4byte gActiveBank
+_08012834: .4byte gActionForBanks
+_08012838: .4byte 0x02000000
+_0801283C: .4byte 0x00016068
+_08012840:
+ mov r2, r8
+ ldrb r0, [r2]
+ cmp r0, 0x3
+ bne _08012884
+ ldr r0, _08012874 @ =gActionForBanks
+ ldrb r0, [r0, 0x1]
+ cmp r0, 0x2
+ bne _08012884
+ ldr r3, _08012878 @ =0x02000000
+ ldr r4, _0801287C @ =0x00016069
+_08012854:
+ adds r0, r3, r4
+ ldrb r2, [r0]
+ mov r0, r8
+ ldrb r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ ldr r1, _08012880 @ =0x0001606c
+ adds r3, r1
+ adds r0, r3
+ str r0, [sp]
+ movs r0, 0
+ movs r1, 0
+_0801286C:
+ movs r3, 0
+ bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
+ b _0801289E
+ .align 2, 0
+_08012874: .4byte gActionForBanks
+_08012878: .4byte 0x02000000
+_0801287C: .4byte 0x00016069
+_08012880: .4byte 0x0001606c
+_08012884:
+ ldr r0, _080128A8 @ =gActiveBank
+ ldrb r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ ldr r1, _080128AC @ =0x0201606c
+ adds r0, r1
+ str r0, [sp]
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0x6
+ movs r3, 0
+ bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
+_0801289E:
+ ldr r0, _080128A8 @ =gActiveBank
+ ldrb r0, [r0]
+ bl MarkBufferBankForExecution
+ b _08012968
+ .align 2, 0
+_080128A8: .4byte gActiveBank
+_080128AC: .4byte 0x0201606c
+_080128B0:
+ bl PlayerPartyAndPokemonStorageFull
+ lsls r0, 24
+ cmp r0, 0
+ beq _08012968
+ ldr r1, _080128EC @ =gUnknown_02024C1C
+ ldr r2, _080128F0 @ =gActiveBank
+ ldrb r0, [r2]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _080128F4 @ =gUnknown_081D8E4A
+ str r1, [r0]
+ ldr r0, _080128F8 @ =gBattleCommunication
+ ldrb r1, [r2]
+ adds r1, r0
+ movs r3, 0
+ movs r0, 0x5
+ strb r0, [r1]
+ ldr r1, _080128FC @ =0x02000000
+ ldrb r0, [r2]
+ ldr r4, _08012900 @ =0x00016060
+ adds r0, r4
+ adds r0, r1
+ strb r3, [r0]
+ ldrb r0, [r2]
+ ldr r2, _08012904 @ =0x00016094
+ adds r0, r2
+ adds r0, r1
+ strb r3, [r0]
+ b _08012F90
+ .align 2, 0
+_080128EC: .4byte gUnknown_02024C1C
+_080128F0: .4byte gActiveBank
+_080128F4: .4byte gUnknown_081D8E4A
+_080128F8: .4byte gBattleCommunication
+_080128FC: .4byte 0x02000000
+_08012900: .4byte 0x00016060
+_08012904: .4byte 0x00016094
+_08012908:
+ ldr r4, _08012924 @ =gActiveBank
+ ldrb r0, [r4]
+ lsls r1, r0, 1
+ adds r1, r0
+ ldr r0, _08012928 @ =0x0201606c
+ adds r1, r0
+ movs r0, 0
+ bl sub_800CBE0
+ ldrb r0, [r4]
+ bl MarkBufferBankForExecution
+ b _08012968
+ .align 2, 0
+_08012924: .4byte gActiveBank
+_08012928: .4byte 0x0201606c
+_0801292C:
+ ldr r4, _08012964 @ =gBattleCommunication
+ mov r3, r8
+ ldrb r1, [r3]
+ adds r1, r4
+ movs r5, 0
+ movs r0, 0x6
+ strb r0, [r1]
+ ldrb r0, [r3]
+ bl GetBankIdentity
+ movs r1, 0x2
+ eors r0, r1
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r4
+ strb r5, [r0]
+ movs r0, 0
+ bl dp01_build_cmdbuf_x32_32_32_32
+ mov r4, r8
+ ldrb r0, [r4]
+ bl MarkBufferBankForExecution
+ b _08012F90
+ .align 2, 0
+_08012964: .4byte gBattleCommunication
+_08012968:
+ ldr r0, _08012994 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0xA
+ ands r0, r1
+ cmp r0, 0x8
+ bne _080129A8
+ ldr r0, _08012998 @ =gBattleBufferB
+ ldr r4, _0801299C @ =gActiveBank
+ ldrb r1, [r4]
+ lsls r1, 9
+ adds r0, 0x1
+ adds r1, r0
+ ldrb r0, [r1]
+ cmp r0, 0x3
+ bne _080129A8
+ ldr r0, _080129A0 @ =gUnknown_081D8E37
+ bl b_call_bc_move_exec
+ ldr r1, _080129A4 @ =gBattleCommunication
+ ldrb r0, [r4]
+ adds r0, r1
+ b _08012BFE
+ .align 2, 0
+_08012994: .4byte gBattleTypeFlags
+_08012998: .4byte gBattleBufferB
+_0801299C: .4byte gActiveBank
+_080129A0: .4byte gUnknown_081D8E37
+_080129A4: .4byte gBattleCommunication
+_080129A8:
+ bl CanRunFromBattle
+ lsls r0, 24
+ cmp r0, 0
+ beq _08012A14
+ ldr r0, _080129F4 @ =gBattleBufferB
+ ldr r3, _080129F8 @ =gActiveBank
+ ldrb r2, [r3]
+ lsls r1, r2, 9
+ adds r0, 0x1
+ adds r1, r0
+ ldrb r0, [r1]
+ cmp r0, 0x3
+ bne _08012A14
+ ldr r1, _080129FC @ =gUnknown_02024C1C
+ lsls r0, r2, 2
+ adds r0, r1
+ ldr r1, _08012A00 @ =gUnknown_081D8E44
+_080129CC:
+ str r1, [r0]
+ ldr r0, _08012A04 @ =gBattleCommunication
+ ldrb r1, [r3]
+ adds r1, r0
+ movs r2, 0
+ movs r0, 0x5
+ strb r0, [r1]
+ ldr r1, _08012A08 @ =0x02000000
+ ldrb r0, [r3]
+ ldr r4, _08012A0C @ =0x00016060
+ adds r0, r4
+ adds r0, r1
+ strb r2, [r0]
+ ldrb r0, [r3]
+ ldr r3, _08012A10 @ =0x00016094
+ adds r0, r3
+ adds r0, r1
+ strb r2, [r0]
+ b _08012F90
+ .align 2, 0
+_080129F4: .4byte gBattleBufferB
+_080129F8: .4byte gActiveBank
+_080129FC: .4byte gUnknown_02024C1C
+_08012A00: .4byte gUnknown_081D8E44
+_08012A04: .4byte gBattleCommunication
+_08012A08: .4byte 0x02000000
+_08012A0C: .4byte 0x00016060
+_08012A10: .4byte 0x00016094
+_08012A14:
+ ldr r2, _08012A20 @ =gBattleCommunication
+ ldr r0, _08012A24 @ =gActiveBank
+ ldrb r1, [r0]
+ adds r1, r2
+ b _08012E3E
+ .align 2, 0
+_08012A20: .4byte gBattleCommunication
+_08012A24: .4byte gActiveBank
+_08012A28:
+ ldr r4, _08012A6C @ =gBattleExecBuffer
+ ldr r1, _08012A70 @ =gBitTable
+ ldr r3, _08012A74 @ =gActiveBank
+ ldrb r5, [r3]
+ lsls r0, r5, 2
+ adds r0, r1
+ ldr r2, [r0]
+ lsls r0, r2, 4
+ movs r1, 0xF0
+ lsls r1, 24
+ orrs r0, r1
+ orrs r0, r2
+ lsls r1, r2, 8
+ orrs r0, r1
+ lsls r2, 12
+ orrs r0, r2
+ ldr r1, [r4]
+ ands r1, r0
+ mov r8, r3
+ cmp r1, 0
+ beq _08012A54
+ b _08012F66
+_08012A54:
+ ldr r1, _08012A78 @ =gActionForBanks
+ adds r0, r5, r1
+ ldrb r0, [r0]
+ adds r3, r1, 0
+ cmp r0, 0x9
+ bls _08012A62
+ b _08012F66
+_08012A62:
+ lsls r0, 2
+ ldr r1, _08012A7C @ =_08012A80
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08012A6C: .4byte gBattleExecBuffer
+_08012A70: .4byte gBitTable
+_08012A74: .4byte gActiveBank
+_08012A78: .4byte gActionForBanks
+_08012A7C: .4byte _08012A80
+ .align 2, 0
+_08012A80:
+ .4byte _08012AA8
+ .4byte _08012BB0
+ .4byte _08012BE8
+ .4byte _08012CE0
+ .4byte _08012D04
+ .4byte _08012D18
+ .4byte _08012D2C
+ .4byte _08012D5C
+ .4byte _08012D70
+ .4byte _08012D94
+_08012AA8:
+ ldr r0, _08012AC8 @ =gBattleBufferB
+ mov r1, r8
+ ldrb r4, [r1]
+ lsls r1, r4, 9
+ adds r2, r0, 0x1
+ adds r1, r2
+ ldrb r1, [r1]
+ adds r6, r0, 0
+ cmp r1, 0x9
+ bgt _08012ACC
+ cmp r1, 0x3
+ blt _08012ACC
+ adds r0, r4, r3
+ strb r1, [r0]
+ b _08012F90
+ .align 2, 0
+_08012AC8: .4byte gBattleBufferB
+_08012ACC:
+ adds r3, r6, 0
+ mov r5, r8
+ ldrb r4, [r5]
+ lsls r1, r4, 9
+ adds r7, r3, 0x2
+ adds r0, r1, r7
+ ldrb r2, [r0]
+ adds r3, 0x3
+ mov r9, r3
+ add r1, r9
+ ldrb r0, [r1]
+ lsls r0, 8
+ orrs r2, r0
+ ldr r0, _08012AF4 @ =0x0000ffff
+ cmp r2, r0
+ bne _08012AFC
+ ldr r0, _08012AF8 @ =gBattleCommunication
+ adds r0, r4, r0
+ b _08012BFE
+ .align 2, 0
+_08012AF4: .4byte 0x0000ffff
+_08012AF8: .4byte gBattleCommunication
+_08012AFC:
+ bl sub_8015894
+ lsls r0, 24
+ cmp r0, 0
+ beq _08012B48
+ ldr r0, _08012B38 @ =gBattleCommunication
+ ldrb r1, [r5]
+ adds r1, r0
+ movs r2, 0
+ movs r0, 0x5
+ strb r0, [r1]
+ ldr r3, _08012B3C @ =0x02000000
+ ldrb r0, [r5]
+ ldr r4, _08012B40 @ =0x00016060
+ adds r0, r4
+ adds r0, r3
+ strb r2, [r0]
+ ldrb r0, [r5]
+ lsls r0, 9
+ adds r1, r6, 0x1
+ adds r0, r1
+ strb r2, [r0]
+ ldrb r0, [r5]
+ ldr r1, _08012B44 @ =0x00016094
+ adds r0, r1
+ adds r0, r3
+ movs r1, 0x1
+ strb r1, [r0]
+ b _08012F90
+ .align 2, 0
+_08012B38: .4byte gBattleCommunication
+_08012B3C: .4byte 0x02000000
+_08012B40: .4byte 0x00016060
+_08012B44: .4byte 0x00016094
+_08012B48:
+ ldr r6, _08012B98 @ =0x02000000
+ mov r2, r8
+ ldrb r0, [r2]
+ ldr r2, _08012B9C @ =0x0001608c
+ adds r1, r0, r2
+ adds r1, r6
+ lsls r0, 9
+ adds r0, r7
+ ldrb r0, [r0]
+ strb r0, [r1]
+ ldr r0, _08012BA0 @ =gChosenMovesByBanks
+ mov r4, r8
+ ldrb r3, [r4]
+ lsls r5, r3, 1
+ adds r5, r0
+ ldr r4, _08012BA4 @ =gBattleMons
+ adds r2, r3, r2
+ adds r2, r6
+ ldrb r0, [r2]
+ lsls r0, 1
+ movs r1, 0x58
+ muls r1, r3
+ adds r0, r1
+ adds r4, 0xC
+ adds r0, r4
+ ldrh r0, [r0]
+ strh r0, [r5]
+ mov r1, r8
+ ldrb r0, [r1]
+ ldr r2, _08012BA8 @ =0x00016010
+ adds r1, r0, r2
+ adds r1, r6
+ lsls r0, 9
+ add r0, r9
+ ldrb r0, [r0]
+ strb r0, [r1]
+ ldr r0, _08012BAC @ =gBattleCommunication
+ mov r3, r8
+ ldrb r1, [r3]
+ b _08012E3C
+ .align 2, 0
+_08012B98: .4byte 0x02000000
+_08012B9C: .4byte 0x0001608c
+_08012BA0: .4byte gChosenMovesByBanks
+_08012BA4: .4byte gBattleMons
+_08012BA8: .4byte 0x00016010
+_08012BAC: .4byte gBattleCommunication
+_08012BB0:
+ ldr r2, _08012BD8 @ =gBattleBufferB
+ ldr r5, _08012BDC @ =gActiveBank
+ ldrb r4, [r5]
+ lsls r1, r4, 9
+ adds r0, r2, 0x1
+ adds r0, r1, r0
+ ldrb r3, [r0]
+ adds r2, 0x2
+ adds r1, r2
+ ldrb r0, [r1]
+ lsls r0, 8
+ orrs r3, r0
+ cmp r3, 0
+ bne _08012BCE
+ b _08012F60
+_08012BCE:
+ ldr r0, _08012BE0 @ =gLastUsedItem
+ strh r3, [r0]
+ ldr r0, _08012BE4 @ =gBattleCommunication
+ ldrb r1, [r5]
+ b _08012E3C
+ .align 2, 0
+_08012BD8: .4byte gBattleBufferB
+_08012BDC: .4byte gActiveBank
+_08012BE0: .4byte gLastUsedItem
+_08012BE4: .4byte gBattleCommunication
+_08012BE8:
+ ldr r4, _08012C04 @ =gBattleBufferB
+ ldr r7, _08012C08 @ =gActiveBank
+ ldrb r2, [r7]
+ lsls r0, r2, 9
+ adds r1, r4, 0x1
+ adds r0, r1
+ ldrb r1, [r0]
+ cmp r1, 0x6
+ bne _08012C10
+ ldr r0, _08012C0C @ =gBattleCommunication
+ adds r0, r2, r0
+_08012BFE:
+ movs r1, 0
+ strb r1, [r0]
+ b _08012F66
+ .align 2, 0
+_08012C04: .4byte gBattleBufferB
+_08012C08: .4byte gActiveBank
+_08012C0C: .4byte gBattleCommunication
+_08012C10:
+ ldr r0, _08012CC4 @ =0x02000000
+ mov r12, r0
+ ldr r3, _08012CC8 @ =0x00016068
+ adds r0, r2, r3
+ add r0, r12
+ strb r1, [r0]
+ ldr r0, _08012CCC @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _08012CBE
+ ldrb r0, [r7]
+ lsls r1, r0, 1
+ adds r1, r0
+ ldr r5, _08012CD0 @ =0x0001606c
+ adds r1, r5
+ add r1, r12
+ ldrb r2, [r1]
+ movs r0, 0xF
+ ands r0, r2
+ strb r0, [r1]
+ ldrb r0, [r7]
+ lsls r2, r0, 1
+ adds r2, r0
+ adds r2, r5
+ add r2, r12
+ lsls r0, 9
+ adds r6, r4, 0x2
+ adds r0, r6
+ ldrb r1, [r0]
+ movs r3, 0xF0
+ adds r0, r3, 0
+ ands r0, r1
+ ldrb r1, [r2]
+ orrs r0, r1
+ strb r0, [r2]
+ ldrb r0, [r7]
+ lsls r1, r0, 1
+ adds r1, r0
+ ldr r2, _08012CD4 @ =0x0001606d
+ adds r1, r2
+ add r1, r12
+ lsls r0, 9
+ adds r4, 0x3
+ mov r8, r4
+ add r0, r8
+ ldrb r0, [r0]
+ strb r0, [r1]
+ ldrb r0, [r7]
+ movs r4, 0x2
+ eors r0, r4
+ lsls r1, r0, 1
+ adds r1, r0
+ adds r1, r5
+ add r1, r12
+ ldrb r2, [r1]
+ adds r0, r3, 0
+ ands r0, r2
+ strb r0, [r1]
+ ldrb r0, [r7]
+ eors r0, r4
+ lsls r1, r0, 1
+ adds r1, r0
+ adds r1, r5
+ add r1, r12
+ ldrb r0, [r7]
+ lsls r0, 9
+ adds r0, r6
+ ldrb r0, [r0]
+ ands r3, r0
+ lsrs r3, 4
+ ldrb r0, [r1]
+ orrs r3, r0
+ strb r3, [r1]
+ ldrb r0, [r7]
+ eors r4, r0
+ lsls r1, r4, 1
+ adds r1, r4
+ ldr r3, _08012CD8 @ =0x0001606e
+ adds r1, r3
+ add r1, r12
+ ldrb r0, [r7]
+ lsls r0, 9
+ add r0, r8
+ ldrb r0, [r0]
+ strb r0, [r1]
+_08012CBE:
+ ldr r0, _08012CDC @ =gBattleCommunication
+ ldrb r1, [r7]
+ b _08012E3C
+ .align 2, 0
+_08012CC4: .4byte 0x02000000
+_08012CC8: .4byte 0x00016068
+_08012CCC: .4byte gBattleTypeFlags
+_08012CD0: .4byte 0x0001606c
+_08012CD4: .4byte 0x0001606d
+_08012CD8: .4byte 0x0001606e
+_08012CDC: .4byte gBattleCommunication
+_08012CE0:
+ ldr r2, _08012CF8 @ =gHitMarker
+ ldr r0, [r2]
+ movs r1, 0x80
+ lsls r1, 8
+ orrs r0, r1
+ str r0, [r2]
+ ldr r2, _08012CFC @ =gBattleCommunication
+ ldr r0, _08012D00 @ =gActiveBank
+ ldrb r1, [r0]
+ adds r1, r2
+ b _08012E3E
+ .align 2, 0
+_08012CF8: .4byte gHitMarker
+_08012CFC: .4byte gBattleCommunication
+_08012D00: .4byte gActiveBank
+_08012D04:
+ ldr r2, _08012D10 @ =gBattleCommunication
+ ldr r0, _08012D14 @ =gActiveBank
+ ldrb r1, [r0]
+ adds r1, r2
+ b _08012E3E
+ .align 2, 0
+_08012D10: .4byte gBattleCommunication
+_08012D14: .4byte gActiveBank
+_08012D18:
+ ldr r2, _08012D24 @ =gBattleCommunication
+ ldr r0, _08012D28 @ =gActiveBank
+ ldrb r1, [r0]
+ adds r1, r2
+ b _08012E3E
+ .align 2, 0
+_08012D24: .4byte gBattleCommunication
+_08012D28: .4byte gActiveBank
+_08012D2C:
+ ldr r2, _08012D50 @ =gBattleBufferB
+ ldr r0, _08012D54 @ =gActiveBank
+ ldrb r4, [r0]
+ lsls r1, r4, 9
+ adds r0, r2, 0x1
+ adds r0, r1, r0
+ ldrb r3, [r0]
+ adds r2, 0x2
+ adds r1, r2
+ ldrb r0, [r1]
+ lsls r0, 8
+ orrs r3, r0
+ cmp r3, 0
+ bne _08012D4A
+ b _08012F60
+_08012D4A:
+ ldr r1, _08012D58 @ =gBattleCommunication
+ adds r1, r4, r1
+ b _08012E3E
+ .align 2, 0
+_08012D50: .4byte gBattleBufferB
+_08012D54: .4byte gActiveBank
+_08012D58: .4byte gBattleCommunication
+_08012D5C:
+ ldr r2, _08012D68 @ =gBattleCommunication
+ ldr r0, _08012D6C @ =gActiveBank
+ ldrb r1, [r0]
+ adds r1, r2
+ b _08012E3E
+ .align 2, 0
+_08012D68: .4byte gBattleCommunication
+_08012D6C: .4byte gActiveBank
+_08012D70:
+ ldr r2, _08012D88 @ =gHitMarker
+ ldr r0, [r2]
+ movs r1, 0x80
+ lsls r1, 8
+ orrs r0, r1
+ str r0, [r2]
+ ldr r2, _08012D8C @ =gBattleCommunication
+ ldr r0, _08012D90 @ =gActiveBank
+ ldrb r1, [r0]
+ adds r1, r2
+ b _08012E3E
+ .align 2, 0
+_08012D88: .4byte gHitMarker
+_08012D8C: .4byte gBattleCommunication
+_08012D90: .4byte gActiveBank
+_08012D94:
+ ldr r2, _08012DA0 @ =gBattleCommunication
+ ldr r0, _08012DA4 @ =gActiveBank
+ ldrb r1, [r0]
+ adds r1, r2
+ b _08012E3E
+ .align 2, 0
+_08012DA0: .4byte gBattleCommunication
+_08012DA4: .4byte gActiveBank
+_08012DA8:
+ ldr r3, _08012E10 @ =gBattleExecBuffer
+ ldr r4, _08012E14 @ =gBitTable
+ ldr r0, _08012E18 @ =gActiveBank
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r4
+ ldr r2, [r0]
+ lsls r1, r2, 4
+ movs r0, 0xF0
+ lsls r0, 24
+ orrs r1, r0
+ orrs r1, r2
+ lsls r0, r2, 8
+ orrs r1, r0
+ lsls r2, 12
+ orrs r1, r2
+ ldr r0, [r3]
+ ands r0, r1
+ cmp r0, 0
+ beq _08012DD2
+ b _08012F66
+_08012DD2:
+ ldr r0, _08012E1C @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x41
+ ands r0, r1
+ cmp r0, 0x1
+ bne _08012E06
+ movs r1, 0x2
+ movs r0, 0x2
+ ands r0, r5
+ cmp r0, 0
+ bne _08012E06
+ adds r0, r5, 0
+ eors r0, r1
+ bl GetBankByPlayerAI
+ ldr r1, _08012E20 @ =0x02000000
+ ldr r2, _08012E24 @ =0x000160a6
+ adds r1, r2
+ ldrb r1, [r1]
+ lsls r0, 24
+ lsrs r0, 22
+ adds r0, r4
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ beq _08012E28
+_08012E06:
+ movs r0, 0
+ movs r1, 0
+ bl EmitLinkStandbyMsg
+ b _08012E30
+ .align 2, 0
+_08012E10: .4byte gBattleExecBuffer
+_08012E14: .4byte gBitTable
+_08012E18: .4byte gActiveBank
+_08012E1C: .4byte gBattleTypeFlags
+_08012E20: .4byte 0x02000000
+_08012E24: .4byte 0x000160a6
+_08012E28:
+ movs r0, 0
+ movs r1, 0x1
+ bl EmitLinkStandbyMsg
+_08012E30:
+ ldr r4, _08012E48 @ =gActiveBank
+_08012E32:
+ ldrb r0, [r4]
+ bl MarkBufferBankForExecution
+ ldr r0, _08012E4C @ =gBattleCommunication
+ ldrb r1, [r4]
+_08012E3C:
+ adds r1, r0
+_08012E3E:
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ b _08012F66
+ .align 2, 0
+_08012E48: .4byte gActiveBank
+_08012E4C: .4byte gBattleCommunication
+_08012E50:
+ ldr r3, _08012E84 @ =gBattleExecBuffer
+ ldr r1, _08012E88 @ =gBitTable
+ ldr r0, _08012E8C @ =gActiveBank
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r2, [r0]
+ lsls r1, r2, 4
+ movs r0, 0xF0
+ lsls r0, 24
+ orrs r1, r0
+ orrs r1, r2
+ lsls r0, r2, 8
+ orrs r1, r0
+ lsls r2, 12
+ orrs r1, r2
+ ldr r0, [r3]
+ ands r0, r1
+ cmp r0, 0
+ bne _08012F66
+ ldr r1, _08012E90 @ =gBattleCommunication
+ ldrb r0, [r1, 0x4]
+ adds r0, 0x1
+ strb r0, [r1, 0x4]
+ b _08012F66
+ .align 2, 0
+_08012E84: .4byte gBattleExecBuffer
+_08012E88: .4byte gBitTable
+_08012E8C: .4byte gActiveBank
+_08012E90: .4byte gBattleCommunication
+_08012E94:
+ ldr r2, _08012EB8 @ =0x02000000
+ ldr r5, _08012EBC @ =gActiveBank
+ ldrb r1, [r5]
+ ldr r3, _08012EC0 @ =0x00016060
+ adds r0, r1, r3
+ adds r0, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08012ECC
+ ldr r0, _08012EC4 @ =gBattleCommunication
+ adds r0, r1, r0
+ ldr r4, _08012EC8 @ =0x00016094
+ adds r1, r4
+ adds r1, r2
+ ldrb r1, [r1]
+ strb r1, [r0]
+ b _08012F66
+ .align 2, 0
+_08012EB8: .4byte 0x02000000
+_08012EBC: .4byte gActiveBank
+_08012EC0: .4byte 0x00016060
+_08012EC4: .4byte gBattleCommunication
+_08012EC8: .4byte 0x00016094
+_08012ECC:
+ ldr r0, _08012F20 @ =gBankAttacker
+ strb r1, [r0]
+ ldr r7, _08012F24 @ =gBattlescriptCurrInstr
+ ldr r6, _08012F28 @ =gUnknown_02024C1C
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r6
+ ldr r4, [r0]
+ str r4, [r7]
+ ldr r3, _08012F2C @ =gBattleExecBuffer
+ ldr r1, _08012F30 @ =gBitTable
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r1
+ ldr r2, [r0]
+ lsls r1, r2, 4
+ movs r0, 0xF0
+ lsls r0, 24
+ orrs r1, r0
+ orrs r1, r2
+ lsls r0, r2, 8
+ orrs r1, r0
+ lsls r2, 12
+ orrs r1, r2
+ ldr r0, [r3]
+ ands r0, r1
+ cmp r0, 0
+ bne _08012F12
+ ldr r0, _08012F34 @ =gBattleScriptingCommandsTable
+ ldrb r1, [r4]
+ lsls r1, 2
+ adds r1, r0
+ ldr r0, [r1]
+ bl _call_via_r0
+_08012F12:
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r6
+ ldr r1, [r7]
+ str r1, [r0]
+ b _08012F66
+ .align 2, 0
+_08012F20: .4byte gBankAttacker
+_08012F24: .4byte gBattlescriptCurrInstr
+_08012F28: .4byte gUnknown_02024C1C
+_08012F2C: .4byte gBattleExecBuffer
+_08012F30: .4byte gBitTable
+_08012F34: .4byte gBattleScriptingCommandsTable
+_08012F38:
+ ldr r3, _08012FA0 @ =gBattleExecBuffer
+ ldr r1, _08012FA4 @ =gBitTable
+ ldr r0, _08012FA8 @ =gActiveBank
+ ldrb r4, [r0]
+ lsls r0, r4, 2
+ adds r0, r1
+ ldr r2, [r0]
+ lsls r0, r2, 4
+ movs r1, 0xF0
+ lsls r1, 24
+ orrs r0, r1
+ orrs r0, r2
+ lsls r1, r2, 8
+ orrs r0, r1
+ lsls r2, 12
+ orrs r0, r2
+ ldr r3, [r3]
+ ands r3, r0
+ cmp r3, 0
+ bne _08012F66
+_08012F60:
+ ldr r0, _08012FAC @ =gBattleCommunication
+ adds r0, r4, r0
+ strb r3, [r0]
+_08012F66:
+ ldr r0, _08012FA8 @ =gActiveBank
+ ldrb r1, [r0]
+ adds r1, 0x1
+ strb r1, [r0]
+ ldr r0, _08012FB0 @ =gNoOfAllBanks
+ lsls r1, 24
+ lsrs r1, 24
+_08012F74:
+ adds r2, r0, 0
+ ldrb r0, [r2]
+ cmp r1, r0
+ bcs _08012F80
+ bl _0801234C
+_08012F80:
+ ldr r0, _08012FAC @ =gBattleCommunication
+ ldrb r0, [r0, 0x4]
+ ldrb r2, [r2]
+ cmp r0, r2
+ bne _08012F90
+ ldr r1, _08012FB4 @ =gBattleMainFunc
+ ldr r0, _08012FB8 @ =sub_80133C8
+ str r0, [r1]
+_08012F90:
+ add sp, 0x1C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08012FA0: .4byte gBattleExecBuffer
+_08012FA4: .4byte gBitTable
+_08012FA8: .4byte gActiveBank
+_08012FAC: .4byte gBattleCommunication
+_08012FB0: .4byte gNoOfAllBanks
+_08012FB4: .4byte gBattleMainFunc
+_08012FB8: .4byte sub_80133C8
+ thumb_func_end sub_8012324
+
+ thumb_func_start sub_8012FBC
+sub_8012FBC: @ 8012FBC
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _08012FE8 @ =gUnknown_02024A76
+ adds r4, r0, r2
+ ldrb r5, [r4]
+ adds r2, r1, r2
+ ldrb r3, [r2]
+ strb r3, [r4]
+ strb r5, [r2]
+ ldr r2, _08012FEC @ =gTurnOrder
+ adds r0, r2
+ ldrb r5, [r0]
+ adds r1, r2
+ ldrb r2, [r1]
+ strb r2, [r0]
+ strb r5, [r1]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08012FE8: .4byte gUnknown_02024A76
+_08012FEC: .4byte gTurnOrder
+ thumb_func_end sub_8012FBC
+
+ thumb_func_start b_first_side
+b_first_side: @ 8012FF0
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ lsls r1, 24
+ lsrs r1, 24
+ mov r10, r1
+ lsls r2, 24
+ lsrs r2, 24
+ str r2, [sp, 0x4]
+ movs r0, 0
+ str r0, [sp, 0x8]
+ str r0, [sp]
+ movs r0, 0x13
+ movs r1, 0
+ movs r2, 0xD
+ movs r3, 0
+ bl AbilityBattleEffects
+ lsls r0, 24
+ cmp r0, 0
+ bne _080130B8
+ ldr r1, [sp, 0x8]
+ str r1, [sp]
+ movs r0, 0x13
+ movs r1, 0
+ movs r2, 0x4D
+ movs r3, 0
+ bl AbilityBattleEffects
+ lsls r0, 24
+ cmp r0, 0
+ bne _080130B8
+ ldr r1, _08013070 @ =gBattleMons
+ movs r0, 0x58
+ mov r2, r9
+ muls r2, r0
+ adds r0, r2, 0
+ adds r0, r1
+ adds r0, 0x20
+ ldrb r3, [r0]
+ cmp r3, 0x21
+ bne _0801305C
+ ldr r0, _08013074 @ =gBattleWeather
+ ldrh r1, [r0]
+ movs r0, 0x7
+ ands r0, r1
+ cmp r0, 0
+ bne _0801306C
+_0801305C:
+ cmp r3, 0x22
+ bne _08013078
+ ldr r0, _08013074 @ =gBattleWeather
+ ldrh r1, [r0]
+ movs r0, 0x60
+ ands r0, r1
+ cmp r0, 0
+ beq _08013078
+_0801306C:
+ movs r3, 0x2
+ b _0801307A
+ .align 2, 0
+_08013070: .4byte gBattleMons
+_08013074: .4byte gBattleWeather
+_08013078:
+ movs r3, 0x1
+_0801307A:
+ movs r0, 0x58
+ mov r1, r10
+ muls r1, r0
+ adds r0, r1, 0
+ ldr r2, _080130B0 @ =gBattleMons
+ adds r0, r2
+ adds r0, 0x20
+ ldrb r2, [r0]
+ cmp r2, 0x21
+ bne _0801309A
+ ldr r0, _080130B4 @ =gBattleWeather
+ ldrh r1, [r0]
+ movs r0, 0x7
+ ands r0, r1
+ cmp r0, 0
+ bne _080130AA
+_0801309A:
+ cmp r2, 0x22
+ bne _080130BA
+ ldr r0, _080130B4 @ =gBattleWeather
+ ldrh r1, [r0]
+ movs r0, 0x60
+ ands r0, r1
+ cmp r0, 0
+ beq _080130BA
+_080130AA:
+ movs r7, 0x2
+ b _080130BC
+ .align 2, 0
+_080130B0: .4byte gBattleMons
+_080130B4: .4byte gBattleWeather
+_080130B8:
+ movs r3, 0x1
+_080130BA:
+ movs r7, 0x1
+_080130BC:
+ ldr r1, _08013100 @ =gBattleMons
+ movs r0, 0x58
+ mov r2, r9
+ muls r2, r0
+ adds r0, r2, 0
+ adds r4, r0, r1
+ ldrh r0, [r4, 0x6]
+ muls r3, r0
+ ldr r2, _08013104 @ =gStatStageRatios
+ movs r1, 0x1B
+ ldrsb r1, [r4, r1]
+ lsls r1, 1
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ muls r0, r3
+ adds r2, 0x1
+ adds r1, r2
+ ldrb r1, [r1]
+ bl __divsi3
+ mov r8, r0
+ ldrh r0, [r4, 0x2E]
+ cmp r0, 0xAF
+ bne _0801310C
+ ldr r1, _08013108 @ =gEnigmaBerries
+ mov r3, r9
+ lsls r0, r3, 3
+ subs r0, r3
+ lsls r0, 2
+ adds r0, r1
+ ldrb r6, [r0, 0x7]
+ ldrb r5, [r0, 0x1A]
+ b _08013120
+ .align 2, 0
+_08013100: .4byte gBattleMons
+_08013104: .4byte gStatStageRatios
+_08013108: .4byte gEnigmaBerries
+_0801310C:
+ ldrh r0, [r4, 0x2E]
+ bl ItemId_GetHoldEffect
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldrh r0, [r4, 0x2E]
+ bl ItemId_GetHoldEffectParam
+ lsls r0, 24
+ lsrs r5, r0, 24
+_08013120:
+ ldr r0, _080131DC @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _08013154
+ ldr r0, _080131E0 @ =0x00000809
+ bl FlagGet
+ lsls r0, 24
+ cmp r0, 0
+ beq _08013154
+ mov r0, r9
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _08013154
+ movs r0, 0x6E
+ mov r1, r8
+ muls r1, r0
+ adds r0, r1, 0
+ movs r1, 0x64
+ bl __udivsi3
+ mov r8, r0
+_08013154:
+ cmp r6, 0x18
+ bne _0801315E
+ mov r2, r8
+ lsrs r2, 1
+ mov r8, r2
+_0801315E:
+ ldr r1, _080131E4 @ =gBattleMons
+ movs r0, 0x58
+ mov r3, r9
+ muls r3, r0
+ adds r0, r3, 0
+ adds r1, 0x4C
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _0801317C
+ mov r0, r8
+ lsrs r0, 2
+ mov r8, r0
+_0801317C:
+ cmp r6, 0x1A
+ bne _08013198
+ ldr r0, _080131E8 @ =gRandomTurnNumber
+ ldrh r4, [r0]
+ lsls r0, r5, 16
+ subs r0, r5
+ movs r1, 0x64
+ bl __divsi3
+ cmp r4, r0
+ bge _08013198
+ movs r1, 0x1
+ negs r1, r1
+ mov r8, r1
+_08013198:
+ ldr r1, _080131E4 @ =gBattleMons
+ movs r0, 0x58
+ mov r2, r10
+ muls r2, r0
+ adds r0, r2, 0
+ adds r4, r0, r1
+ ldrh r0, [r4, 0x6]
+ adds r3, r0, 0
+ muls r3, r7
+ ldr r2, _080131EC @ =gStatStageRatios
+ movs r1, 0x1B
+ ldrsb r1, [r4, r1]
+ lsls r1, 1
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ muls r0, r3
+ adds r2, 0x1
+ adds r1, r2
+ ldrb r1, [r1]
+ bl __divsi3
+ adds r7, r0, 0
+ ldrh r0, [r4, 0x2E]
+ cmp r0, 0xAF
+ bne _080131F4
+ ldr r1, _080131F0 @ =gEnigmaBerries
+ mov r3, r10
+ lsls r0, r3, 3
+ subs r0, r3
+ lsls r0, 2
+ adds r0, r1
+ ldrb r6, [r0, 0x7]
+ ldrb r5, [r0, 0x1A]
+ b _08013208
+ .align 2, 0
+_080131DC: .4byte gBattleTypeFlags
+_080131E0: .4byte 0x00000809
+_080131E4: .4byte gBattleMons
+_080131E8: .4byte gRandomTurnNumber
+_080131EC: .4byte gStatStageRatios
+_080131F0: .4byte gEnigmaBerries
+_080131F4:
+ ldrh r0, [r4, 0x2E]
+ bl ItemId_GetHoldEffect
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldrh r0, [r4, 0x2E]
+ bl ItemId_GetHoldEffectParam
+ lsls r0, 24
+ lsrs r5, r0, 24
+_08013208:
+ ldr r0, _08013280 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _08013238
+ ldr r0, _08013284 @ =0x00000809
+ bl FlagGet
+ lsls r0, 24
+ cmp r0, 0
+ beq _08013238
+ mov r0, r10
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _08013238
+ movs r0, 0x6E
+ muls r0, r7
+ movs r1, 0x64
+ bl __udivsi3
+ adds r7, r0, 0
+_08013238:
+ cmp r6, 0x18
+ bne _0801323E
+ lsrs r7, 1
+_0801323E:
+ ldr r2, _08013288 @ =gBattleMons
+ 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, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _0801325A
+ lsrs r7, 2
+_0801325A:
+ cmp r6, 0x1A
+ bne _08013274
+ ldr r0, _0801328C @ =gRandomTurnNumber
+ ldrh r4, [r0]
+ lsls r0, r5, 16
+ subs r0, r5
+ movs r1, 0x64
+ bl __divsi3
+ cmp r4, r0
+ bge _08013274
+ movs r7, 0x1
+ negs r7, r7
+_08013274:
+ ldr r2, [sp, 0x4]
+ cmp r2, 0
+ beq _08013290
+ movs r3, 0
+ b _08013334
+ .align 2, 0
+_08013280: .4byte gBattleTypeFlags
+_08013284: .4byte 0x00000809
+_08013288: .4byte gBattleMons
+_0801328C: .4byte gRandomTurnNumber
+_08013290:
+ ldr r0, _080132B0 @ =gActionForBanks
+ mov r3, r9
+ adds r1, r3, r0
+ ldrb r1, [r1]
+ adds r2, r0, 0
+ cmp r1, 0
+ bne _080132E4
+ ldr r0, _080132B4 @ =gProtectStructs
+ lsls r1, r3, 4
+ adds r1, r0
+ ldrb r0, [r1]
+ lsls r0, 29
+ cmp r0, 0
+ bge _080132B8
+ movs r3, 0xA5
+ b _080132E6
+ .align 2, 0
+_080132B0: .4byte gActionForBanks
+_080132B4: .4byte gProtectStructs
+_080132B8:
+ ldr r1, _080132D8 @ =0x02000000
+ ldr r0, _080132DC @ =0x0001608c
+ add r0, r9
+ adds r0, r1
+ ldrb r0, [r0]
+ lsls r0, 1
+ movs r1, 0x58
+ mov r3, r9
+ muls r3, r1
+ adds r1, r3, 0
+ adds r0, r1
+ ldr r1, _080132E0 @ =gBattleMons
+ adds r1, 0xC
+ adds r0, r1
+ ldrh r3, [r0]
+ b _080132E6
+ .align 2, 0
+_080132D8: .4byte 0x02000000
+_080132DC: .4byte 0x0001608c
+_080132E0: .4byte gBattleMons
+_080132E4:
+ movs r3, 0
+_080132E6:
+ mov r1, r10
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08013334
+ ldr r0, _08013304 @ =gProtectStructs
+ lsls r1, 4
+ adds r1, r0
+ ldrb r0, [r1]
+ lsls r0, 29
+ cmp r0, 0
+ bge _08013308
+ movs r2, 0xA5
+ b _08013336
+ .align 2, 0
+_08013304: .4byte gProtectStructs
+_08013308:
+ ldr r1, _08013328 @ =0x02000000
+ ldr r0, _0801332C @ =0x0001608c
+ add r0, r10
+ adds r0, r1
+ ldrb r0, [r0]
+ lsls r0, 1
+ movs r1, 0x58
+ mov r2, r10
+ muls r2, r1
+ adds r1, r2, 0
+ adds r0, r1
+ ldr r1, _08013330 @ =gBattleMons
+ adds r1, 0xC
+ adds r0, r1
+ ldrh r2, [r0]
+ b _08013336
+ .align 2, 0
+_08013328: .4byte 0x02000000
+_0801332C: .4byte 0x0001608c
+_08013330: .4byte gBattleMons
+_08013334:
+ movs r2, 0
+_08013336:
+ ldr r4, _08013380 @ =gBattleMoves
+ lsls r0, r3, 1
+ adds r0, r3
+ lsls r0, 2
+ adds r0, r4
+ movs r1, 0x7
+ ldrsb r1, [r0, r1]
+ lsls r3, r2, 1
+ cmp r1, 0
+ bne _0801335A
+ adds r0, r3, r2
+ lsls r0, 2
+ adds r0, r4
+ ldrb r0, [r0, 0x7]
+ lsls r0, 24
+ asrs r0, 24
+ cmp r0, 0
+ beq _08013398
+_0801335A:
+ adds r0, r3, r2
+ lsls r0, 2
+ adds r0, r4
+ ldrb r0, [r0, 0x7]
+ lsls r0, 24
+ asrs r0, 24
+ cmp r1, r0
+ bne _0801338E
+ cmp r8, r7
+ bne _08013384
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ cmp r1, 0
+ beq _08013384
+ movs r3, 0x2
+ b _080133B4
+ .align 2, 0
+_08013380: .4byte gBattleMoves
+_08013384:
+ cmp r8, r7
+ bcs _080133B6
+ movs r0, 0x1
+ str r0, [sp, 0x8]
+ b _080133B6
+_0801338E:
+ cmp r1, r0
+ bge _080133B6
+ movs r1, 0x1
+ str r1, [sp, 0x8]
+ b _080133B6
+_08013398:
+ cmp r8, r7
+ bne _080133AE
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ cmp r1, 0
+ beq _080133AE
+ movs r2, 0x2
+ str r2, [sp, 0x8]
+ b _080133B6
+_080133AE:
+ cmp r8, r7
+ bcs _080133B6
+ movs r3, 0x1
+_080133B4:
+ str r3, [sp, 0x8]
+_080133B6:
+ ldr r0, [sp, 0x8]
+ add sp, 0xC
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end b_first_side
+
+ thumb_func_start sub_80133C8
+sub_80133C8: @ 80133C8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ movs r3, 0
+ ldr r0, _0801341C @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _08013434
+ ldr r0, _08013420 @ =gActiveBank
+ strb r3, [r0]
+ ldr r4, _08013424 @ =gNoOfAllBanks
+ mov r8, r0
+ ldrb r0, [r4]
+ cmp r3, r0
+ bcc _080133F0
+ b _08013622
+_080133F0:
+ ldr r7, _08013428 @ =gUnknown_02024A76
+ ldr r6, _0801342C @ =gActionForBanks
+ mov r2, r8
+ ldr r5, _08013430 @ =gTurnOrder
+_080133F8:
+ adds r1, r3, r7
+ ldrb r0, [r2]
+ adds r0, r6
+ ldrb r0, [r0]
+ strb r0, [r1]
+ adds r1, r3, r5
+ ldrb r0, [r2]
+ strb r0, [r1]
+ adds r3, 0x1
+ ldrb r0, [r2]
+ adds r0, 0x1
+ strb r0, [r2]
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r4]
+ cmp r0, r1
+ bcc _080133F8
+ b _08013622
+ .align 2, 0
+_0801341C: .4byte gBattleTypeFlags
+_08013420: .4byte gActiveBank
+_08013424: .4byte gNoOfAllBanks
+_08013428: .4byte gUnknown_02024A76
+_0801342C: .4byte gActionForBanks
+_08013430: .4byte gTurnOrder
+_08013434:
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _08013484
+ ldr r0, _08013478 @ =gActiveBank
+ strb r3, [r0]
+ ldr r1, _0801347C @ =gNoOfAllBanks
+ mov r8, r0
+ adds r2, r1, 0
+ ldrb r2, [r2]
+ cmp r3, r2
+ bcs _08013494
+ ldr r0, _08013480 @ =gActionForBanks
+ ldrb r1, [r0]
+ adds r4, r0, 0
+ cmp r1, 0x3
+ beq _08013492
+_08013456:
+ mov r7, r8
+ ldrb r0, [r7]
+ adds r0, 0x1
+ strb r0, [r7]
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0801347C @ =gNoOfAllBanks
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcs _08013494
+ ldrb r0, [r7]
+ adds r0, r4
+ ldrb r0, [r0]
+ cmp r0, 0x3
+ bne _08013456
+ b _08013492
+ .align 2, 0
+_08013478: .4byte gActiveBank
+_0801347C: .4byte gNoOfAllBanks
+_08013480: .4byte gActionForBanks
+_08013484:
+ ldr r0, _080134FC @ =gActionForBanks
+ ldrb r0, [r0]
+ ldr r2, _08013500 @ =gActiveBank
+ mov r8, r2
+ cmp r0, 0x3
+ bne _08013494
+ strb r3, [r2]
+_08013492:
+ movs r3, 0x5
+_08013494:
+ cmp r3, 0x5
+ bne _08013520
+ ldr r6, _08013504 @ =gUnknown_02024A76
+ ldr r1, _080134FC @ =gActionForBanks
+ mov r3, r8
+ ldrb r0, [r3]
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r6]
+ ldr r2, _08013508 @ =gTurnOrder
+ ldrb r0, [r3]
+ strb r0, [r2]
+ movs r3, 0x1
+ movs r5, 0
+ adds r4, r1, 0
+ ldr r7, _0801350C @ =gBattleMainFunc
+ mov r9, r7
+ ldr r0, _08013510 @ =bc_80154A0
+ mov r12, r0
+ ldr r1, _08013514 @ =0x02000000
+ mov r10, r1
+ ldr r7, _08013518 @ =gNoOfAllBanks
+ ldrb r7, [r7]
+ cmp r5, r7
+ bge _080134EC
+ adds r7, r6, 0
+ adds r6, r4, 0
+ adds r4, r2, 0
+ ldr r2, _08013518 @ =gNoOfAllBanks
+_080134CE:
+ mov r0, r8
+ ldrb r0, [r0]
+ cmp r5, r0
+ beq _080134E4
+ adds r1, r3, r7
+ adds r0, r5, r6
+ ldrb r0, [r0]
+ strb r0, [r1]
+ adds r0, r3, r4
+ strb r5, [r0]
+ adds r3, 0x1
+_080134E4:
+ adds r5, 0x1
+ ldrb r1, [r2]
+ cmp r5, r1
+ blt _080134CE
+_080134EC:
+ mov r2, r12
+ mov r3, r9
+ str r2, [r3]
+ ldr r1, _0801351C @ =0x0001601d
+ add r1, r10
+ movs r0, 0
+ strb r0, [r1]
+ b _08013632
+ .align 2, 0
+_080134FC: .4byte gActionForBanks
+_08013500: .4byte gActiveBank
+_08013504: .4byte gUnknown_02024A76
+_08013508: .4byte gTurnOrder
+_0801350C: .4byte gBattleMainFunc
+_08013510: .4byte bc_80154A0
+_08013514: .4byte 0x02000000
+_08013518: .4byte gNoOfAllBanks
+_0801351C: .4byte 0x0001601d
+_08013520:
+ movs r0, 0
+ mov r7, r8
+ strb r0, [r7]
+ ldr r1, _080135B0 @ =gNoOfAllBanks
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _08013566
+ ldr r6, _080135B4 @ =gActionForBanks
+ mov r2, r8
+ ldr r5, _080135B8 @ =gUnknown_02024A76
+ ldr r4, _080135BC @ =gTurnOrder
+_08013536:
+ ldrb r0, [r2]
+ adds r0, r6
+ ldrb r1, [r0]
+ subs r0, r1, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _08013554
+ adds r0, r3, r5
+ strb r1, [r0]
+ adds r1, r3, r4
+ mov r7, r8
+ ldrb r0, [r7]
+ strb r0, [r1]
+ adds r3, 0x1
+_08013554:
+ ldrb r0, [r2]
+ adds r0, 0x1
+ strb r0, [r2]
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080135B0 @ =gNoOfAllBanks
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _08013536
+_08013566:
+ movs r0, 0
+ mov r2, r8
+ strb r0, [r2]
+ ldr r7, _080135B0 @ =gNoOfAllBanks
+ ldrb r0, [r7]
+ cmp r0, 0
+ beq _080135AA
+ ldr r6, _080135B4 @ =gActionForBanks
+ ldr r5, _080135B8 @ =gUnknown_02024A76
+ ldr r4, _080135BC @ =gTurnOrder
+_0801357A:
+ ldrb r0, [r2]
+ adds r0, r6
+ ldrb r1, [r0]
+ subs r0, r1, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bls _08013598
+ adds r0, r3, r5
+ strb r1, [r0]
+ adds r1, r3, r4
+ mov r7, r8
+ ldrb r0, [r7]
+ strb r0, [r1]
+ adds r3, 0x1
+_08013598:
+ ldrb r0, [r2]
+ adds r0, 0x1
+ strb r0, [r2]
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080135B0 @ =gNoOfAllBanks
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _0801357A
+_080135AA:
+ movs r5, 0
+ b _08013618
+ .align 2, 0
+_080135B0: .4byte gNoOfAllBanks
+_080135B4: .4byte gActionForBanks
+_080135B8: .4byte gUnknown_02024A76
+_080135BC: .4byte gTurnOrder
+_080135C0:
+ adds r4, r5, 0x1
+ adds r7, r4, 0
+ ldrb r1, [r1]
+ cmp r7, r1
+ bge _08013616
+ ldr r6, _08013640 @ =gUnknown_02024A76
+ lsls r2, r5, 24
+ mov r8, r2
+_080135D0:
+ ldr r0, _08013644 @ =gTurnOrder
+ adds r1, r5, r0
+ ldrb r3, [r1]
+ adds r0, r4, r0
+ ldrb r1, [r0]
+ adds r0, r5, r6
+ ldrb r2, [r0]
+ cmp r2, 0x1
+ beq _0801360C
+ adds r0, r4, r6
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _0801360C
+ cmp r2, 0x2
+ beq _0801360C
+ cmp r0, 0x2
+ beq _0801360C
+ adds r0, r3, 0
+ movs r2, 0
+ bl b_first_side
+ lsls r0, 24
+ cmp r0, 0
+ beq _0801360C
+ lsls r1, r4, 24
+ lsrs r1, 24
+ mov r3, r8
+ lsrs r0, r3, 24
+ bl sub_8012FBC
+_0801360C:
+ adds r4, 0x1
+ ldr r0, _08013648 @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ blt _080135D0
+_08013616:
+ adds r5, r7, 0
+_08013618:
+ ldr r1, _08013648 @ =gNoOfAllBanks
+ ldrb r0, [r1]
+ subs r0, 0x1
+ cmp r5, r0
+ blt _080135C0
+_08013622:
+ ldr r1, _0801364C @ =gBattleMainFunc
+ ldr r0, _08013650 @ =bc_80154A0
+ str r0, [r1]
+ ldr r0, _08013654 @ =0x02000000
+ ldr r7, _08013658 @ =0x0001601d
+ adds r0, r7
+ movs r1, 0
+ strb r1, [r0]
+_08013632:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08013640: .4byte gUnknown_02024A76
+_08013644: .4byte gTurnOrder
+_08013648: .4byte gNoOfAllBanks
+_0801364C: .4byte gBattleMainFunc
+_08013650: .4byte bc_80154A0
+_08013654: .4byte 0x02000000
+_08013658: .4byte 0x0001601d
+ thumb_func_end sub_80133C8
+
+ thumb_func_start TurnValuesCleanUp
+TurnValuesCleanUp: @ 801365C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ ldr r1, _080136B4 @ =gActiveBank
+ movs r0, 0
+ strb r0, [r1]
+ ldr r0, _080136B8 @ =gNoOfAllBanks
+ ldrb r2, [r0]
+ adds r5, r1, 0
+ cmp r2, 0
+ beq _08013754
+ ldr r7, _080136BC @ =gProtectStructs
+ adds r6, r5, 0
+ ldr r0, _080136C0 @ =gUnknown_02024AD0
+ mov r12, r0
+ ldr r1, _080136C4 @ =gDisableStructs
+ mov r8, r1
+ mov r10, r8
+_0801368A:
+ mov r2, r9
+ cmp r2, 0
+ beq _080136C8
+ ldrb r1, [r6]
+ lsls r1, 4
+ adds r1, r7
+ ldrb r2, [r1]
+ movs r0, 0x2
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1]
+ ldrb r1, [r6]
+ lsls r1, 4
+ adds r1, r7
+ ldrb r2, [r1]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1]
+ b _08013724
+ .align 2, 0
+_080136B4: .4byte gActiveBank
+_080136B8: .4byte gNoOfAllBanks
+_080136BC: .4byte gProtectStructs
+_080136C0: .4byte gUnknown_02024AD0
+_080136C4: .4byte gDisableStructs
+_080136C8:
+ ldrb r0, [r6]
+ lsls r0, 4
+ adds r2, r0, r7
+ movs r1, 0
+ mov r4, r10
+ movs r3, 0
+_080136D4:
+ adds r0, r2, r1
+ strb r3, [r0]
+ adds r1, 0x1
+ cmp r1, 0xF
+ bls _080136D4
+ ldrb r1, [r5]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ adds r1, r0, r4
+ ldrb r0, [r1, 0x16]
+ cmp r0, 0
+ beq _080136F2
+ subs r0, 0x1
+ strb r0, [r1, 0x16]
+_080136F2:
+ ldrb r1, [r5]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ adds r1, r0, r4
+ ldrb r0, [r1, 0x19]
+ cmp r0, 0
+ beq _08013724
+ subs r0, 0x1
+ strb r0, [r1, 0x19]
+ ldrb r2, [r5]
+ lsls r0, r2, 3
+ subs r0, r2
+ lsls r0, 2
+ adds r0, r4
+ ldrb r0, [r0, 0x19]
+ cmp r0, 0
+ bne _08013724
+ movs r0, 0x58
+ muls r2, r0
+ add r2, r12
+ ldr r0, [r2]
+ ldr r1, _0801376C @ =0xffbfffff
+ ands r0, r1
+ str r0, [r2]
+_08013724:
+ ldrb r2, [r5]
+ lsls r0, r2, 3
+ subs r0, r2
+ lsls r0, 2
+ add r0, r8
+ ldrb r0, [r0, 0xA]
+ cmp r0, 0
+ bne _08013742
+ movs r0, 0x58
+ muls r2, r0
+ add r2, r12
+ ldr r0, [r2]
+ ldr r1, _08013770 @ =0xfeffffff
+ ands r0, r1
+ str r0, [r2]
+_08013742:
+ ldrb r0, [r5]
+ adds r0, 0x1
+ strb r0, [r5]
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _08013774 @ =gNoOfAllBanks
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _0801368A
+_08013754:
+ movs r0, 0
+ ldr r2, _08013778 @ =gSideTimer
+ strb r0, [r2, 0x8]
+ strb r0, [r2, 0x14]
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0801376C: .4byte 0xffbfffff
+_08013770: .4byte 0xfeffffff
+_08013774: .4byte gNoOfAllBanks
+_08013778: .4byte gSideTimer
+ thumb_func_end TurnValuesCleanUp
+
+ thumb_func_start SpecialStatusesClear
+SpecialStatusesClear: @ 801377C
+ push {r4-r6,lr}
+ ldr r2, _080137C0 @ =gActiveBank
+ movs r0, 0
+ strb r0, [r2]
+ ldr r0, _080137C4 @ =gNoOfAllBanks
+ ldrb r1, [r0]
+ adds r6, r0, 0
+ cmp r1, 0
+ beq _080137BA
+ adds r3, r2, 0
+ movs r4, 0
+ ldr r5, _080137C8 @ =gSpecialStatuses
+_08013794:
+ ldrb r1, [r3]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 2
+ adds r2, r0, r5
+ movs r1, 0
+_080137A0:
+ adds r0, r2, r1
+ strb r4, [r0]
+ adds r1, 0x1
+ cmp r1, 0x13
+ bls _080137A0
+ ldrb r0, [r3]
+ adds r0, 0x1
+ strb r0, [r3]
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r6]
+ cmp r0, r1
+ bcc _08013794
+_080137BA:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080137C0: .4byte gActiveBank
+_080137C4: .4byte gNoOfAllBanks
+_080137C8: .4byte gSpecialStatuses
+ thumb_func_end SpecialStatusesClear
+
+ thumb_func_start bc_80154A0
+bc_80154A0: @ 80137CC
+ push {r4-r7,lr}
+ ldr r0, _08013850 @ =gHitMarker
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ cmp r0, 0
+ bne _08013884
+ ldr r0, _08013854 @ =0x02000000
+ ldr r1, _08013858 @ =0x0001601d
+ adds r2, r0, r1
+ ldr r0, _0801385C @ =gNoOfAllBanks
+ ldrb r1, [r2]
+ adds r7, r0, 0
+ ldrb r0, [r7]
+ cmp r1, r0
+ bcs _08013884
+ ldr r6, _08013860 @ =gActiveBank
+ ldr r5, _08013864 @ =gBankAttacker
+ adds r4, r2, 0
+ movs r1, 0x84
+ lsls r1, 1
+ mov r12, r1
+_080137FA:
+ ldrb r0, [r4]
+ strb r0, [r5]
+ strb r0, [r6]
+ adds r0, 0x1
+ strb r0, [r4]
+ ldr r1, _08013868 @ =gChosenMovesByBanks
+ ldrb r3, [r6]
+ lsls r0, r3, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ cmp r0, r12
+ bne _0801387C
+ ldr r1, _0801386C @ =gBattleMons
+ movs r0, 0x58
+ muls r0, r3
+ adds r1, 0x4C
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x7
+ ands r0, r1
+ cmp r0, 0
+ bne _0801387C
+ ldr r2, _08013870 @ =gDisableStructs
+ ldrb r1, [r5]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x18]
+ lsls r0, 31
+ cmp r0, 0
+ bne _0801387C
+ ldr r0, _08013874 @ =gProtectStructs
+ lsls r1, r3, 4
+ adds r1, r0
+ ldrb r0, [r1]
+ lsls r0, 29
+ cmp r0, 0
+ blt _0801387C
+ ldr r0, _08013878 @ =gUnknown_081D94DA
+ bl b_call_bc_move_exec
+ b _080138BE
+ .align 2, 0
+_08013850: .4byte gHitMarker
+_08013854: .4byte 0x02000000
+_08013858: .4byte 0x0001601d
+_0801385C: .4byte gNoOfAllBanks
+_08013860: .4byte gActiveBank
+_08013864: .4byte gBankAttacker
+_08013868: .4byte gChosenMovesByBanks
+_0801386C: .4byte gBattleMons
+_08013870: .4byte gDisableStructs
+_08013874: .4byte gProtectStructs
+_08013878: .4byte gUnknown_081D94DA
+_0801387C:
+ ldrb r0, [r4]
+ ldrb r2, [r7]
+ cmp r0, r2
+ bcc _080137FA
+_08013884:
+ bl b_clear_atk_up_if_hit_flag_unless_enraged
+ ldr r1, _080138C4 @ =gCurrentMoveTurn
+ movs r0, 0
+ strb r0, [r1]
+ ldr r1, _080138C8 @ =gFightStateTracker
+ ldr r0, _080138CC @ =gUnknown_02024A76
+ movs r2, 0
+ ldrb r0, [r0]
+ strb r0, [r1]
+ ldr r0, _080138D0 @ =gDynamicBasePower
+ movs r3, 0
+ strh r2, [r0]
+ ldr r1, _080138D4 @ =0x02000000
+ ldr r2, _080138D8 @ =0x0001601c
+ adds r0, r1, r2
+ strb r3, [r0]
+ ldr r2, _080138DC @ =gBattleMainFunc
+ ldr r0, _080138E0 @ =sub_80138F0
+ str r0, [r2]
+ ldr r0, _080138E4 @ =gBattleCommunication
+ strb r3, [r0, 0x3]
+ strb r3, [r0, 0x4]
+ ldr r2, _080138E8 @ =0x00016112
+ adds r0, r1, r2
+ strb r3, [r0]
+ ldr r0, _080138EC @ =0x00017130
+ adds r1, r0
+ strb r3, [r1]
+_080138BE:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080138C4: .4byte gCurrentMoveTurn
+_080138C8: .4byte gFightStateTracker
+_080138CC: .4byte gUnknown_02024A76
+_080138D0: .4byte gDynamicBasePower
+_080138D4: .4byte 0x02000000
+_080138D8: .4byte 0x0001601c
+_080138DC: .4byte gBattleMainFunc
+_080138E0: .4byte sub_80138F0
+_080138E4: .4byte gBattleCommunication
+_080138E8: .4byte 0x00016112
+_080138EC: .4byte 0x00017130
+ thumb_func_end bc_80154A0
+
+ thumb_func_start sub_80138F0
+sub_80138F0: @ 80138F0
+ push {r4-r6,lr}
+ ldr r6, _08013944 @ =gBattleOutcome
+ ldrb r0, [r6]
+ ldr r2, _08013948 @ =gFightStateTracker
+ cmp r0, 0
+ beq _08013900
+ movs r0, 0xC
+ strb r0, [r2]
+_08013900:
+ ldr r1, _0801394C @ =0x02000000
+ ldr r4, _08013950 @ =gCurrentMoveTurn
+ ldrb r0, [r4]
+ ldr r3, _08013954 @ =0x00016057
+ adds r5, r1, r3
+ strb r0, [r5]
+ ldr r1, _08013958 @ =gUnknown_081FA640
+ ldrb r0, [r2]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ ldr r0, _0801395C @ =gNoOfAllBanks
+ ldrb r1, [r4]
+ ldrb r0, [r0]
+ cmp r1, r0
+ bcc _08013970
+ ldr r2, _08013960 @ =gHitMarker
+ ldr r0, [r2]
+ ldr r1, _08013964 @ =0xffefffff
+ ands r0, r1
+ str r0, [r2]
+ ldr r3, _08013968 @ =gBattleMainFunc
+ ldr r2, _0801396C @ =gUnknown_081FA678
+ ldrb r1, [r6]
+ movs r0, 0x7F
+ ands r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldr r0, [r0]
+ str r0, [r3]
+ b _08013984
+ .align 2, 0
+_08013944: .4byte gBattleOutcome
+_08013948: .4byte gFightStateTracker
+_0801394C: .4byte 0x02000000
+_08013950: .4byte gCurrentMoveTurn
+_08013954: .4byte 0x00016057
+_08013958: .4byte gUnknown_081FA640
+_0801395C: .4byte gNoOfAllBanks
+_08013960: .4byte gHitMarker
+_08013964: .4byte 0xffefffff
+_08013968: .4byte gBattleMainFunc
+_0801396C: .4byte gUnknown_081FA678
+_08013970:
+ ldrb r0, [r5]
+ cmp r0, r1
+ beq _08013984
+ ldr r2, _0801398C @ =gHitMarker
+ ldr r0, [r2]
+ ldr r1, _08013990 @ =0xfffffdff
+ ands r0, r1
+ ldr r1, _08013994 @ =0xfff7ffff
+ ands r0, r1
+ str r0, [r2]
+_08013984:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0801398C: .4byte gHitMarker
+_08013990: .4byte 0xfffffdff
+_08013994: .4byte 0xfff7ffff
+ thumb_func_end sub_80138F0
+
+ thumb_func_start sub_8013998
+sub_8013998: @ 8013998
+ push {r4,lr}
+ ldr r1, _080139D0 @ =gFightStateTracker
+ movs r0, 0
+ strb r0, [r1]
+ ldr r0, _080139D4 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _080139EC
+ ldr r1, _080139D8 @ =gBattleTextBuff1
+ ldr r4, _080139DC @ =gBattleOutcome
+ ldrb r0, [r4]
+ strb r0, [r1]
+ movs r0, 0
+ bl GetBankByPlayerAI
+ ldr r1, _080139E0 @ =gBankAttacker
+ strb r0, [r1]
+ ldr r1, _080139E4 @ =gBattlescriptCurrInstr
+ ldr r0, _080139E8 @ =gUnknown_081D8E02
+ str r0, [r1]
+ ldrb r1, [r4]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r4]
+ b _08013B48
+ .align 2, 0
+_080139D0: .4byte gFightStateTracker
+_080139D4: .4byte gBattleTypeFlags
+_080139D8: .4byte gBattleTextBuff1
+_080139DC: .4byte gBattleOutcome
+_080139E0: .4byte gBankAttacker
+_080139E4: .4byte gBattlescriptCurrInstr
+_080139E8: .4byte gUnknown_081D8E02
+_080139EC:
+ movs r0, 0x90
+ lsls r0, 4
+ ands r0, r1
+ cmp r0, 0
+ beq _08013A04
+ ldr r1, _080139FC @ =gBattlescriptCurrInstr
+ ldr r0, _08013A00 @ =gUnknown_081D8E0D
+ b _08013B46
+ .align 2, 0
+_080139FC: .4byte gBattlescriptCurrInstr
+_08013A00: .4byte gUnknown_081D8E0D
+_08013A04:
+ movs r0, 0xA
+ ands r0, r1
+ cmp r0, 0x8
+ beq _08013A0E
+ b _08013B42
+_08013A0E:
+ bl sub_80325B8
+ ldr r1, _08013A3C @ =gBattlescriptCurrInstr
+ ldr r0, _08013A40 @ =gUnknown_081D8DBE
+ str r0, [r1]
+ ldr r2, _08013A44 @ =gTrainers
+ ldr r0, _08013A48 @ =gTrainerBattleOpponent
+ ldrh r1, [r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ adds r0, r2
+ ldrb r0, [r0, 0x1]
+ subs r0, 0x2
+ cmp r0, 0x31
+ bls _08013A30
+ b _08013B38
+_08013A30:
+ lsls r0, 2
+ ldr r1, _08013A4C @ =_08013A50
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08013A3C: .4byte gBattlescriptCurrInstr
+_08013A40: .4byte gUnknown_081D8DBE
+_08013A44: .4byte gTrainers
+_08013A48: .4byte gTrainerBattleOpponent
+_08013A4C: .4byte _08013A50
+ .align 2, 0
+_08013A50:
+ .4byte _08013B24
+ .4byte _08013B24
+ .4byte _08013B24
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B18
+ .4byte _08013B2E
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B18
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B38
+ .4byte _08013B24
+ .4byte _08013B24
+ .4byte _08013B24
+_08013B18:
+ ldr r0, _08013B20 @ =0x00000163
+ bl PlayBGM
+ b _08013B48
+ .align 2, 0
+_08013B20: .4byte 0x00000163
+_08013B24:
+ movs r0, 0xD4
+ lsls r0, 1
+ bl PlayBGM
+ b _08013B48
+_08013B2E:
+ movs r0, 0xB1
+ lsls r0, 1
+ bl PlayBGM
+ b _08013B48
+_08013B38:
+ movs r0, 0xCE
+ lsls r0, 1
+ bl PlayBGM
+ b _08013B48
+_08013B42:
+ ldr r1, _08013B54 @ =gBattlescriptCurrInstr
+ ldr r0, _08013B58 @ =gUnknown_081D8DCE
+_08013B46:
+ str r0, [r1]
+_08013B48:
+ ldr r1, _08013B5C @ =gBattleMainFunc
+ ldr r0, _08013B60 @ =sub_8013C9C
+ str r0, [r1]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08013B54: .4byte gBattlescriptCurrInstr
+_08013B58: .4byte gUnknown_081D8DCE
+_08013B5C: .4byte gBattleMainFunc
+_08013B60: .4byte sub_8013C9C
+ thumb_func_end sub_8013998
+
+ thumb_func_start sub_8013B64
+sub_8013B64: @ 8013B64
+ push {r4,lr}
+ ldr r1, _08013B9C @ =gFightStateTracker
+ movs r0, 0
+ strb r0, [r1]
+ ldr r0, _08013BA0 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _08013BB8
+ ldr r1, _08013BA4 @ =gBattleTextBuff1
+ ldr r4, _08013BA8 @ =gBattleOutcome
+ ldrb r0, [r4]
+ strb r0, [r1]
+ movs r0, 0
+ bl GetBankByPlayerAI
+ ldr r1, _08013BAC @ =gBankAttacker
+ strb r0, [r1]
+ ldr r1, _08013BB0 @ =gBattlescriptCurrInstr
+ ldr r0, _08013BB4 @ =gUnknown_081D8E02
+ str r0, [r1]
+ ldrb r1, [r4]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r4]
+ b _08013BBE
+ .align 2, 0
+_08013B9C: .4byte gFightStateTracker
+_08013BA0: .4byte gBattleTypeFlags
+_08013BA4: .4byte gBattleTextBuff1
+_08013BA8: .4byte gBattleOutcome
+_08013BAC: .4byte gBankAttacker
+_08013BB0: .4byte gBattlescriptCurrInstr
+_08013BB4: .4byte gUnknown_081D8E02
+_08013BB8:
+ ldr r1, _08013BCC @ =gBattlescriptCurrInstr
+ ldr r0, _08013BD0 @ =gUnknown_081D8DD1
+ str r0, [r1]
+_08013BBE:
+ ldr r1, _08013BD4 @ =gBattleMainFunc
+ ldr r0, _08013BD8 @ =sub_8013C9C
+ str r0, [r1]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08013BCC: .4byte gBattlescriptCurrInstr
+_08013BD0: .4byte gUnknown_081D8DD1
+_08013BD4: .4byte gBattleMainFunc
+_08013BD8: .4byte sub_8013C9C
+ thumb_func_end sub_8013B64
+
+ thumb_func_start sub_8013BDC
+sub_8013BDC: @ 8013BDC
+ push {lr}
+ ldr r1, _08013C04 @ =gFightStateTracker
+ movs r0, 0
+ strb r0, [r1]
+ ldr r1, _08013C08 @ =gProtectStructs
+ ldr r0, _08013C0C @ =gBankAttacker
+ ldrb r0, [r0]
+ lsls r0, 4
+ adds r0, r1
+ ldrb r0, [r0, 0x1]
+ lsls r0, 27
+ lsrs r0, 30
+ cmp r0, 0x1
+ beq _08013C18
+ cmp r0, 0x2
+ beq _08013C28
+ ldr r1, _08013C10 @ =gBattlescriptCurrInstr
+ ldr r0, _08013C14 @ =gUnknown_081D8E29
+ b _08013C2C
+ .align 2, 0
+_08013C04: .4byte gFightStateTracker
+_08013C08: .4byte gProtectStructs
+_08013C0C: .4byte gBankAttacker
+_08013C10: .4byte gBattlescriptCurrInstr
+_08013C14: .4byte gUnknown_081D8E29
+_08013C18:
+ ldr r1, _08013C20 @ =gBattlescriptCurrInstr
+ ldr r0, _08013C24 @ =gUnknown_081D8E14
+ b _08013C2C
+ .align 2, 0
+_08013C20: .4byte gBattlescriptCurrInstr
+_08013C24: .4byte gUnknown_081D8E14
+_08013C28:
+ ldr r1, _08013C38 @ =gBattlescriptCurrInstr
+ ldr r0, _08013C3C @ =gUnknown_081D8E22
+_08013C2C:
+ str r0, [r1]
+ ldr r1, _08013C40 @ =gBattleMainFunc
+ ldr r0, _08013C44 @ =sub_8013C9C
+ str r0, [r1]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08013C38: .4byte gBattlescriptCurrInstr
+_08013C3C: .4byte gUnknown_081D8E22
+_08013C40: .4byte gBattleMainFunc
+_08013C44: .4byte sub_8013C9C
+ thumb_func_end sub_8013BDC
+
+ thumb_func_start sub_8013C48
+sub_8013C48: @ 8013C48
+ ldr r1, _08013C7C @ =gFightStateTracker
+ movs r0, 0
+ strb r0, [r1]
+ ldr r1, _08013C80 @ =gBattleTextBuff1
+ movs r0, 0xFD
+ strb r0, [r1]
+ movs r0, 0x7
+ strb r0, [r1, 0x1]
+ ldr r2, _08013C84 @ =gBankAttacker
+ ldrb r0, [r2]
+ strb r0, [r1, 0x2]
+ ldr r3, _08013C88 @ =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, _08013C8C @ =gBattlescriptCurrInstr
+ ldr r0, _08013C90 @ =gUnknown_081D8E30
+ str r0, [r1]
+ ldr r1, _08013C94 @ =gBattleMainFunc
+ ldr r0, _08013C98 @ =sub_8013C9C
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_08013C7C: .4byte gFightStateTracker
+_08013C80: .4byte gBattleTextBuff1
+_08013C84: .4byte gBankAttacker
+_08013C88: .4byte gBattlePartyID
+_08013C8C: .4byte gBattlescriptCurrInstr
+_08013C90: .4byte gUnknown_081D8E30
+_08013C94: .4byte gBattleMainFunc
+_08013C98: .4byte sub_8013C9C
+ thumb_func_end sub_8013C48
+
+ thumb_func_start sub_8013C9C
+sub_8013C9C: @ 8013C9C
+ push {r4-r7,lr}
+ ldr r0, _08013D00 @ =gFightStateTracker
+ ldrb r0, [r0]
+ subs r0, 0xB
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _08013D7C
+ ldr r0, _08013D04 @ =gBattleTypeFlags
+ ldrh r0, [r0]
+ ldr r1, _08013D08 @ =0x00000b92
+ ands r1, r0
+ cmp r1, 0
+ bne _08013D4C
+ ldr r2, _08013D0C @ =gActiveBank
+ strb r1, [r2]
+ ldr r0, _08013D10 @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r1, r0
+ bcs _08013D48
+ adds r4, r2, 0
+ ldr r6, _08013D14 @ =gBattleMons
+ movs r5, 0x58
+ adds r7, r6, 0
+ adds r7, 0x30
+_08013CCE:
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _08013D36
+ ldr r2, _08013D18 @ =gBattleResults
+ ldrh r0, [r2, 0x6]
+ cmp r0, 0
+ bne _08013D1C
+ ldrb r0, [r4]
+ muls r0, r5
+ adds r0, r6
+ ldrh r0, [r0]
+ strh r0, [r2, 0x6]
+ ldrb r0, [r4]
+ adds r1, r0, 0
+ muls r1, r5
+ adds r1, r7
+ adds r0, r2, 0
+ adds r0, 0x8
+ bl StringCopy
+ b _08013D36
+ .align 2, 0
+_08013D00: .4byte gFightStateTracker
+_08013D04: .4byte gBattleTypeFlags
+_08013D08: .4byte 0x00000b92
+_08013D0C: .4byte gActiveBank
+_08013D10: .4byte gNoOfAllBanks
+_08013D14: .4byte gBattleMons
+_08013D18: .4byte gBattleResults
+_08013D1C:
+ ldrb r0, [r4]
+ muls r0, r5
+ adds r0, r6
+ ldrh r0, [r0]
+ strh r0, [r2, 0x26]
+ ldrb r0, [r4]
+ adds r1, r0, 0
+ muls r1, r5
+ adds r1, r7
+ adds r0, r2, 0
+ adds r0, 0x14
+ bl StringCopy
+_08013D36:
+ ldrb r0, [r4]
+ adds r0, 0x1
+ strb r0, [r4]
+ ldr r1, _08013D68 @ =gNoOfAllBanks
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _08013CCE
+_08013D48:
+ bl sub_80BDEC8
+_08013D4C:
+ movs r0, 0x3
+ bl BeginFastPaletteFade
+ movs r0, 0x5
+ bl FadeOutMapMusic
+ ldr r1, _08013D6C @ =gBattleMainFunc
+ ldr r0, _08013D70 @ =sub_8013DA8
+ str r0, [r1]
+ ldr r1, _08013D74 @ =gUnknown_03005E94
+ ldr r0, _08013D78 @ =sub_800F808
+ str r0, [r1]
+ b _08013D96
+ .align 2, 0
+_08013D68: .4byte gNoOfAllBanks
+_08013D6C: .4byte gBattleMainFunc
+_08013D70: .4byte sub_8013DA8
+_08013D74: .4byte gUnknown_03005E94
+_08013D78: .4byte sub_800F808
+_08013D7C:
+ ldr r0, _08013D9C @ =gBattleExecBuffer
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _08013D96
+ ldr r1, _08013DA0 @ =gBattleScriptingCommandsTable
+ ldr r0, _08013DA4 @ =gBattlescriptCurrInstr
+ ldr r0, [r0]
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+_08013D96:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08013D9C: .4byte gBattleExecBuffer
+_08013DA0: .4byte gBattleScriptingCommandsTable
+_08013DA4: .4byte gBattlescriptCurrInstr
+ thumb_func_end sub_8013C9C
+
+ thumb_func_start sub_8013DA8
+sub_8013DA8: @ 8013DA8
+ push {lr}
+ ldr r0, _08013DD0 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _08013DEA
+ bl ResetSpriteData
+ ldr r0, _08013DD4 @ =gLeveledUpInBattle
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08013DCA
+ ldr r0, _08013DD8 @ =gBattleOutcome
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _08013DE4
+_08013DCA:
+ ldr r1, _08013DDC @ =gBattleMainFunc
+ ldr r0, _08013DE0 @ =c4_overworld
+ b _08013DE8
+ .align 2, 0
+_08013DD0: .4byte gPaletteFade
+_08013DD4: .4byte gLeveledUpInBattle
+_08013DD8: .4byte gBattleOutcome
+_08013DDC: .4byte gBattleMainFunc
+_08013DE0: .4byte c4_overworld
+_08013DE4:
+ ldr r1, _08013DF0 @ =gBattleMainFunc
+ ldr r0, _08013DF4 @ =bc_evolution_cutscene
+_08013DE8:
+ str r0, [r1]
+_08013DEA:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08013DF0: .4byte gBattleMainFunc
+_08013DF4: .4byte bc_evolution_cutscene
+ thumb_func_end sub_8013DA8
+
+ thumb_func_start bc_evolution_cutscene
+bc_evolution_cutscene: @ 8013DF8
+ push {r4,r5,lr}
+ ldr r0, _08013E4C @ =gLeveledUpInBattle
+ ldrb r1, [r0]
+ adds r3, r0, 0
+ cmp r1, 0
+ beq _08013E6E
+_08013E04:
+ movs r5, 0
+_08013E06:
+ ldrb r2, [r3]
+ ldr r0, _08013E50 @ =gBitTable
+ lsls r1, r5, 2
+ adds r1, r0
+ ldr r1, [r1]
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _08013E60
+ bics r2, r1
+ strb r2, [r3]
+ movs r0, 0x64
+ adds r1, r5, 0
+ muls r1, r0
+ ldr r0, _08013E54 @ =gPlayerParty
+ adds r4, r1, r0
+ adds r0, r4, 0
+ movs r1, 0
+ bl GetEvolutionTargetSpecies
+ lsls r0, 16
+ lsrs r2, r0, 16
+ cmp r2, 0
+ beq _08013E60
+ ldr r0, _08013E58 @ =gBattleMainFunc
+ ldr r1, _08013E5C @ =sub_8013E88
+ str r1, [r0]
+ lsls r3, r5, 24
+ lsrs r3, 24
+ adds r0, r4, 0
+ adds r1, r2, 0
+ movs r2, 0x81
+ bl EvolutionScene
+ b _08013E74
+ .align 2, 0
+_08013E4C: .4byte gLeveledUpInBattle
+_08013E50: .4byte gBitTable
+_08013E54: .4byte gPlayerParty
+_08013E58: .4byte gBattleMainFunc
+_08013E5C: .4byte sub_8013E88
+_08013E60:
+ adds r5, 0x1
+ ldr r3, _08013E7C @ =gLeveledUpInBattle
+ cmp r5, 0x5
+ ble _08013E06
+ ldrb r0, [r3]
+ cmp r0, 0
+ bne _08013E04
+_08013E6E:
+ ldr r1, _08013E80 @ =gBattleMainFunc
+ ldr r0, _08013E84 @ =c4_overworld
+ str r0, [r1]
+_08013E74:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08013E7C: .4byte gLeveledUpInBattle
+_08013E80: .4byte gBattleMainFunc
+_08013E84: .4byte c4_overworld
+ thumb_func_end bc_evolution_cutscene
+
+ thumb_func_start sub_8013E88
+sub_8013E88: @ 8013E88
+ push {lr}
+ ldr r0, _08013EA0 @ =gMain
+ ldr r1, [r0, 0x4]
+ ldr r0, _08013EA4 @ =sub_800F808
+ cmp r1, r0
+ bne _08013E9A
+ ldr r1, _08013EA8 @ =gBattleMainFunc
+ ldr r0, _08013EAC @ =bc_evolution_cutscene
+ str r0, [r1]
+_08013E9A:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08013EA0: .4byte gMain
+_08013EA4: .4byte sub_800F808
+_08013EA8: .4byte gBattleMainFunc
+_08013EAC: .4byte bc_evolution_cutscene
+ thumb_func_end sub_8013E88
+
+ thumb_func_start c4_overworld
+c4_overworld: @ 8013EB0
+ push {r4-r6,lr}
+ ldr r5, _08013F30 @ =gBattleTypeFlags
+ ldrh r1, [r5]
+ movs r6, 0x2
+ adds r0, r6, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _08013ECE
+ ldr r4, _08013F34 @ =gPlayerParty
+ adds r0, r4, 0
+ bl RandomlyGivePartyPokerus
+ adds r0, r4, 0
+ bl PartySpreadPokerus
+_08013ECE:
+ ldrh r4, [r5]
+ adds r0, r6, 0
+ ands r0, r4
+ cmp r0, 0
+ beq _08013EE0
+ ldr r0, _08013F38 @ =gReceivedRemoteLinkPlayers
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08013F2A
+_08013EE0:
+ ldr r1, _08013F3C @ =gScriptResult
+ ldr r5, _08013F40 @ =gBattleOutcome
+ ldrb r0, [r5]
+ strh r0, [r1]
+ ldr r3, _08013F44 @ =gMain
+ ldr r0, _08013F48 @ =0x0000043d
+ adds r2, r3, r0
+ ldrb r1, [r2]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ ldr r0, _08013F4C @ =gPreBattleCallback1
+ ldr r0, [r0]
+ str r0, [r3]
+ movs r0, 0x80
+ lsls r0, 3
+ ands r0, r4
+ cmp r0, 0
+ beq _08013F1C
+ ldr r0, _08013F50 @ =gEnemyParty
+ bl UpdateRoamerHPStatus
+ ldrb r0, [r5]
+ cmp r0, 0x1
+ beq _08013F18
+ cmp r0, 0x7
+ bne _08013F1C
+_08013F18:
+ bl SetRoamerInactive
+_08013F1C:
+ movs r0, 0x5A
+ bl m4aSongNumStop
+ ldr r0, _08013F44 @ =gMain
+ ldr r0, [r0, 0x8]
+ bl SetMainCallback2
+_08013F2A:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08013F30: .4byte gBattleTypeFlags
+_08013F34: .4byte gPlayerParty
+_08013F38: .4byte gReceivedRemoteLinkPlayers
+_08013F3C: .4byte gScriptResult
+_08013F40: .4byte gBattleOutcome
+_08013F44: .4byte gMain
+_08013F48: .4byte 0x0000043d
+_08013F4C: .4byte gPreBattleCallback1
+_08013F50: .4byte gEnemyParty
+ thumb_func_end c4_overworld
+
+ thumb_func_start sub_8013F54
+sub_8013F54: @ 8013F54
+ push {lr}
+ ldr r0, _08013F84 @ =gFightStateTracker
+ ldrb r0, [r0]
+ subs r0, 0xB
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _08013F90
+ ldr r2, _08013F88 @ =0x02017140
+ adds r1, r2, 0
+ adds r1, 0x20
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _08013F74
+ subs r0, 0x1
+ strb r0, [r1]
+_08013F74:
+ ldr r0, _08013F8C @ =gBattleMainFunc
+ ldrb r1, [r1]
+ lsls r1, 2
+ adds r1, r2
+ ldr r1, [r1]
+ str r1, [r0]
+ b _08013FAA
+ .align 2, 0
+_08013F84: .4byte gFightStateTracker
+_08013F88: .4byte 0x02017140
+_08013F8C: .4byte gBattleMainFunc
+_08013F90:
+ ldr r0, _08013FB0 @ =gBattleExecBuffer
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _08013FAA
+ ldr r1, _08013FB4 @ =gBattleScriptingCommandsTable
+ ldr r0, _08013FB8 @ =gBattlescriptCurrInstr
+ ldr r0, [r0]
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+_08013FAA:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08013FB0: .4byte gBattleExecBuffer
+_08013FB4: .4byte gBattleScriptingCommandsTable
+_08013FB8: .4byte gBattlescriptCurrInstr
+ thumb_func_end sub_8013F54
+
+ thumb_func_start sub_8013FBC
+sub_8013FBC: @ 8013FBC
+ push {lr}
+ ldr r0, _08013FDC @ =gBattleExecBuffer
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _08013FD8
+ ldr r1, _08013FE0 @ =gBattleScriptingCommandsTable
+ ldr r0, _08013FE4 @ =gBattlescriptCurrInstr
+ ldr r0, [r0]
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+_08013FD8:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08013FDC: .4byte gBattleExecBuffer
+_08013FE0: .4byte gBattleScriptingCommandsTable
+_08013FE4: .4byte gBattlescriptCurrInstr
+ thumb_func_end sub_8013FBC
+
+ thumb_func_start sub_8013FE8
+sub_8013FE8: @ 8013FE8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0xC
+ movs r0, 0x4
+ str r0, [sp]
+ ldr r7, _08014028 @ =gBankAttacker
+ ldr r1, _0801402C @ =gTurnOrder
+ ldr r0, _08014030 @ =gCurrentMoveTurn
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r7]
+ ldr r1, _08014034 @ =0x02000000
+ mov r10, r1
+ ldr r0, _08014038 @ =0x000160a6
+ add r0, r10
+ ldrb r2, [r0]
+ ldr r1, _0801403C @ =gBitTable
+ ldrb r0, [r7]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ ands r2, r0
+ cmp r2, 0
+ beq _08014044
+ ldr r1, _08014040 @ =gFightStateTracker
+ movs r0, 0xC
+ b _080146CC
+ .align 2, 0
+_08014028: .4byte gBankAttacker
+_0801402C: .4byte gTurnOrder
+_08014030: .4byte gCurrentMoveTurn
+_08014034: .4byte 0x02000000
+_08014038: .4byte 0x000160a6
+_0801403C: .4byte gBitTable
+_08014040: .4byte gFightStateTracker
+_08014044:
+ ldr r1, _080140B8 @ =gCritMultiplier
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r1, _080140BC @ =0x0001601f
+ add r1, r10
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r0, _080140C0 @ =0x000160e7
+ add r0, r10
+ strb r2, [r0]
+ ldr r0, _080140C4 @ =gBattleMoveFlags
+ strb r2, [r0]
+ ldr r0, _080140C8 @ =gMultiHitCounter
+ strb r2, [r0]
+ ldr r0, _080140CC @ =gBattleCommunication
+ strb r2, [r0, 0x6]
+ ldr r3, _080140D0 @ =gCurrMovePos
+ ldrb r0, [r7]
+ ldr r2, _080140D4 @ =0x0001608c
+ adds r0, r2
+ add r0, r10
+ ldrb r0, [r0]
+ ldr r4, _080140D8 @ =gUnknown_02024BE5
+ strb r0, [r4]
+ strb r0, [r3]
+ ldr r1, _080140DC @ =gProtectStructs
+ ldrb r2, [r7]
+ lsls r0, r2, 4
+ adds r5, r0, r1
+ ldrb r1, [r5]
+ lsls r0, r1, 29
+ adds r4, r2, 0
+ mov r8, r3
+ cmp r0, 0
+ bge _080140F0
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r5]
+ ldr r2, _080140E0 @ =gCurrentMove
+ ldr r1, _080140E4 @ =gUnknown_02024BE8
+ movs r0, 0xA5
+ strh r0, [r1]
+ strh r0, [r2]
+ ldr r2, _080140E8 @ =gHitMarker
+ ldr r0, [r2]
+ movs r1, 0x80
+ lsls r1, 4
+ orrs r0, r1
+ str r0, [r2]
+ movs r0, 0xA5
+ movs r1, 0
+ bl sub_801B5C0
+ ldrb r1, [r7]
+ ldr r2, _080140EC @ =0x00016010
+ adds r1, r2
+ b _08014200
+ .align 2, 0
+_080140B8: .4byte gCritMultiplier
+_080140BC: .4byte 0x0001601f
+_080140C0: .4byte 0x000160e7
+_080140C4: .4byte gBattleMoveFlags
+_080140C8: .4byte gMultiHitCounter
+_080140CC: .4byte gBattleCommunication
+_080140D0: .4byte gCurrMovePos
+_080140D4: .4byte 0x0001608c
+_080140D8: .4byte gUnknown_02024BE5
+_080140DC: .4byte gProtectStructs
+_080140E0: .4byte gCurrentMove
+_080140E4: .4byte gUnknown_02024BE8
+_080140E8: .4byte gHitMarker
+_080140EC: .4byte 0x00016010
+_080140F0:
+ ldr r1, _08014128 @ =gBattleMons
+ movs r0, 0x58
+ adds r5, r4, 0
+ muls r5, r0
+ adds r0, r1, 0
+ adds r0, 0x50
+ adds r0, r5, r0
+ ldr r2, [r0]
+ movs r0, 0x80
+ lsls r0, 5
+ ands r0, r2
+ cmp r0, 0
+ bne _08014114
+ movs r6, 0x80
+ lsls r6, 15
+ ands r6, r2
+ cmp r6, 0
+ beq _08014138
+_08014114:
+ ldr r3, _0801412C @ =gCurrentMove
+ ldr r2, _08014130 @ =gUnknown_02024BE8
+ ldr r1, _08014134 @ =gLockedMove
+ lsls r0, r4, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ strh r0, [r2]
+ strh r0, [r3]
+ b _08014280
+ .align 2, 0
+_08014128: .4byte gBattleMons
+_0801412C: .4byte gCurrentMove
+_08014130: .4byte gUnknown_02024BE8
+_08014134: .4byte gLockedMove
+_08014138:
+ ldr r3, _08014188 @ =gDisableStructs
+ mov r12, r3
+ lsls r0, r4, 3
+ subs r0, r4
+ lsls r0, 2
+ adds r2, r0, r3
+ ldrh r4, [r2, 0x6]
+ adds r1, r4, 0
+ cmp r1, 0
+ beq _08014218
+ ldrb r3, [r2, 0xC]
+ lsls r0, r3, 1
+ adds r0, r5
+ str r0, [sp, 0x8]
+ ldr r0, _0801418C @ =gBattleMons
+ adds r0, 0xC
+ mov r9, r0
+ ldr r0, [sp, 0x8]
+ add r0, r9
+ ldrh r0, [r0]
+ cmp r1, r0
+ bne _080141A0
+ ldr r1, _08014190 @ =gCurrentMove
+ ldr r0, _08014194 @ =gUnknown_02024BE8
+ strh r4, [r0]
+ strh r4, [r1]
+ ldrb r0, [r2, 0xC]
+ ldr r2, _08014198 @ =gUnknown_02024BE5
+ strb r0, [r2]
+ mov r3, r8
+ strb r0, [r3]
+ ldrh r0, [r1]
+ movs r1, 0
+ bl sub_801B5C0
+ ldrb r1, [r7]
+ ldr r4, _0801419C @ =0x00016010
+ adds r1, r4
+ b _08014200
+ .align 2, 0
+_08014188: .4byte gDisableStructs
+_0801418C: .4byte gBattleMons
+_08014190: .4byte gCurrentMove
+_08014194: .4byte gUnknown_02024BE8
+_08014198: .4byte gUnknown_02024BE5
+_0801419C: .4byte 0x00016010
+_080141A0:
+ cmp r1, 0
+ beq _08014218
+ cmp r1, r0
+ beq _08014218
+ ldr r0, _08014208 @ =gUnknown_02024BE5
+ strb r3, [r0]
+ mov r1, r8
+ strb r3, [r1]
+ ldr r3, _0801420C @ =gCurrentMove
+ ldr r1, _08014210 @ =gUnknown_02024BE8
+ mov r2, r8
+ ldrb r0, [r2]
+ lsls r0, 1
+ adds r0, r5
+ add r0, r9
+ ldrh r0, [r0]
+ strh r0, [r1]
+ strh r0, [r3]
+ ldrb r1, [r7]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ add r0, r12
+ movs r2, 0
+ strh r6, [r0, 0x6]
+ ldrb r1, [r7]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ add r0, r12
+ strb r2, [r0, 0xC]
+ ldrb r0, [r7]
+ lsls r1, r0, 3
+ subs r1, r0
+ lsls r1, 2
+ add r1, r12
+ ldrb r2, [r1, 0xE]
+ movs r0, 0x10
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1, 0xE]
+ ldrh r0, [r3]
+ movs r1, 0
+ bl sub_801B5C0
+ ldrb r1, [r7]
+ ldr r3, _08014214 @ =0x00016010
+ adds r1, r3
+_08014200:
+ add r1, r10
+ strb r0, [r1]
+ b _08014280
+ .align 2, 0
+_08014208: .4byte gUnknown_02024BE5
+_0801420C: .4byte gCurrentMove
+_08014210: .4byte gUnknown_02024BE8
+_08014214: .4byte 0x00016010
+_08014218:
+ mov r4, r8
+ ldrb r0, [r4]
+ lsls r0, 1
+ ldr r4, _0801425C @ =gBankAttacker
+ ldrb r2, [r4]
+ movs r1, 0x58
+ muls r1, r2
+ adds r0, r1
+ ldr r1, _08014260 @ =gBattleMons
+ adds r1, 0xC
+ adds r0, r1
+ ldr r1, _08014264 @ =gChosenMovesByBanks
+ lsls r2, 1
+ adds r2, r1
+ ldrh r3, [r0]
+ ldrh r2, [r2]
+ cmp r3, r2
+ beq _08014278
+ ldr r1, _08014268 @ =gCurrentMove
+ ldr r0, _0801426C @ =gUnknown_02024BE8
+ strh r3, [r0]
+ strh r3, [r1]
+ ldrh r0, [r1]
+ movs r1, 0
+ bl sub_801B5C0
+ ldr r2, _08014270 @ =0x02000000
+ ldrb r1, [r4]
+ ldr r3, _08014274 @ =0x00016010
+ adds r1, r3
+ adds r1, r2
+ strb r0, [r1]
+ b _08014280
+ .align 2, 0
+_0801425C: .4byte gBankAttacker
+_08014260: .4byte gBattleMons
+_08014264: .4byte gChosenMovesByBanks
+_08014268: .4byte gCurrentMove
+_0801426C: .4byte gUnknown_02024BE8
+_08014270: .4byte 0x02000000
+_08014274: .4byte 0x00016010
+_08014278:
+ ldr r1, _08014298 @ =gCurrentMove
+ ldr r0, _0801429C @ =gUnknown_02024BE8
+ strh r3, [r0]
+ strh r3, [r1]
+_08014280:
+ ldr r0, _080142A0 @ =gBankAttacker
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080142A8
+ ldr r0, _080142A4 @ =gBattleResults
+ ldr r1, _08014298 @ =gCurrentMove
+ ldrh r1, [r1]
+ strh r1, [r0, 0x22]
+ b _080142B0
+ .align 2, 0
+_08014298: .4byte gCurrentMove
+_0801429C: .4byte gUnknown_02024BE8
+_080142A0: .4byte gBankAttacker
+_080142A4: .4byte gBattleResults
+_080142A8:
+ ldr r0, _08014314 @ =gBattleResults
+ ldr r1, _08014318 @ =gCurrentMove
+ ldrh r1, [r1]
+ strh r1, [r0, 0x24]
+_080142B0:
+ ldr r4, _0801431C @ =gBankAttacker
+ ldrb r0, [r4]
+ bl GetBankSide
+ movs r1, 0x1
+ eors r0, r1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r1, _08014320 @ =gSideTimer
+ lsls r0, r6, 1
+ adds r0, r6
+ lsls r0, 2
+ adds r5, r0, r1
+ ldrb r0, [r5, 0x8]
+ adds r3, r4, 0
+ cmp r0, 0
+ beq _08014330
+ ldr r2, _08014324 @ =gBattleMoves
+ ldr r0, _08014318 @ =gCurrentMove
+ ldrh r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x6]
+ cmp r0, 0
+ bne _08014330
+ ldrb r0, [r3]
+ bl GetBankSide
+ adds r4, r0, 0
+ ldrb r0, [r5, 0x9]
+ bl GetBankSide
+ lsls r4, 24
+ lsls r0, 24
+ cmp r4, r0
+ beq _08014330
+ ldr r1, _08014328 @ =gBattleMons
+ ldrb r2, [r5, 0x9]
+ movs r0, 0x58
+ muls r0, r2
+ adds r0, r1
+ ldrh r0, [r0, 0x28]
+ cmp r0, 0
+ beq _08014330
+ ldr r0, _0801432C @ =gBankTarget
+ strb r2, [r0]
+ b _080146AC
+ .align 2, 0
+_08014314: .4byte gBattleResults
+_08014318: .4byte gCurrentMove
+_0801431C: .4byte gBankAttacker
+_08014320: .4byte gSideTimer
+_08014324: .4byte gBattleMoves
+_08014328: .4byte gBattleMons
+_0801432C: .4byte gBankTarget
+_08014330:
+ ldr r2, _08014454 @ =gBattleTypeFlags
+ ldrh r1, [r2]
+ movs r0, 0x1
+ ands r0, r1
+ ldr r3, _08014458 @ =gBankAttacker
+ mov r9, r2
+ cmp r0, 0
+ bne _08014342
+ b _0801461C
+_08014342:
+ ldr r1, _0801445C @ =gSideTimer
+ lsls r0, r6, 1
+ adds r0, r6
+ lsls r0, 2
+ adds r0, r1
+ ldrb r7, [r0, 0x8]
+ cmp r7, 0
+ beq _08014354
+ b _08014570
+_08014354:
+ ldr r2, _08014460 @ =gBattleMoves
+ ldr r0, _08014464 @ =gCurrentMove
+ ldrh r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r4, r0, r2
+ ldrb r0, [r4, 0x1]
+ cmp r0, 0
+ bne _08014370
+ ldrb r0, [r4, 0x6]
+ cmp r0, 0x10
+ bne _08014370
+ b _08014570
+_08014370:
+ ldr r3, _08014468 @ =gBattleMons
+ ldr r0, _0801446C @ =0x02000000
+ mov r8, r0
+ ldr r2, _08014458 @ =gBankAttacker
+ ldrb r5, [r2]
+ ldr r1, _08014470 @ =0x00016010
+ adds r0, r5, r1
+ add r0, r8
+ ldrb r1, [r0]
+ movs r0, 0x58
+ muls r0, r1
+ adds r0, r3
+ adds r0, 0x20
+ ldrb r0, [r0]
+ adds r3, r2, 0
+ cmp r0, 0x1F
+ bne _08014394
+ b _08014570
+_08014394:
+ ldrb r0, [r4, 0x2]
+ cmp r0, 0xD
+ beq _0801439C
+ b _08014570
+_0801439C:
+ adds r0, r5, 0
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r1, _08014474 @ =gActiveBank
+ strb r7, [r1]
+ ldr r0, _08014478 @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r7, r0
+ bcs _08014416
+ adds r4, r1, 0
+ mov r5, r8
+_080143B6:
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r6, r0
+ beq _08014404
+ ldr r0, _08014458 @ =gBankAttacker
+ ldrb r0, [r0]
+ ldr r2, _08014470 @ =0x00016010
+ adds r0, r2
+ adds r0, r5
+ ldrb r0, [r0]
+ ldrb r3, [r4]
+ cmp r0, r3
+ beq _08014404
+ ldr r1, _08014468 @ =gBattleMons
+ ldrb r2, [r4]
+ movs r0, 0x58
+ muls r0, r2
+ adds r0, r1
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, 0x1F
+ bne _08014404
+ adds r0, r2, 0
+ bl sub_801E3B4
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, [sp]
+ cmp r0, r1
+ bcs _08014404
+ ldrb r0, [r4]
+ bl sub_801E3B4
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp]
+_08014404:
+ ldrb r0, [r4]
+ adds r0, 0x1
+ strb r0, [r4]
+ ldr r1, _08014478 @ =gNoOfAllBanks
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _080143B6
+_08014416:
+ ldr r2, [sp]
+ cmp r2, 0x4
+ beq _0801441E
+ b _08014522
+_0801441E:
+ ldr r2, _08014460 @ =gBattleMoves
+ ldr r0, _0801447C @ =gUnknown_02024BE8
+ ldrh r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x6]
+ ldr r3, [sp]
+ ands r3, r0
+ cmp r3, 0
+ beq _080144A4
+ ldr r0, _08014458 @ =gBankAttacker
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _08014484
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ cmp r1, 0
+ beq _08014480
+ movs r0, 0x1
+ b _08014496
+ .align 2, 0
+_08014454: .4byte gBattleTypeFlags
+_08014458: .4byte gBankAttacker
+_0801445C: .4byte gSideTimer
+_08014460: .4byte gBattleMoves
+_08014464: .4byte gCurrentMove
+_08014468: .4byte gBattleMons
+_0801446C: .4byte 0x02000000
+_08014470: .4byte 0x00016010
+_08014474: .4byte gActiveBank
+_08014478: .4byte gNoOfAllBanks
+_0801447C: .4byte gUnknown_02024BE8
+_08014480:
+ movs r0, 0x3
+ b _08014496
+_08014484:
+ bl Random
+ movs r1, 0x1
+ ands r1, r0
+ cmp r1, 0
+ beq _08014494
+ movs r0, 0
+ b _08014496
+_08014494:
+ movs r0, 0x2
+_08014496:
+ bl GetBankByPlayerAI
+ ldr r1, _080144A0 @ =gBankTarget
+ strb r0, [r1]
+ b _080144B6
+ .align 2, 0
+_080144A0: .4byte gBankTarget
+_080144A4:
+ ldr r2, _080144EC @ =gBankTarget
+ ldr r1, _080144F0 @ =0x02000000
+ ldr r0, _080144F4 @ =gBankAttacker
+ ldrb r0, [r0]
+ ldr r4, _080144F8 @ =0x00016010
+ adds r0, r4
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r2]
+_080144B6:
+ ldr r7, _080144FC @ =gAbsentBankFlags
+ ldrb r0, [r7]
+ ldr r1, _08014500 @ =gBitTable
+ mov r8, r1
+ ldr r5, _080144EC @ =gBankTarget
+ ldrb r1, [r5]
+ lsls r1, 2
+ add r1, r8
+ ldr r1, [r1]
+ ands r0, r1
+ cmp r0, 0
+ bne _080144D0
+ b _080146AC
+_080144D0:
+ ldr r6, _080144F4 @ =gBankAttacker
+ ldrb r0, [r6]
+ bl GetBankSide
+ adds r4, r0, 0
+ ldrb r0, [r5]
+ bl GetBankSide
+ lsls r4, 24
+ lsls r0, 24
+ cmp r4, r0
+ beq _08014504
+ ldrb r0, [r5]
+ b _0801469A
+ .align 2, 0
+_080144EC: .4byte gBankTarget
+_080144F0: .4byte 0x02000000
+_080144F4: .4byte gBankAttacker
+_080144F8: .4byte 0x00016010
+_080144FC: .4byte gAbsentBankFlags
+_08014500: .4byte gBitTable
+_08014504:
+ ldrb r0, [r6]
+ bl GetBankIdentity
+ movs r1, 0x1
+ eors r0, r1
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ strb r0, [r5]
+ ldrb r1, [r7]
+ ldrb r2, [r5]
+ lsls r0, r2, 2
+ add r0, r8
+ b _08014690
+_08014522:
+ ldr r4, _0801455C @ =gActiveBank
+ ldr r0, _08014560 @ =gTurnOrder
+ ldr r2, [sp]
+ adds r0, r2, r0
+ ldrb r0, [r0]
+ strb r0, [r4]
+ ldrb r0, [r4]
+ ldr r2, _08014564 @ =gBattleMons
+ movs r1, 0x58
+ muls r1, r0
+ adds r1, r2
+ adds r1, 0x20
+ ldrb r1, [r1]
+ bl sub_81074C4
+ ldr r2, _08014568 @ =gSpecialStatuses
+ ldrb r1, [r4]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r1, [r0]
+ movs r2, 0x2
+ orrs r1, r2
+ strb r1, [r0]
+ ldr r1, _0801456C @ =gBankTarget
+ ldrb r0, [r4]
+ strb r0, [r1]
+ b _080146AC
+ .align 2, 0
+_0801455C: .4byte gActiveBank
+_08014560: .4byte gTurnOrder
+_08014564: .4byte gBattleMons
+_08014568: .4byte gSpecialStatuses
+_0801456C: .4byte gBankTarget
+_08014570:
+ mov r4, r9
+ ldrh r1, [r4]
+ movs r4, 0x1
+ adds r0, r4, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _0801461C
+ ldr r2, _080145B4 @ =gBattleMoves
+ ldr r0, _080145B8 @ =gUnknown_02024BE8
+ ldrh r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r1, [r0, 0x6]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _0801461C
+ ldrb r0, [r3]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080145C0
+ bl Random
+ adds r1, r4, 0
+ ands r1, r0
+ cmp r1, 0
+ beq _080145BC
+ movs r0, 0x1
+ b _080145D2
+ .align 2, 0
+_080145B4: .4byte gBattleMoves
+_080145B8: .4byte gUnknown_02024BE8
+_080145BC:
+ movs r0, 0x3
+ b _080145D2
+_080145C0:
+ bl Random
+ adds r1, r4, 0
+ ands r1, r0
+ cmp r1, 0
+ beq _080145D0
+ movs r0, 0
+ b _080145D2
+_080145D0:
+ movs r0, 0x2
+_080145D2:
+ bl GetBankByPlayerAI
+ ldr r1, _0801460C @ =gBankTarget
+ strb r0, [r1]
+ ldr r0, _08014610 @ =gAbsentBankFlags
+ ldrb r1, [r0]
+ ldr r2, _08014614 @ =gBitTable
+ ldr r5, _0801460C @ =gBankTarget
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ beq _080146AC
+ ldr r0, _08014618 @ =gBankAttacker
+ ldrb r0, [r0]
+ bl GetBankSide
+ adds r4, r0, 0
+ ldrb r0, [r5]
+ bl GetBankSide
+ lsls r4, 24
+ lsls r0, 24
+ cmp r4, r0
+ beq _080146AC
+ ldrb r0, [r5]
+ b _0801469A
+ .align 2, 0
+_0801460C: .4byte gBankTarget
+_08014610: .4byte gAbsentBankFlags
+_08014614: .4byte gBitTable
+_08014618: .4byte gBankAttacker
+_0801461C:
+ ldr r5, _08014660 @ =gBankTarget
+ ldr r1, _08014664 @ =0x02000000
+ adds r2, r3, 0
+ ldrb r0, [r2]
+ ldr r4, _08014668 @ =0x00016010
+ adds r0, r4
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r5]
+ ldr r6, _0801466C @ =gAbsentBankFlags
+ ldrb r1, [r6]
+ ldr r7, _08014670 @ =gBitTable
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r7
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ beq _080146AC
+ ldrb r0, [r2]
+ str r3, [sp, 0x4]
+ bl GetBankSide
+ adds r4, r0, 0
+ ldrb r0, [r5]
+ bl GetBankSide
+ lsls r4, 24
+ lsls r0, 24
+ ldr r3, [sp, 0x4]
+ cmp r4, r0
+ beq _08014674
+ ldrb r0, [r5]
+ b _0801469A
+ .align 2, 0
+_08014660: .4byte gBankTarget
+_08014664: .4byte 0x02000000
+_08014668: .4byte 0x00016010
+_0801466C: .4byte gAbsentBankFlags
+_08014670: .4byte gBitTable
+_08014674:
+ ldrb r0, [r3]
+ bl GetBankIdentity
+ movs r1, 0x1
+ eors r0, r1
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ strb r0, [r5]
+ ldrb r1, [r6]
+ ldrb r2, [r5]
+ lsls r0, r2, 2
+ adds r0, r7
+_08014690:
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ beq _080146AC
+ adds r0, r2, 0
+_0801469A:
+ bl GetBankIdentity
+ movs r1, 0x2
+ eors r0, r1
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankByPlayerAI
+ strb r0, [r5]
+_080146AC:
+ ldr r4, _080146E0 @ =gBattlescriptCurrInstr
+ ldr r3, _080146E4 @ =gUnknown_081D6BBC
+ ldr r2, _080146E8 @ =gBattleMoves
+ ldr r0, _080146EC @ =gCurrentMove
+ ldrh r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r3
+ ldr r0, [r0]
+ str r0, [r4]
+ ldr r1, _080146F0 @ =gFightStateTracker
+ movs r0, 0xA
+_080146CC:
+ strb r0, [r1]
+ add sp, 0xC
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080146E0: .4byte gBattlescriptCurrInstr
+_080146E4: .4byte gUnknown_081D6BBC
+_080146E8: .4byte gBattleMoves
+_080146EC: .4byte gCurrentMove
+_080146F0: .4byte gFightStateTracker
+ thumb_func_end sub_8013FE8
+
+ thumb_func_start sub_80146F4
+sub_80146F4: @ 80146F4
+ push {r4,lr}
+ ldr r3, _08014764 @ =gBankAttacker
+ ldr r1, _08014768 @ =gTurnOrder
+ ldr r0, _0801476C @ =gCurrentMoveTurn
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r3]
+ ldr r0, _08014770 @ =gUnknown_030042A4
+ movs r2, 0
+ strh r2, [r0]
+ ldr r0, _08014774 @ =gUnknown_030042A0
+ strh r2, [r0]
+ ldr r1, _08014778 @ =gActionSelectionCursor
+ ldrb r0, [r3]
+ adds r0, r1
+ strb r2, [r0]
+ ldr r1, _0801477C @ =gMoveSelectionCursor
+ ldrb r0, [r3]
+ adds r0, r1
+ strb r2, [r0]
+ ldr r2, _08014780 @ =gBattleTextBuff1
+ movs r0, 0xFD
+ strb r0, [r2]
+ movs r0, 0x7
+ strb r0, [r2, 0x1]
+ ldrb r4, [r3]
+ strb r4, [r2, 0x2]
+ ldr r1, _08014784 @ =0x02000000
+ ldrb r0, [r3]
+ ldr r3, _08014788 @ =0x00016064
+ adds r0, r3
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r2, 0x3]
+ movs r0, 0xFF
+ strb r0, [r2, 0x4]
+ ldr r0, _0801478C @ =0x00016003
+ adds r1, r0
+ strb r4, [r1]
+ ldr r1, _08014790 @ =gBattlescriptCurrInstr
+ ldr r0, _08014794 @ =gUnknown_081D8E4E
+ str r0, [r1]
+ ldr r1, _08014798 @ =gFightStateTracker
+ movs r0, 0xA
+ strb r0, [r1]
+ ldr r1, _0801479C @ =gBattleResults
+ ldrb r0, [r1, 0x2]
+ cmp r0, 0xFE
+ bhi _0801475C
+ adds r0, 0x1
+ strb r0, [r1, 0x2]
+_0801475C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08014764: .4byte gBankAttacker
+_08014768: .4byte gTurnOrder
+_0801476C: .4byte gCurrentMoveTurn
+_08014770: .4byte gUnknown_030042A4
+_08014774: .4byte gUnknown_030042A0
+_08014778: .4byte gActionSelectionCursor
+_0801477C: .4byte gMoveSelectionCursor
+_08014780: .4byte gBattleTextBuff1
+_08014784: .4byte 0x02000000
+_08014788: .4byte 0x00016064
+_0801478C: .4byte 0x00016003
+_08014790: .4byte gBattlescriptCurrInstr
+_08014794: .4byte gUnknown_081D8E4E
+_08014798: .4byte gFightStateTracker
+_0801479C: .4byte gBattleResults
+ thumb_func_end sub_80146F4
+
+ thumb_func_start sub_80147A0
+sub_80147A0: @ 80147A0
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ ldr r4, _08014804 @ =gBankAttacker
+ ldr r2, _08014808 @ =gBankTarget
+ ldr r1, _0801480C @ =gTurnOrder
+ ldr r0, _08014810 @ =gCurrentMoveTurn
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r2]
+ strb r0, [r4]
+ ldr r0, _08014814 @ =gUnknown_030042A4
+ movs r2, 0
+ strh r2, [r0]
+ ldr r0, _08014818 @ =gUnknown_030042A0
+ strh r2, [r0]
+ ldr r3, _0801481C @ =gDisableStructs
+ ldrb r1, [r4]
+ lsls r0, r1, 3
+ subs r0, r1
+ lsls r0, 2
+ adds r0, r3
+ strb r2, [r0, 0x10]
+ ldr r5, _08014820 @ =gLastUsedItem
+ ldr r2, _08014824 @ =gBattleBufferB
+ ldrb r1, [r4]
+ lsls r1, 9
+ adds r0, r2, 0x1
+ adds r0, r1, r0
+ ldrb r3, [r0]
+ adds r2, 0x2
+ adds r1, r2
+ ldrb r0, [r1]
+ lsls r0, 8
+ orrs r3, r0
+ strh r3, [r5]
+ cmp r3, 0xC
+ bhi _08014830
+ ldr r2, _08014828 @ =gBattlescriptCurrInstr
+ ldr r1, _0801482C @ =gUnknown_081D9E48
+ ldrh r0, [r5]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ str r0, [r2]
+ b _08014A8C
+ .align 2, 0
+_08014804: .4byte gBankAttacker
+_08014808: .4byte gBankTarget
+_0801480C: .4byte gTurnOrder
+_08014810: .4byte gCurrentMoveTurn
+_08014814: .4byte gUnknown_030042A4
+_08014818: .4byte gUnknown_030042A0
+_0801481C: .4byte gDisableStructs
+_08014820: .4byte gLastUsedItem
+_08014824: .4byte gBattleBufferB
+_08014828: .4byte gBattlescriptCurrInstr
+_0801482C: .4byte gUnknown_081D9E48
+_08014830:
+ adds r0, r3, 0
+ subs r0, 0x50
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x1
+ bhi _0801484C
+ ldr r0, _08014844 @ =gBattlescriptCurrInstr
+ ldr r1, _08014848 @ =gUnknown_081D9E94
+ b _0801485C
+ .align 2, 0
+_08014844: .4byte gBattlescriptCurrInstr
+_08014848: .4byte gUnknown_081D9E94
+_0801484C:
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0801486C
+ ldr r0, _08014864 @ =gBattlescriptCurrInstr
+ ldr r1, _08014868 @ =gUnknown_081D9E7C
+_0801485C:
+ ldr r1, [r1]
+ str r1, [r0]
+ b _08014A8C
+ .align 2, 0
+_08014864: .4byte gBattlescriptCurrInstr
+_08014868: .4byte gUnknown_081D9E7C
+_0801486C:
+ ldr r2, _080148A0 @ =0x02000000
+ ldrb r0, [r4]
+ ldr r3, _080148A4 @ =0x00016003
+ adds r1, r2, r3
+ strb r0, [r1]
+ lsls r0, 24
+ lsrs r0, 25
+ ldr r1, _080148A8 @ =0x000160d8
+ adds r0, r1
+ adds r0, r2
+ ldrb r0, [r0]
+ subs r0, 0x1
+ mov r8, r4
+ ldr r3, _080148AC @ =gBattlescriptCurrInstr
+ mov r9, r3
+ ldr r1, _080148B0 @ =gUnknown_081D9E7C
+ mov r10, r1
+ adds r7, r2, 0
+ cmp r0, 0x4
+ bls _08014896
+ b _08014A74
+_08014896:
+ lsls r0, 2
+ ldr r1, _080148B4 @ =_080148B8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080148A0: .4byte 0x02000000
+_080148A4: .4byte 0x00016003
+_080148A8: .4byte 0x000160d8
+_080148AC: .4byte gBattlescriptCurrInstr
+_080148B0: .4byte gUnknown_081D9E7C
+_080148B4: .4byte _080148B8
+ .align 2, 0
+_080148B8:
+ .4byte _08014A74
+ .4byte _08014A74
+ .4byte _080148CC
+ .4byte _08014958
+ .4byte _08014A30
+_080148CC:
+ ldr r2, _08014904 @ =gBattleCommunication
+ movs r0, 0
+ strb r0, [r2, 0x5]
+ ldr r1, _08014908 @ =gBankAttacker
+ ldrb r0, [r1]
+ lsrs r0, 1
+ ldr r6, _0801490C @ =0x000160da
+ adds r0, r6
+ adds r0, r7
+ ldrb r3, [r0]
+ movs r0, 0x1
+ ands r0, r3
+ mov r8, r1
+ cmp r0, 0
+ beq _08014918
+ movs r0, 0x3E
+ ands r0, r3
+ ldr r3, _08014910 @ =gBattlescriptCurrInstr
+ mov r9, r3
+ ldr r1, _08014914 @ =gUnknown_081D9E7C
+ mov r10, r1
+ cmp r0, 0
+ bne _080148FC
+ b _08014A74
+_080148FC:
+ movs r0, 0x5
+ strb r0, [r2, 0x5]
+ b _08014A74
+ .align 2, 0
+_08014904: .4byte gBattleCommunication
+_08014908: .4byte gBankAttacker
+_0801490C: .4byte 0x000160da
+_08014910: .4byte gBattlescriptCurrInstr
+_08014914: .4byte gUnknown_081D9E7C
+_08014918:
+ ldr r3, _08014950 @ =gBattlescriptCurrInstr
+ mov r9, r3
+ ldr r0, _08014954 @ =gUnknown_081D9E7C
+ mov r10, r0
+ adds r5, r7, 0
+ mov r4, r8
+ adds r3, r6, 0
+_08014926:
+ ldrb r0, [r4]
+ lsrs r0, 1
+ adds r0, r3
+ adds r0, r5
+ ldrb r1, [r0]
+ lsrs r1, 1
+ strb r1, [r0]
+ ldrb r0, [r2, 0x5]
+ adds r0, 0x1
+ strb r0, [r2, 0x5]
+ ldrb r0, [r4]
+ lsrs r0, 1
+ adds r0, r3
+ adds r0, r5
+ ldrb r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08014926
+ b _08014A74
+ .align 2, 0
+_08014950: .4byte gBattlescriptCurrInstr
+_08014954: .4byte gUnknown_081D9E7C
+_08014958:
+ ldr r3, _0801498C @ =gBattleCommunication
+ movs r0, 0x4
+ strb r0, [r3, 0x5]
+ ldr r2, _08014990 @ =gBankAttacker
+ ldrb r0, [r2]
+ lsrs r0, 1
+ ldr r1, _08014994 @ =0x000160da
+ mov r12, r1
+ add r0, r12
+ adds r6, r0, r7
+ ldrb r1, [r6]
+ movs r0, 0x80
+ ands r0, r1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ mov r8, r2
+ cmp r5, 0
+ beq _080149A0
+ movs r0, 0x5
+ strb r0, [r3, 0x5]
+ ldr r2, _08014998 @ =gBattlescriptCurrInstr
+ mov r9, r2
+ ldr r3, _0801499C @ =gUnknown_081D9E7C
+ mov r10, r3
+ b _08014A74
+ .align 2, 0
+_0801498C: .4byte gBattleCommunication
+_08014990: .4byte gBankAttacker
+_08014994: .4byte 0x000160da
+_08014998: .4byte gBattlescriptCurrInstr
+_0801499C: .4byte gUnknown_081D9E7C
+_080149A0:
+ ldr r3, _08014A18 @ =gBattleTextBuff1
+ movs r4, 0xFD
+ strb r4, [r3]
+ movs r0, 0x5
+ strb r0, [r3, 0x1]
+ movs r2, 0x1
+ strb r2, [r3, 0x2]
+ movs r0, 0xFF
+ strb r0, [r3, 0x3]
+ ldr r1, _08014A1C @ =gBattleTextBuff2
+ strb r4, [r1]
+ strb r5, [r1, 0x1]
+ movs r0, 0xD2
+ strb r0, [r1, 0x2]
+ strb r5, [r1, 0x3]
+ subs r0, 0xD3
+ strb r0, [r1, 0x4]
+ ldrb r0, [r6]
+ ands r2, r0
+ ldr r0, _08014A20 @ =gBattlescriptCurrInstr
+ mov r9, r0
+ ldr r1, _08014A24 @ =gUnknown_081D9E7C
+ mov r10, r1
+ adds r6, r3, 0
+ cmp r2, 0
+ bne _08014A02
+ adds r3, r7, 0
+ mov r5, r8
+ mov r4, r12
+ adds r2, r6, 0
+_080149DC:
+ ldrb r0, [r5]
+ lsrs r0, 1
+ adds r0, r4
+ adds r0, r3
+ ldrb r1, [r0]
+ lsrs r1, 1
+ strb r1, [r0]
+ ldrb r0, [r2, 0x2]
+ adds r0, 0x1
+ strb r0, [r2, 0x2]
+ ldrb r0, [r5]
+ lsrs r0, 1
+ adds r0, r4
+ adds r0, r3
+ ldrb r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080149DC
+_08014A02:
+ ldrb r0, [r6, 0x2]
+ adds r0, 0xE
+ ldr r2, _08014A28 @ =0x000160a4
+ adds r1, r7, r2
+ movs r2, 0
+ strb r0, [r1]
+ ldr r3, _08014A2C @ =0x000160a5
+ adds r0, r7, r3
+ strb r2, [r0]
+ b _08014A74
+ .align 2, 0
+_08014A18: .4byte gBattleTextBuff1
+_08014A1C: .4byte gBattleTextBuff2
+_08014A20: .4byte gBattlescriptCurrInstr
+_08014A24: .4byte gUnknown_081D9E7C
+_08014A28: .4byte 0x000160a4
+_08014A2C: .4byte 0x000160a5
+_08014A30:
+ ldr r0, _08014A50 @ =gBattleTypeFlags
+ ldrh r0, [r0]
+ movs r1, 0x1
+ ands r1, r0
+ cmp r1, 0
+ beq _08014A64
+ ldr r1, _08014A54 @ =gBattleCommunication
+ movs r0, 0x2
+ strb r0, [r1, 0x5]
+ ldr r0, _08014A58 @ =gBankAttacker
+ mov r8, r0
+ ldr r1, _08014A5C @ =gBattlescriptCurrInstr
+ mov r9, r1
+ ldr r2, _08014A60 @ =gUnknown_081D9E7C
+ mov r10, r2
+ b _08014A74
+ .align 2, 0
+_08014A50: .4byte gBattleTypeFlags
+_08014A54: .4byte gBattleCommunication
+_08014A58: .4byte gBankAttacker
+_08014A5C: .4byte gBattlescriptCurrInstr
+_08014A60: .4byte gUnknown_081D9E7C
+_08014A64:
+ ldr r0, _08014AA0 @ =gBattleCommunication
+ strb r1, [r0, 0x5]
+ ldr r3, _08014AA4 @ =gBankAttacker
+ mov r8, r3
+ ldr r0, _08014AA8 @ =gBattlescriptCurrInstr
+ mov r9, r0
+ ldr r1, _08014AAC @ =gUnknown_081D9E7C
+ mov r10, r1
+_08014A74:
+ mov r2, r8
+ ldrb r0, [r2]
+ lsrs r0, 1
+ ldr r3, _08014AB0 @ =0x000160d8
+ adds r0, r3
+ adds r0, r7
+ ldrb r0, [r0]
+ lsls r0, 2
+ add r0, r10
+ ldr r0, [r0]
+ mov r1, r9
+ str r0, [r1]
+_08014A8C:
+ movs r0, 0xA
+ ldr r2, _08014AB4 @ =gFightStateTracker
+ strb r0, [r2]
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08014AA0: .4byte gBattleCommunication
+_08014AA4: .4byte gBankAttacker
+_08014AA8: .4byte gBattlescriptCurrInstr
+_08014AAC: .4byte gUnknown_081D9E7C
+_08014AB0: .4byte 0x000160d8
+_08014AB4: .4byte gFightStateTracker
+ thumb_func_end sub_80147A0
+
+ thumb_func_start sub_8014AB8
+sub_8014AB8: @ 8014AB8
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ movs r5, 0
+ ldr r1, _08014ADC @ =gBattleMons
+ movs r0, 0x58
+ muls r0, r4
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x2E]
+ cmp r0, 0xAF
+ bne _08014AE4
+ ldr r1, _08014AE0 @ =gEnigmaBerries
+ lsls r0, r4, 3
+ subs r0, r4
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0, 0x7]
+ b _08014AEE
+ .align 2, 0
+_08014ADC: .4byte gBattleMons
+_08014AE0: .4byte gEnigmaBerries
+_08014AE4:
+ ldrh r0, [r1, 0x2E]
+ bl ItemId_GetHoldEffect
+ lsls r0, 24
+ lsrs r1, r0, 24
+_08014AEE:
+ ldr r0, _08014B18 @ =gStringBank
+ strb r4, [r0]
+ cmp r1, 0x25
+ bne _08014B28
+ ldr r2, _08014B1C @ =gLastUsedItem
+ ldr r1, _08014B20 @ =gBattleMons
+ movs r0, 0x58
+ muls r0, r4
+ adds r0, r1
+ ldrh r0, [r0, 0x2E]
+ strh r0, [r2]
+ ldr r0, _08014B24 @ =gProtectStructs
+ lsls r2, r4, 4
+ adds r2, r0
+ ldrb r1, [r2, 0x1]
+ movs r0, 0x19
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x8
+ b _08014B50
+ .align 2, 0
+_08014B18: .4byte gStringBank
+_08014B1C: .4byte gLastUsedItem
+_08014B20: .4byte gBattleMons
+_08014B24: .4byte gProtectStructs
+_08014B28:
+ ldr r6, _08014B5C @ =gBattleMons
+ movs r2, 0x58
+ adds r0, r4, 0
+ muls r0, r2
+ adds r3, r0, r6
+ adds r0, r3, 0
+ adds r0, 0x20
+ ldrb r1, [r0]
+ cmp r1, 0x32
+ bne _08014B68
+ ldr r0, _08014B60 @ =gLastUsedAbility
+ strb r1, [r0]
+ ldr r0, _08014B64 @ =gProtectStructs
+ lsls r2, r4, 4
+ adds r2, r0
+ ldrb r1, [r2, 0x1]
+ movs r0, 0x19
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x10
+_08014B50:
+ orrs r0, r1
+ strb r0, [r2, 0x1]
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ b _08014BC2
+ .align 2, 0
+_08014B5C: .4byte gBattleMons
+_08014B60: .4byte gLastUsedAbility
+_08014B64: .4byte gProtectStructs
+_08014B68:
+ ldr r0, _08014BDC @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _08014BB6
+ movs r1, 0x1
+ adds r0, r4, 0
+ eors r0, r1
+ muls r0, r2
+ adds r2, r0, r6
+ ldrh r0, [r3, 0x6]
+ ldrh r1, [r2, 0x6]
+ cmp r0, r1
+ bcs _08014BB0
+ lsls r0, 7
+ ldrh r1, [r2, 0x6]
+ bl __divsi3
+ adds r4, r0, 0
+ ldr r0, _08014BE0 @ =0x02000000
+ ldr r1, _08014BE4 @ =0x00016078
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 1
+ adds r4, r0
+ lsls r4, 24
+ lsrs r4, 24
+ bl Random
+ movs r1, 0xFF
+ ands r1, r0
+ cmp r4, r1
+ bls _08014BB6
+_08014BB0:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+_08014BB6:
+ ldr r1, _08014BE0 @ =0x02000000
+ ldr r0, _08014BE4 @ =0x00016078
+ adds r1, r0
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+_08014BC2:
+ cmp r5, 0
+ beq _08014BD4
+ ldr r1, _08014BE8 @ =gCurrentMoveTurn
+ ldr r0, _08014BEC @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ strb r0, [r1]
+ ldr r1, _08014BF0 @ =gBattleOutcome
+ movs r0, 0x4
+ strb r0, [r1]
+_08014BD4:
+ adds r0, r5, 0
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08014BDC: .4byte gBattleTypeFlags
+_08014BE0: .4byte 0x02000000
+_08014BE4: .4byte 0x00016078
+_08014BE8: .4byte gCurrentMoveTurn
+_08014BEC: .4byte gNoOfAllBanks
+_08014BF0: .4byte gBattleOutcome
+ thumb_func_end sub_8014AB8
+
+ thumb_func_start sub_8014BF4
+sub_8014BF4: @ 8014BF4
+ push {r4-r6,lr}
+ ldr r4, _08014C44 @ =gBankAttacker
+ ldr r1, _08014C48 @ =gTurnOrder
+ ldr r5, _08014C4C @ =gCurrentMoveTurn
+ ldrb r0, [r5]
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r4]
+ ldr r0, _08014C50 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _08014C9C
+ ldr r0, _08014C54 @ =gNoOfAllBanks
+ ldrb r1, [r0]
+ strb r1, [r5]
+ ldr r2, _08014C58 @ =gActiveBank
+ movs r0, 0
+ strb r0, [r2]
+ lsls r1, 24
+ cmp r1, 0
+ beq _08014C88
+ adds r4, r2, 0
+ ldr r6, _08014C5C @ =gActionForBanks
+ ldr r5, _08014C60 @ =gBattleOutcome
+_08014C28:
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _08014C64
+ ldrb r0, [r4]
+ adds r0, r6
+ ldrb r0, [r0]
+ cmp r0, 0x3
+ bne _08014C76
+ ldrb r0, [r5]
+ movs r1, 0x2
+ b _08014C72
+ .align 2, 0
+_08014C44: .4byte gBankAttacker
+_08014C48: .4byte gTurnOrder
+_08014C4C: .4byte gCurrentMoveTurn
+_08014C50: .4byte gBattleTypeFlags
+_08014C54: .4byte gNoOfAllBanks
+_08014C58: .4byte gActiveBank
+_08014C5C: .4byte gActionForBanks
+_08014C60: .4byte gBattleOutcome
+_08014C64:
+ ldrb r0, [r4]
+ adds r0, r6
+ ldrb r0, [r0]
+ cmp r0, 0x3
+ bne _08014C76
+ ldrb r0, [r5]
+ movs r1, 0x1
+_08014C72:
+ orrs r0, r1
+ strb r0, [r5]
+_08014C76:
+ ldrb r0, [r4]
+ adds r0, 0x1
+ strb r0, [r4]
+ ldr r1, _08014C94 @ =gNoOfAllBanks
+ lsls r0, 24
+ lsrs r0, 24
+ ldrb r1, [r1]
+ cmp r0, r1
+ bcc _08014C28
+_08014C88:
+ ldr r0, _08014C98 @ =gBattleOutcome
+ ldrb r1, [r0]
+ movs r2, 0x80
+ orrs r1, r2
+ strb r1, [r0]
+ b _08014D40
+ .align 2, 0
+_08014C94: .4byte gNoOfAllBanks
+_08014C98: .4byte gBattleOutcome
+_08014C9C:
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _08014CF4
+ ldrb r0, [r4]
+ bl sub_8014AB8
+ lsls r0, 24
+ cmp r0, 0
+ bne _08014D40
+ ldr r1, _08014CDC @ =gBattleMons
+ ldrb r2, [r4]
+ movs r0, 0x58
+ muls r2, r0
+ adds r1, 0x50
+ adds r2, r1
+ ldr r0, [r2]
+ ldr r1, _08014CE0 @ =0xfdffffff
+ ands r0, r1
+ str r0, [r2]
+ ldr r1, _08014CE4 @ =gBattleCommunication
+ movs r0, 0x3
+ strb r0, [r1, 0x5]
+ ldr r1, _08014CE8 @ =gBattlescriptCurrInstr
+ ldr r0, _08014CEC @ =gUnknown_081D8E3B
+ str r0, [r1]
+ ldr r1, _08014CF0 @ =gFightStateTracker
+ movs r0, 0xA
+ b _08014D3E
+ .align 2, 0
+_08014CDC: .4byte gBattleMons
+_08014CE0: .4byte 0xfdffffff
+_08014CE4: .4byte gBattleCommunication
+_08014CE8: .4byte gBattlescriptCurrInstr
+_08014CEC: .4byte gUnknown_081D8E3B
+_08014CF0: .4byte gFightStateTracker
+_08014CF4:
+ ldr r1, _08014D1C @ =gBattleMons
+ ldrb r2, [r4]
+ movs r0, 0x58
+ muls r0, r2
+ adds r1, 0x50
+ adds r0, r1
+ ldr r0, [r0]
+ ldr r1, _08014D20 @ =0x0400e000
+ ands r0, r1
+ cmp r0, 0
+ beq _08014D34
+ ldr r1, _08014D24 @ =gBattleCommunication
+ movs r0, 0x4
+ strb r0, [r1, 0x5]
+ ldr r1, _08014D28 @ =gBattlescriptCurrInstr
+ ldr r0, _08014D2C @ =gUnknown_081D8E3B
+ str r0, [r1]
+ ldr r1, _08014D30 @ =gFightStateTracker
+ movs r0, 0xA
+ b _08014D3E
+ .align 2, 0
+_08014D1C: .4byte gBattleMons
+_08014D20: .4byte 0x0400e000
+_08014D24: .4byte gBattleCommunication
+_08014D28: .4byte gBattlescriptCurrInstr
+_08014D2C: .4byte gUnknown_081D8E3B
+_08014D30: .4byte gFightStateTracker
+_08014D34:
+ ldr r0, _08014D48 @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ strb r0, [r5]
+ ldr r1, _08014D4C @ =gBattleOutcome
+ movs r0, 0x6
+_08014D3E:
+ strb r0, [r1]
+_08014D40:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08014D48: .4byte gNoOfAllBanks
+_08014D4C: .4byte gBattleOutcome
+ thumb_func_end sub_8014BF4
+
+ thumb_func_start sub_8014D50
+sub_8014D50: @ 8014D50
+ ldr r2, _08014D78 @ =gBankAttacker
+ ldr r1, _08014D7C @ =gTurnOrder
+ ldr r0, _08014D80 @ =gCurrentMoveTurn
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r2]
+ ldr r0, _08014D84 @ =gUnknown_030042A4
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _08014D88 @ =gUnknown_030042A0
+ strh r1, [r0]
+ ldr r1, _08014D8C @ =gBattlescriptCurrInstr
+ ldr r0, _08014D90 @ =gUnknown_081D9E98
+ ldr r0, [r0]
+ str r0, [r1]
+ ldr r1, _08014D94 @ =gFightStateTracker
+ movs r0, 0xA
+ strb r0, [r1]
+ bx lr
+ .align 2, 0
+_08014D78: .4byte gBankAttacker
+_08014D7C: .4byte gTurnOrder
+_08014D80: .4byte gCurrentMoveTurn
+_08014D84: .4byte gUnknown_030042A4
+_08014D88: .4byte gUnknown_030042A0
+_08014D8C: .4byte gBattlescriptCurrInstr
+_08014D90: .4byte gUnknown_081D9E98
+_08014D94: .4byte gFightStateTracker
+ thumb_func_end sub_8014D50
+
+ thumb_func_start sub_8014D98
+sub_8014D98: @ 8014D98
+ ldr r2, _08014DD0 @ =gBankAttacker
+ ldr r1, _08014DD4 @ =gTurnOrder
+ ldr r0, _08014DD8 @ =gCurrentMoveTurn
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r2]
+ ldr r0, _08014DDC @ =gUnknown_030042A4
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _08014DE0 @ =gUnknown_030042A0
+ strh r1, [r0]
+ ldr r1, _08014DE4 @ =gNumSafariBalls
+ ldrb r0, [r1]
+ subs r0, 0x1
+ strb r0, [r1]
+ ldr r1, _08014DE8 @ =gLastUsedItem
+ movs r0, 0x5
+ strh r0, [r1]
+ ldr r1, _08014DEC @ =gBattlescriptCurrInstr
+ ldr r0, _08014DF0 @ =gUnknown_081D9E48
+ ldr r0, [r0, 0x14]
+ str r0, [r1]
+ ldr r1, _08014DF4 @ =gFightStateTracker
+ movs r0, 0xA
+ strb r0, [r1]
+ bx lr
+ .align 2, 0
+_08014DD0: .4byte gBankAttacker
+_08014DD4: .4byte gTurnOrder
+_08014DD8: .4byte gCurrentMoveTurn
+_08014DDC: .4byte gUnknown_030042A4
+_08014DE0: .4byte gUnknown_030042A0
+_08014DE4: .4byte gNumSafariBalls
+_08014DE8: .4byte gLastUsedItem
+_08014DEC: .4byte gBattlescriptCurrInstr
+_08014DF0: .4byte gUnknown_081D9E48
+_08014DF4: .4byte gFightStateTracker
+ thumb_func_end sub_8014D98
+
+ thumb_func_start sub_8014DF8
+sub_8014DF8: @ 8014DF8
+ push {r4-r6,lr}
+ ldr r3, _08014E68 @ =gBankAttacker
+ ldr r1, _08014E6C @ =gTurnOrder
+ ldr r0, _08014E70 @ =gCurrentMoveTurn
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r3]
+ ldr r0, _08014E74 @ =gUnknown_030042A4
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _08014E78 @ =gUnknown_030042A0
+ strh r1, [r0]
+ ldr r6, _08014E7C @ =gBattleCommunication
+ ldr r2, _08014E80 @ =gBattleBufferB
+ ldrb r0, [r3]
+ lsls r0, 9
+ adds r1, r2, 0x1
+ adds r0, r1
+ ldrb r0, [r0]
+ subs r0, 0x1
+ strb r0, [r6, 0x5]
+ ldr r1, _08014E84 @ =gLastUsedItem
+ ldrb r0, [r3]
+ lsls r0, 9
+ adds r2, 0x2
+ adds r0, r2
+ ldrb r0, [r0]
+ strh r0, [r1]
+ ldr r2, _08014E88 @ =0x02000000
+ ldr r0, _08014E8C @ =0x00016087
+ adds r1, r2, r0
+ ldrb r0, [r1]
+ cmp r0, 0x2
+ bhi _08014E42
+ adds r0, 0x1
+ strb r0, [r1]
+_08014E42:
+ ldr r0, _08014E90 @ =0x00016088
+ adds r4, r2, r0
+ ldrb r5, [r4]
+ adds r3, r5, 0
+ cmp r3, 0x1
+ bls _08014E9C
+ ldr r2, _08014E94 @ =gUnknown_081FA70C
+ ldrb r1, [r1]
+ lsls r0, r1, 1
+ adds r0, r1
+ ldrb r6, [r6, 0x5]
+ adds r0, r6
+ adds r0, r2
+ ldrb r0, [r0]
+ cmp r3, r0
+ bcs _08014E98
+ movs r0, 0x1
+ b _08014E9A
+ .align 2, 0
+_08014E68: .4byte gBankAttacker
+_08014E6C: .4byte gTurnOrder
+_08014E70: .4byte gCurrentMoveTurn
+_08014E74: .4byte gUnknown_030042A4
+_08014E78: .4byte gUnknown_030042A0
+_08014E7C: .4byte gBattleCommunication
+_08014E80: .4byte gBattleBufferB
+_08014E84: .4byte gLastUsedItem
+_08014E88: .4byte 0x02000000
+_08014E8C: .4byte 0x00016087
+_08014E90: .4byte 0x00016088
+_08014E94: .4byte gUnknown_081FA70C
+_08014E98:
+ subs r0, r5, r0
+_08014E9A:
+ strb r0, [r4]
+_08014E9C:
+ ldr r1, _08014EB0 @ =gBattlescriptCurrInstr
+ ldr r0, _08014EB4 @ =gUnknown_081D9E98
+ ldr r0, [r0, 0x8]
+ str r0, [r1]
+ ldr r1, _08014EB8 @ =gFightStateTracker
+ movs r0, 0xA
+ strb r0, [r1]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08014EB0: .4byte gBattlescriptCurrInstr
+_08014EB4: .4byte gUnknown_081D9E98
+_08014EB8: .4byte gFightStateTracker
+ thumb_func_end sub_8014DF8
+
+ thumb_func_start sub_8014EBC
+sub_8014EBC: @ 8014EBC
+ push {r4,r5,lr}
+ ldr r2, _08014F28 @ =gBankAttacker
+ ldr r1, _08014F2C @ =gTurnOrder
+ ldr r0, _08014F30 @ =gCurrentMoveTurn
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r2]
+ ldr r0, _08014F34 @ =gUnknown_030042A4
+ movs r5, 0
+ strh r5, [r0]
+ ldr r0, _08014F38 @ =gUnknown_030042A0
+ strh r5, [r0]
+ ldr r3, _08014F3C @ =0x02000000
+ ldr r0, _08014F40 @ =0x00016089
+ adds r2, r3, r0
+ ldr r1, _08014F44 @ =gUnknown_081FA71B
+ subs r0, 0x3
+ adds r4, r3, r0
+ ldrb r0, [r4]
+ adds r0, r1
+ ldrb r0, [r0]
+ ldrb r1, [r2]
+ adds r0, r1
+ strb r0, [r2]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x14
+ bls _08014EFA
+ movs r0, 0x14
+ strb r0, [r2]
+_08014EFA:
+ ldr r0, _08014F48 @ =0x00016088
+ adds r2, r3, r0
+ ldr r1, _08014F4C @ =gUnknown_081FA71F
+ ldrb r0, [r4]
+ adds r0, r1
+ ldrb r0, [r0]
+ ldrb r1, [r2]
+ adds r0, r1
+ strb r0, [r2]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x14
+ bls _08014F18
+ movs r0, 0x14
+ strb r0, [r2]
+_08014F18:
+ ldrb r0, [r4]
+ cmp r0, 0x2
+ bhi _08014F54
+ adds r0, 0x1
+ strb r0, [r4]
+ ldr r0, _08014F50 @ =gBattleCommunication
+ strb r5, [r0, 0x5]
+ b _08014F5A
+ .align 2, 0
+_08014F28: .4byte gBankAttacker
+_08014F2C: .4byte gTurnOrder
+_08014F30: .4byte gCurrentMoveTurn
+_08014F34: .4byte gUnknown_030042A4
+_08014F38: .4byte gUnknown_030042A0
+_08014F3C: .4byte 0x02000000
+_08014F40: .4byte 0x00016089
+_08014F44: .4byte gUnknown_081FA71B
+_08014F48: .4byte 0x00016088
+_08014F4C: .4byte gUnknown_081FA71F
+_08014F50: .4byte gBattleCommunication
+_08014F54:
+ ldr r1, _08014F70 @ =gBattleCommunication
+ movs r0, 0x1
+ strb r0, [r1, 0x5]
+_08014F5A:
+ ldr r1, _08014F74 @ =gBattlescriptCurrInstr
+ ldr r0, _08014F78 @ =gUnknown_081D9E98
+ ldr r0, [r0, 0x4]
+ str r0, [r1]
+ ldr r1, _08014F7C @ =gFightStateTracker
+ movs r0, 0xA
+ strb r0, [r1]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08014F70: .4byte gBattleCommunication
+_08014F74: .4byte gBattlescriptCurrInstr
+_08014F78: .4byte gUnknown_081D9E98
+_08014F7C: .4byte gFightStateTracker
+ thumb_func_end sub_8014EBC
+
+ thumb_func_start bs8_exit_by_flight
+bs8_exit_by_flight: @ 8014F80
+ push {r4,lr}
+ ldr r2, _08014FA8 @ =gBankAttacker
+ ldr r1, _08014FAC @ =gTurnOrder
+ ldr r4, _08014FB0 @ =gCurrentMoveTurn
+ ldrb r0, [r4]
+ adds r0, r1
+ ldrb r0, [r0]
+ strb r0, [r2]
+ movs r0, 0x11
+ bl PlaySE
+ ldr r0, _08014FB4 @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ strb r0, [r4]
+ ldr r1, _08014FB8 @ =gBattleOutcome
+ movs r0, 0x4
+ strb r0, [r1]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08014FA8: .4byte gBankAttacker
+_08014FAC: .4byte gTurnOrder
+_08014FB0: .4byte gCurrentMoveTurn
+_08014FB4: .4byte gNoOfAllBanks
+_08014FB8: .4byte gBattleOutcome
+ thumb_func_end bs8_exit_by_flight
+
+ thumb_func_start sub_8014FBC
+sub_8014FBC: @ 8014FBC
+ ldr r3, _08015008 @ =gBankAttacker
+ ldr r1, _0801500C @ =gTurnOrder
+ ldr r0, _08015010 @ =gCurrentMoveTurn
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r2, [r0]
+ strb r2, [r3]
+ ldr r0, _08015014 @ =gUnknown_030042A4
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _08015018 @ =gUnknown_030042A0
+ strh r1, [r0]
+ ldr r1, _0801501C @ =gBattleTextBuff1
+ movs r0, 0xFD
+ strb r0, [r1]
+ movs r0, 0x7
+ strb r0, [r1, 0x1]
+ strb r2, [r1, 0x2]
+ ldr r2, _08015020 @ =gBattlePartyID
+ ldrb r0, [r3]
+ lsls r0, 1
+ adds r0, r2
+ ldrh r0, [r0]
+ strb r0, [r1, 0x3]
+ movs r0, 0xFF
+ strb r0, [r1, 0x4]
+ ldr r1, _08015024 @ =gBattlescriptCurrInstr
+ ldr r0, _08015028 @ =gUnknown_081D9E98
+ ldr r0, [r0, 0xC]
+ str r0, [r1]
+ ldr r1, _0801502C @ =gFightStateTracker
+ movs r0, 0xA
+ strb r0, [r1]
+ ldr r1, _08015030 @ =gUnknown_02024A76
+ movs r0, 0xC
+ strb r0, [r1, 0x1]
+ bx lr
+ .align 2, 0
+_08015008: .4byte gBankAttacker
+_0801500C: .4byte gTurnOrder
+_08015010: .4byte gCurrentMoveTurn
+_08015014: .4byte gUnknown_030042A4
+_08015018: .4byte gUnknown_030042A0
+_0801501C: .4byte gBattleTextBuff1
+_08015020: .4byte gBattlePartyID
+_08015024: .4byte gBattlescriptCurrInstr
+_08015028: .4byte gUnknown_081D9E98
+_0801502C: .4byte gFightStateTracker
+_08015030: .4byte gUnknown_02024A76
+ thumb_func_end sub_8014FBC
+
+ thumb_func_start bsB_exit_by_move
+bsB_exit_by_move: @ 8015034
+ push {lr}
+ bl sub_80173A4
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _08015050
+ ldr r0, _08015054 @ =0x02000000
+ ldr r2, _08015058 @ =0x00016059
+ adds r0, r2
+ strb r1, [r0]
+ ldr r1, _0801505C @ =gFightStateTracker
+ movs r0, 0xC
+ strb r0, [r1]
+_08015050:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08015054: .4byte 0x02000000
+_08015058: .4byte 0x00016059
+_0801505C: .4byte gFightStateTracker
+ thumb_func_end bsB_exit_by_move
+
+ thumb_func_start sub_8015060
+sub_8015060: @ 8015060
+ ldr r1, _08015080 @ =gCurrentMoveTurn
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ ldr r3, _08015084 @ =gFightStateTracker
+ ldr r2, _08015088 @ =gUnknown_02024A76
+ ldrb r0, [r1]
+ adds r0, r2
+ ldrb r0, [r0]
+ strb r0, [r3]
+ ldr r2, _0801508C @ =gHitMarker
+ ldr r0, [r2]
+ ldr r1, _08015090 @ =0xf1e892af
+ ands r0, r1
+ str r0, [r2]
+ bx lr
+ .align 2, 0
+_08015080: .4byte gCurrentMoveTurn
+_08015084: .4byte gFightStateTracker
+_08015088: .4byte gUnknown_02024A76
+_0801508C: .4byte gHitMarker
+_08015090: .4byte 0xf1e892af
+ thumb_func_end sub_8015060
+
+ thumb_func_start bsC_8016D70
+bsC_8016D70: @ 8015094
+ push {r4,r5,lr}
+ ldr r1, _0801510C @ =gCurrentMoveTurn
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ ldr r3, _08015110 @ =gFightStateTracker
+ ldr r2, _08015114 @ =gUnknown_02024A76
+ ldrb r0, [r1]
+ adds r0, r2
+ ldrb r0, [r0]
+ strb r0, [r3]
+ bl SpecialStatusesClear
+ ldr r2, _08015118 @ =gHitMarker
+ ldr r0, [r2]
+ ldr r1, _0801511C @ =0xf1e892af
+ ands r0, r1
+ str r0, [r2]
+ ldr r0, _08015120 @ =gBattleMoveDamage
+ movs r4, 0
+ str r4, [r0]
+ ldr r1, _08015124 @ =0x02000000
+ ldr r2, _08015128 @ =0x00016002
+ adds r0, r1, r2
+ strb r4, [r0]
+ ldr r3, _0801512C @ =0x000160a1
+ adds r0, r1, r3
+ strb r4, [r0]
+ ldr r2, _08015130 @ =gMoveHitWith
+ ldr r5, _08015134 @ =gBankAttacker
+ ldrb r0, [r5]
+ lsls r0, 1
+ adds r0, r2
+ movs r2, 0
+ strh r4, [r0]
+ ldr r3, _08015138 @ =gUnknown_02024C44
+ ldrb r0, [r5]
+ lsls r0, 1
+ adds r0, r3
+ strh r4, [r0]
+ ldr r3, _0801513C @ =0x0001601c
+ adds r0, r1, r3
+ strb r2, [r0]
+ ldr r0, _08015140 @ =gDynamicBasePower
+ strh r4, [r0]
+ subs r3, 0x10
+ adds r0, r1, r3
+ strb r2, [r0]
+ ldr r0, _08015144 @ =gBattleCommunication
+ strb r2, [r0, 0x3]
+ strb r2, [r0, 0x4]
+ ldr r3, _08015148 @ =0x00016112
+ adds r0, r1, r3
+ strb r2, [r0]
+ ldr r0, _0801514C @ =0x00017130
+ adds r1, r0
+ strb r2, [r1]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0801510C: .4byte gCurrentMoveTurn
+_08015110: .4byte gFightStateTracker
+_08015114: .4byte gUnknown_02024A76
+_08015118: .4byte gHitMarker
+_0801511C: .4byte 0xf1e892af
+_08015120: .4byte gBattleMoveDamage
+_08015124: .4byte 0x02000000
+_08015128: .4byte 0x00016002
+_0801512C: .4byte 0x000160a1
+_08015130: .4byte gMoveHitWith
+_08015134: .4byte gBankAttacker
+_08015138: .4byte gUnknown_02024C44
+_0801513C: .4byte 0x0001601c
+_08015140: .4byte gDynamicBasePower
+_08015144: .4byte gBattleCommunication
+_08015148: .4byte 0x00016112
+_0801514C: .4byte 0x00017130
+ thumb_func_end bsC_8016D70
+
+ thumb_func_start sub_8015150
+sub_8015150: @ 8015150
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ movs r2, 0
+ cmp r0, 0xA
+ bhi _080151C8
+ lsls r0, 2
+ ldr r1, _08015168 @ =_0801516C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08015168: .4byte _0801516C
+ .align 2, 0
+_0801516C:
+ .4byte _08015198
+ .4byte _080151A0
+ .4byte _080151A8
+ .4byte _080151C4
+ .4byte _080151C8
+ .4byte _080151C4
+ .4byte _080151C8
+ .4byte _080151B0
+ .4byte _080151C8
+ .4byte _080151C8
+ .4byte _080151B4
+_08015198:
+ ldr r0, _0801519C @ =gBankTarget
+ b _080151C6
+ .align 2, 0
+_0801519C: .4byte gBankTarget
+_080151A0:
+ ldr r0, _080151A4 @ =gBankAttacker
+ b _080151C6
+ .align 2, 0
+_080151A4: .4byte gBankAttacker
+_080151A8:
+ ldr r0, _080151AC @ =gEffectBank
+ b _080151C6
+ .align 2, 0
+_080151AC: .4byte gEffectBank
+_080151B0:
+ movs r2, 0
+ b _080151C8
+_080151B4:
+ ldr r0, _080151BC @ =0x02000000
+ ldr r1, _080151C0 @ =0x00016003
+ adds r0, r1
+ b _080151C6
+ .align 2, 0
+_080151BC: .4byte 0x02000000
+_080151C0: .4byte 0x00016003
+_080151C4:
+ ldr r0, _080151D0 @ =gBank1
+_080151C6:
+ ldrb r2, [r0]
+_080151C8:
+ adds r0, r2, 0
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080151D0: .4byte gBank1
+ thumb_func_end sub_8015150
+
+ thumb_func_start sub_80151D4
+sub_80151D4: @ 80151D4
+ push {r4-r7,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r5, r1, 24
+ lsls r2, 16
+ lsrs r2, 16
+ ldr r1, _08015204 @ =gBattleMons
+ movs r4, 0x58
+ muls r0, r4
+ adds r0, r1
+ adds r0, 0x20
+ ldrb r0, [r0]
+ mov r12, r1
+ cmp r0, 0x2E
+ bne _08015286
+ movs r3, 0
+ adds r0, r5, 0
+ muls r0, r4
+ adds r1, 0xC
+ adds r1, r0, r1
+ b _08015210
+ .align 2, 0
+_08015204: .4byte gBattleMons
+_08015208:
+ adds r1, 0x2
+ adds r3, 0x1
+ cmp r3, 0x3
+ bgt _08015216
+_08015210:
+ ldrh r0, [r1]
+ cmp r0, r2
+ bne _08015208
+_08015216:
+ cmp r3, 0x4
+ beq _08015286
+ movs r7, 0x58
+ adds r2, r5, 0
+ muls r2, r7
+ adds r0, r3, r2
+ mov r6, r12
+ adds r6, 0x24
+ adds r1, r0, r6
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _08015232
+ subs r0, 0x1
+ strb r0, [r1]
+_08015232:
+ mov r0, r12
+ adds r0, 0x50
+ adds r0, r2, r0
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 14
+ ands r0, r1
+ cmp r0, 0
+ bne _08015286
+ ldr r1, _08015290 @ =gDisableStructs
+ lsls r0, r5, 3
+ subs r0, r5
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0, 0x18]
+ lsrs r1, 4
+ ldr r2, _08015294 @ =gBitTable
+ lsls r0, r3, 2
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ bne _08015286
+ ldr r4, _08015298 @ =gActiveBank
+ strb r5, [r4]
+ adds r1, r3, 0
+ adds r1, 0x9
+ lsls r1, 24
+ lsrs r1, 24
+ ldrb r0, [r4]
+ muls r0, r7
+ adds r0, r6
+ adds r0, r3
+ str r0, [sp]
+ movs r0, 0
+ movs r2, 0
+ movs r3, 0x1
+ bl EmitSetAttributes
+ ldrb r0, [r4]
+ bl MarkBufferBankForExecution
+_08015286:
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08015290: .4byte gDisableStructs
+_08015294: .4byte gBitTable
+_08015298: .4byte gActiveBank
+ thumb_func_end sub_80151D4
+
+ thumb_func_start sub_801529C
+sub_801529C: @ 801529C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r0, 0x4
+ mov r8, r0
+ adds r0, r5, 0
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ movs r4, 0
+ ldr r0, _080153BC @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ bge _08015344
+ ldr r1, _080153C0 @ =gBattleMons
+ movs r0, 0x58
+ adds r7, r5, 0
+ muls r7, r0
+ adds r1, 0xC
+ mov r10, r1
+_080152D2:
+ lsls r0, r4, 24
+ lsrs r0, 24
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ adds r6, r4, 0x1
+ cmp r9, r0
+ beq _0801533A
+ ldr r0, _080153C0 @ =gBattleMons
+ movs r3, 0x58
+ adds r1, r4, 0
+ muls r1, r3
+ adds r1, r0
+ adds r1, 0x20
+ ldrb r1, [r1]
+ adds r4, r0, 0
+ cmp r1, 0x2E
+ bne _0801533A
+ movs r2, 0
+ adds r0, r5, 0
+ muls r0, r3
+ adds r1, r4, 0
+ adds r1, 0xC
+ adds r0, r1
+ ldrh r0, [r0]
+ movs r1, 0x8F
+ lsls r1, 1
+ cmp r0, r1
+ beq _08015322
+ adds r3, r1, 0
+ mov r0, r10
+ adds r1, r7, r0
+_08015314:
+ adds r1, 0x2
+ adds r2, 0x1
+ cmp r2, 0x3
+ bgt _08015322
+ ldrh r0, [r1]
+ cmp r0, r3
+ bne _08015314
+_08015322:
+ cmp r2, 0x4
+ beq _0801533A
+ mov r8, r2
+ adds r1, r2, r7
+ adds r0, r4, 0
+ adds r0, 0x24
+ adds r1, r0
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _0801533A
+ subs r0, 0x1
+ strb r0, [r1]
+_0801533A:
+ adds r4, r6, 0
+ ldr r0, _080153BC @ =gNoOfAllBanks
+ ldrb r0, [r0]
+ cmp r4, r0
+ blt _080152D2
+_08015344:
+ mov r1, r8
+ cmp r1, 0x4
+ beq _080153AC
+ ldr r6, _080153C0 @ =gBattleMons
+ movs r3, 0x58
+ adds r0, r5, 0
+ muls r0, r3
+ adds r1, r6, 0
+ adds r1, 0x50
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 14
+ ands r0, r1
+ cmp r0, 0
+ bne _080153AC
+ ldr r1, _080153C4 @ =gDisableStructs
+ lsls r0, r5, 3
+ subs r0, r5
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0, 0x18]
+ lsrs r1, 4
+ ldr r2, _080153C8 @ =gBitTable
+ mov r4, r8
+ lsls r0, r4, 2
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ bne _080153AC
+ ldr r4, _080153CC @ =gActiveBank
+ strb r5, [r4]
+ mov r1, r8
+ adds r1, 0x9
+ lsls r1, 24
+ lsrs r1, 24
+ ldrb r0, [r4]
+ muls r0, r3
+ adds r2, r6, 0
+ adds r2, 0x24
+ adds r0, r2
+ add r0, r8
+ str r0, [sp]
+ movs r0, 0
+ movs r2, 0
+ movs r3, 0x1
+ bl EmitSetAttributes
+ ldrb r0, [r4]
+ bl MarkBufferBankForExecution
+_080153AC:
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080153BC: .4byte gNoOfAllBanks
+_080153C0: .4byte gBattleMons
+_080153C4: .4byte gDisableStructs
+_080153C8: .4byte gBitTable
+_080153CC: .4byte gActiveBank
+ thumb_func_end sub_801529C
+
+ thumb_func_start sub_80153D0
+sub_80153D0: @ 80153D0
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r3, r0, 24
+ movs r6, 0x4
+ movs r1, 0
+ ldr r0, _080154C8 @ =gNoOfAllBanks
+ mov r8, r0
+ ldrb r0, [r0]
+ cmp r1, r0
+ bge _08015452
+ ldr r7, _080154CC @ =gBattleMons
+ movs r2, 0x58
+ mov r12, r2
+ mov r5, r12
+ muls r5, r3
+ adds r0, r7, 0
+ adds r0, 0xC
+ adds r2, r5, r0
+ mov r10, r2
+ mov r9, r5
+_08015402:
+ mov r0, r12
+ muls r0, r1
+ adds r0, r7
+ adds r0, 0x20
+ ldrb r0, [r0]
+ adds r4, r1, 0x1
+ cmp r0, 0x2E
+ bne _08015448
+ cmp r1, r3
+ beq _08015448
+ movs r2, 0
+ mov r1, r10
+ ldrh r0, [r1]
+ cmp r0, 0xC3
+ beq _08015432
+ ldr r1, _080154D0 @ =gUnknown_02024A8C
+ add r1, r9
+_08015424:
+ adds r1, 0x2
+ adds r2, 0x1
+ cmp r2, 0x3
+ bgt _08015432
+ ldrh r0, [r1]
+ cmp r0, 0xC3
+ bne _08015424
+_08015432:
+ cmp r2, 0x4
+ beq _08015448
+ adds r6, r2, 0
+ adds r0, r6, r5
+ ldr r2, _080154D4 @ =gUnknown_02024AA4
+ adds r1, r0, r2
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _08015448
+ subs r0, 0x1
+ strb r0, [r1]
+_08015448:
+ adds r1, r4, 0
+ mov r0, r8
+ ldrb r0, [r0]
+ cmp r1, r0
+ blt _08015402
+_08015452:
+ cmp r6, 0x4
+ beq _080154B6
+ ldr r7, _080154CC @ =gBattleMons
+ movs r5, 0x58
+ adds r0, r3, 0
+ muls r0, r5
+ adds r1, r7, 0
+ adds r1, 0x50
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0x80
+ lsls r1, 14
+ ands r0, r1
+ cmp r0, 0
+ bne _080154B6
+ ldr r1, _080154D8 @ =gDisableStructs
+ lsls r0, r3, 3
+ subs r0, r3
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0, 0x18]
+ lsrs r1, 4
+ ldr r2, _080154DC @ =gBitTable
+ lsls r0, r6, 2
+ adds r0, r2
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ bne _080154B6
+ ldr r4, _080154E0 @ =gActiveBank
+ strb r3, [r4]
+ adds r1, r6, 0
+ adds r1, 0x9
+ lsls r1, 24
+ lsrs r1, 24
+ ldrb r0, [r4]
+ muls r0, r5
+ adds r2, r7, 0
+ adds r2, 0x24
+ adds r0, r2
+ adds r0, r6
+ str r0, [sp]
+ movs r0, 0
+ movs r2, 0
+ movs r3, 0x1
+ bl EmitSetAttributes
+ ldrb r0, [r4]
+ bl MarkBufferBankForExecution
+_080154B6:
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080154C8: .4byte gNoOfAllBanks
+_080154CC: .4byte gBattleMons
+_080154D0: .4byte gUnknown_02024A8C
+_080154D4: .4byte gUnknown_02024AA4
+_080154D8: .4byte gDisableStructs
+_080154DC: .4byte gBitTable
+_080154E0: .4byte gActiveBank
+ thumb_func_end sub_80153D0
+
+ thumb_func_start unref_sub_80154E4
+unref_sub_80154E4: @ 80154E4
+ push {r4,r5,lr}
+ ldr r0, _08015514 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _08015524
+ movs r2, 0
+ ldr r4, _08015518 @ =gNoOfAllBanks
+ ldrb r0, [r4]
+ cmp r2, r0
+ bge _08015542
+ ldr r3, _0801551C @ =gBattleExecBuffer
+ ldr r5, _08015520 @ =gBitTable
+_08015500:
+ ldm r5!, {r1}
+ lsls r1, 28
+ ldr r0, [r3]
+ orrs r0, r1
+ str r0, [r3]
+ adds r2, 0x1
+ ldrb r0, [r4]
+ cmp r2, r0
+ blt _08015500
+ b _08015542
+ .align 2, 0
+_08015514: .4byte gBattleTypeFlags
+_08015518: .4byte gNoOfAllBanks
+_0801551C: .4byte gBattleExecBuffer
+_08015520: .4byte gBitTable
+_08015524:
+ movs r2, 0
+ ldr r4, _08015548 @ =gNoOfAllBanks
+ ldrb r0, [r4]
+ cmp r2, r0
+ bge _08015542
+ ldr r3, _0801554C @ =gBattleExecBuffer
+ ldr r5, _08015550 @ =gBitTable
+_08015532:
+ ldr r0, [r3]
+ ldm r5!, {r1}
+ orrs r0, r1
+ str r0, [r3]
+ adds r2, 0x1
+ ldrb r0, [r4]
+ cmp r2, r0
+ blt _08015532
+_08015542:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08015548: .4byte gNoOfAllBanks
+_0801554C: .4byte gBattleExecBuffer
+_08015550: .4byte gBitTable
+ thumb_func_end unref_sub_80154E4
+
+ thumb_func_start MarkBufferBankForExecution
+MarkBufferBankForExecution: @ 8015554
+ push {lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r0, _0801557C @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _08015588
+ ldr r2, _08015580 @ =gBattleExecBuffer
+ ldr r1, _08015584 @ =gBitTable
+ lsls r0, r3, 2
+ adds r0, r1
+ ldr r1, [r0]
+ lsls r1, 28
+ ldr r0, [r2]
+ orrs r0, r1
+ str r0, [r2]
+ b _08015598
+ .align 2, 0
+_0801557C: .4byte gBattleTypeFlags
+_08015580: .4byte gBattleExecBuffer
+_08015584: .4byte gBitTable
+_08015588:
+ ldr r2, _0801559C @ =gBattleExecBuffer
+ ldr r1, _080155A0 @ =gBitTable
+ lsls r0, r3, 2
+ adds r0, r1
+ ldr r1, [r2]
+ ldr r0, [r0]
+ orrs r1, r0
+ str r1, [r2]
+_08015598:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0801559C: .4byte gBattleExecBuffer
+_080155A0: .4byte gBitTable
+ thumb_func_end MarkBufferBankForExecution
+
+ thumb_func_start sub_80155A4
+sub_80155A4: @ 80155A4
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ movs r4, 0
+ ldr r5, _080155B8 @ =gBattleExecBuffer
+ ldr r1, _080155BC @ =gBitTable
+ lsls r0, r7, 2
+ adds r6, r0, r1
+ b _080155CE
+ .align 2, 0
+_080155B8: .4byte gBattleExecBuffer
+_080155BC: .4byte gBitTable
+_080155C0:
+ lsls r0, r4, 2
+ ldr r1, [r6]
+ lsls r1, r0
+ ldr r0, [r5]
+ orrs r0, r1
+ str r0, [r5]
+ adds r4, 0x1
+_080155CE:
+ bl GetLinkPlayerCount
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ blt _080155C0
+ ldr r2, _080155F0 @ =gBattleExecBuffer
+ movs r1, 0x80
+ lsls r1, 21
+ lsls r1, r7
+ ldr r0, [r2]
+ bics r0, r1
+ str r0, [r2]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080155F0: .4byte gBattleExecBuffer
+ thumb_func_end sub_80155A4
+
+ thumb_func_start CancelMultiTurnMoves
+CancelMultiTurnMoves: @ 80155F4
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _08015644 @ =gBattleMons
+ movs r2, 0x58
+ adds r3, r0, 0
+ muls r3, r2
+ adds r1, 0x50
+ adds r3, r1
+ ldr r1, [r3]
+ ldr r2, _08015648 @ =0xffffefff
+ ands r1, r2
+ ldr r2, _0801564C @ =0xfffff3ff
+ ands r1, r2
+ movs r2, 0x71
+ negs r2, r2
+ ands r1, r2
+ ldr r2, _08015650 @ =0xfffffcff
+ ands r1, r2
+ str r1, [r3]
+ ldr r1, _08015654 @ =gStatuses3
+ lsls r2, r0, 2
+ adds r2, r1
+ ldr r1, [r2]
+ ldr r3, _08015658 @ =0xfffbff3f
+ ands r1, r3
+ str r1, [r2]
+ ldr r2, _0801565C @ =gDisableStructs
+ lsls r1, r0, 3
+ subs r1, r0
+ lsls r1, 2
+ adds r1, r2
+ ldrb r2, [r1, 0x11]
+ movs r0, 0x10
+ negs r0, r0
+ ands r0, r2
+ strb r0, [r1, 0x11]
+ movs r0, 0
+ strb r0, [r1, 0x10]
+ bx lr
+ .align 2, 0
+_08015644: .4byte gBattleMons
+_08015648: .4byte 0xffffefff
+_0801564C: .4byte 0xfffff3ff
+_08015650: .4byte 0xfffffcff
+_08015654: .4byte gStatuses3
+_08015658: .4byte 0xfffbff3f
+_0801565C: .4byte gDisableStructs
+ thumb_func_end CancelMultiTurnMoves
+
+ thumb_func_start sub_8015660
+sub_8015660: @ 8015660
+ push {lr}
+ lsls r0, 24
+ ldr r1, _080156AC @ =gProtectStructs
+ lsrs r0, 20
+ adds r1, r0, r1
+ ldrb r0, [r1]
+ lsrs r0, 7
+ cmp r0, 0
+ bne _080156A6
+ ldrb r2, [r1, 0x1]
+ lsls r0, r2, 30
+ cmp r0, 0
+ blt _080156A6
+ lsls r0, r2, 26
+ cmp r0, 0
+ blt _080156A6
+ lsls r0, r2, 25
+ cmp r0, 0
+ blt _080156A6
+ lsrs r0, r2, 7
+ cmp r0, 0
+ bne _080156A6
+ ldrb r1, [r1, 0x2]
+ lsls r0, r1, 31
+ cmp r0, 0
+ bne _080156A6
+ lsls r0, r1, 30
+ cmp r0, 0
+ blt _080156A6
+ lsls r0, r1, 29
+ cmp r0, 0
+ blt _080156A6
+ lsls r0, r2, 31
+ cmp r0, 0
+ beq _080156B0
+_080156A6:
+ movs r0, 0x1
+ b _080156B2
+ .align 2, 0
+_080156AC: .4byte gProtectStructs
+_080156B0:
+ movs r0, 0
+_080156B2:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8015660
+
+ thumb_func_start PrepareStringBattle
+PrepareStringBattle: @ 80156B8
+ push {r4,lr}
+ adds r2, r0, 0
+ lsls r2, 16
+ lsrs r2, 16
+ ldr r4, _080156D8 @ =gActiveBank
+ strb r1, [r4]
+ movs r0, 0
+ adds r1, r2, 0
+ bl EmitPrintString
+ ldrb r0, [r4]
+ bl MarkBufferBankForExecution
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080156D8: .4byte gActiveBank
+ thumb_func_end PrepareStringBattle
+
+ thumb_func_start sub_80156DC
+sub_80156DC: @ 80156DC
+ push {r4-r6,lr}
+ movs r3, 0
+ ldr r0, _08015730 @ =gSentPokesToOpponent
+ strb r3, [r0]
+ strb r3, [r0, 0x1]
+ movs r1, 0
+ ldr r0, _08015734 @ =gNoOfAllBanks
+ ldrb r2, [r0]
+ adds r6, r0, 0
+ cmp r1, r2
+ bge _0801570A
+ ldr r5, _08015738 @ =gBitTable
+ adds r4, r2, 0
+ ldr r2, _0801573C @ =gBattlePartyID
+_080156F8:
+ ldrh r0, [r2]
+ lsls r0, 2
+ adds r0, r5
+ ldr r0, [r0]
+ orrs r3, r0
+ adds r2, 0x4
+ adds r1, 0x2
+ cmp r1, r4
+ blt _080156F8
+_0801570A:
+ movs r1, 0x1
+ adds r2, r6, 0
+ ldrb r0, [r2]
+ cmp r1, r0
+ bge _0801572A
+ ldr r5, _08015730 @ =gSentPokesToOpponent
+ movs r4, 0x2
+_08015718:
+ adds r0, r1, 0
+ ands r0, r4
+ asrs r0, 1
+ adds r0, r5
+ strb r3, [r0]
+ adds r1, 0x2
+ ldrb r0, [r2]
+ cmp r1, r0
+ blt _08015718
+_0801572A:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08015730: .4byte gSentPokesToOpponent
+_08015734: .4byte gNoOfAllBanks
+_08015738: .4byte gBitTable
+_0801573C: .4byte gBattlePartyID
+ thumb_func_end sub_80156DC
+
+ thumb_func_start sub_8015740
+sub_8015740: @ 8015740
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r4, 0
+ adds r0, r5, 0
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080157A4
+ movs r0, 0x2
+ ands r0, r5
+ lsls r0, 24
+ lsrs r0, 25
+ mov r12, r0
+ ldr r1, _080157B0 @ =gSentPokesToOpponent
+ adds r0, r1
+ strb r4, [r0]
+ adds r5, r4, 0
+ ldr r0, _080157B4 @ =gNoOfAllBanks
+ ldrb r2, [r0]
+ mov r8, r1
+ cmp r4, r2
+ bge _0801579E
+ ldr r0, _080157B8 @ =gAbsentBankFlags
+ ldrb r7, [r0]
+ ldr r1, _080157BC @ =gBitTable
+ adds r6, r2, 0
+ ldr r3, _080157C0 @ =gBattlePartyID
+ adds r2, r1, 0
+_08015782:
+ ldr r0, [r2]
+ ands r0, r7
+ cmp r0, 0
+ bne _08015794
+ ldrh r0, [r3]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ orrs r4, r0
+_08015794:
+ adds r3, 0x4
+ adds r2, 0x8
+ adds r5, 0x2
+ cmp r5, r6
+ blt _08015782
+_0801579E:
+ mov r0, r12
+ add r0, r8
+ strb r4, [r0]
+_080157A4:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080157B0: .4byte gSentPokesToOpponent
+_080157B4: .4byte gNoOfAllBanks
+_080157B8: .4byte gAbsentBankFlags
+_080157BC: .4byte gBitTable
+_080157C0: .4byte gBattlePartyID
+ thumb_func_end sub_8015740
+
+ thumb_func_start sub_80157C4
+sub_80157C4: @ 80157C4
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080157E0
+ adds r0, r4, 0
+ bl sub_8015740
+ b _08015816
+_080157E0:
+ movs r3, 0x1
+ ldr r5, _0801581C @ =gNoOfAllBanks
+ ldrb r0, [r5]
+ cmp r3, r0
+ bge _08015816
+ ldr r0, _08015820 @ =gSentPokesToOpponent
+ mov r12, r0
+ movs r7, 0x2
+ ldr r6, _08015824 @ =gBitTable
+ ldr r1, _08015828 @ =gBattlePartyID
+ lsls r0, r4, 1
+ adds r4, r0, r1
+_080157F8:
+ adds r2, r3, 0
+ ands r2, r7
+ asrs r2, 1
+ add r2, r12
+ ldrh r0, [r4]
+ lsls r0, 2
+ adds r0, r6
+ ldr r0, [r0]
+ ldrb r1, [r2]
+ orrs r0, r1
+ strb r0, [r2]
+ adds r3, 0x1
+ ldrb r0, [r5]
+ cmp r3, r0
+ blt _080157F8
+_08015816:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0801581C: .4byte gNoOfAllBanks
+_08015820: .4byte gSentPokesToOpponent
+_08015824: .4byte gBitTable
+_08015828: .4byte gBattlePartyID
+ thumb_func_end sub_80157C4
+
+ .align 2, 0 @ Don't pad with nop.